From 53942e91e6fc9a2a7504c5c9e5098858d0502f10 Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Tue, 3 May 2011 13:07:19 +0200 Subject: [PATCH] [openwrt] include the ap51 flash utility and a make flash target --- mote/v2/openwrt/install.sh | 6 +++++- ...vel.patch => 820-fix_crond_loglevel.patch} | 0 .../patches/920-add-make-flash-option.patch | 20 ++++++++++++++++++ mote/v2/tools/ap51-flash | Bin 0 -> 26172 bytes 4 files changed, 25 insertions(+), 1 deletion(-) rename mote/v2/openwrt/patches/{920-fix_crond_loglevel.patch => 820-fix_crond_loglevel.patch} (100%) create mode 100644 mote/v2/openwrt/patches/920-add-make-flash-option.patch create mode 100755 mote/v2/tools/ap51-flash diff --git a/mote/v2/openwrt/install.sh b/mote/v2/openwrt/install.sh index 9c2ff52..03df483 100755 --- a/mote/v2/openwrt/install.sh +++ b/mote/v2/openwrt/install.sh @@ -46,17 +46,21 @@ cp patches/420-tune_spi_bitbanging_for_avr.patch $BACKFIRE_PATH/target/linux/ath # backport loglevel fix to busybox v1.15.3-2 # see: https://bugs.busybox.net/show_bug.cgi?id=681 -cp patches/920-fix_crond_loglevel.patch $BACKFIRE_PATH/package/busybox/patches +cp patches/820-fix_crond_loglevel.patch $BACKFIRE_PATH/package/busybox/patches # patch the default OpenWRT Lua package rm $BACKFIRE_PATH/package/lua/patches/400-luaposix_5.1.4-embedded.patch rm $BACKFIRE_PATH/package/lua/patches/500-eglibc_config.patch cp patches/600-lua-tablecreate.patch $BACKFIRE_PATH/package/lua/patches +# copy flash utility to the tools dir +cp ../tools/ap51-flash $BACKFIRE_PATH/tools + # patch files of the OpenWRT build system cd $BACKFIRE_PATH patch -p0 < $REPO_PATH/patches/900-disable_console.patch patch -p0 < $REPO_PATH/patches/910-set_ttyS0_baud_to_115200.patch +patch -p0 < $REPO_PATH/patches/920-add-make-flash-option.patch # we don't need rdate, relying on ntpclient instead rm $BACKFIRE_PATH/package/base-files/files/etc/hotplug.d/iface/40-rdate diff --git a/mote/v2/openwrt/patches/920-fix_crond_loglevel.patch b/mote/v2/openwrt/patches/820-fix_crond_loglevel.patch similarity index 100% rename from mote/v2/openwrt/patches/920-fix_crond_loglevel.patch rename to mote/v2/openwrt/patches/820-fix_crond_loglevel.patch diff --git a/mote/v2/openwrt/patches/920-add-make-flash-option.patch b/mote/v2/openwrt/patches/920-add-make-flash-option.patch new file mode 100644 index 0000000..d53642c --- /dev/null +++ b/mote/v2/openwrt/patches/920-add-make-flash-option.patch @@ -0,0 +1,20 @@ +--- Makefile (revision 26802) ++++ Makefile (working copy) +@@ -90,6 +90,17 @@ + package/symlinks-clean: + $(SCRIPT_DIR)/feeds uninstall -a + ++# flash the target with Sven Ola's ap51-flash tool ++SUDO=sudo ++AP51=tools/ap51-flash ++ETH=eth0 ++BINDIR=bin/atheros ++ROOTFS=$(BINDIR)/openwrt-atheros-root.squashfs ++KERNEL=$(BINDIR)/openwrt-atheros-vmlinux.lzma ++ ++flash: ++ $(SUDO) $(AP51) $(ETH) $(ROOTFS) $(KERNEL) ++ + .PHONY: clean dirclean prereq prepare world package/symlinks package/symlinks-install package/symlinks-clean + + endif diff --git a/mote/v2/tools/ap51-flash b/mote/v2/tools/ap51-flash new file mode 100755 index 0000000000000000000000000000000000000000..5ab47be495ca1dd638ddde0ba2f42e70994364b0 GIT binary patch literal 26172 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 VP7j1jzrMJG