From ed42a8a32363683414d3aeba3bbbd242831b6adb Mon Sep 17 00:00:00 2001 From: ralph Date: Tue, 30 Mar 2010 13:49:42 +0000 Subject: adding httpd - failsafe patch flash write routine is not functional yet add configuration (board & dram) git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20603 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/uboot-lantiq/Makefile | 18 +++- .../files/board/infineon/easy50712/danube.c | 102 +++++++++++++++++++++ .../uboot-lantiq/files/include/configs/easy50712.h | 2 + 3 files changed, 120 insertions(+), 2 deletions(-) (limited to 'package') diff --git a/package/uboot-lantiq/Makefile b/package/uboot-lantiq/Makefile index 3ffe8846e..48f468316 100644 --- a/package/uboot-lantiq/Makefile +++ b/package/uboot-lantiq/Makefile @@ -35,12 +35,20 @@ define Build/Prepare find $(PKG_BUILD_DIR) -name .svn | $(XARGS) rm -rf endef -UBOOT_CONFIG:=easy50712_DDR166M +UBOOT_CONFIG:=$(call qstrip,$(CONFIG_UBOOT_CONFIG)) +UBOOT_DDR_CONFIG:=$(call qstrip,$(CONFIG_UBOOT_DDR_CONFIG)) + UBOOT_MAKE_OPTS:= \ CROSS_COMPILE=$(TARGET_CROSS) \ ENDIANNESS= \ V=1 +define Package/uboot-lantiq/config + menu "configuration" + source "$(SOURCE)/Config.in" + endmenu +endef + define Build/Configure/Target $(MAKE) -s -C $(PKG_BUILD_DIR) \ $(UBOOT_MAKE_OPTS) \ @@ -50,7 +58,9 @@ endef define Build/Configure $(call Build/Configure/Target,$(UBOOT_CONFIG)) +ifeq ($(CONFIG_UBOOT_RAMBOOT),y) $(call Build/Configure/Target,$(UBOOT_CONFIG)_ramboot) +endif endef define Build/Compile/Target @@ -62,7 +72,9 @@ endef define Build/Compile $(call Build/Compile/Target,$(UBOOT_CONFIG)) +ifeq ($(CONFIG_UBOOT_RAMBOOT),y) $(call Build/Compile/Target,$(UBOOT_CONFIG)_ramboot) +endif endef define Package/uboot-lantiq/install @@ -71,12 +83,14 @@ define Package/uboot-lantiq/install if=$(PKG_BUILD_DIR)/$(UBOOT_CONFIG)/u-boot.bin \ of=$(1)/$(UBOOT_CONFIG)/u-boot.bin \ bs=64k conv=sync +ifeq ($(CONFIG_UBOOT_RAMBOOT),y) if [ -e $(UBOOT_CONFIG).conf ]; then \ perl ./gct \ - $(UBOOT_CONFIG).conf \ + $(UBOOT_DDR_CONFIG) \ $(PKG_BUILD_DIR)/$(UBOOT_CONFIG)_ramboot/u-boot.srec \ $(1)/$(UBOOT_CONFIG)/u-boot.asc; \ fi +endif endef $(eval $(call BuildPackage,uboot-lantiq)) diff --git a/package/uboot-lantiq/files/board/infineon/easy50712/danube.c b/package/uboot-lantiq/files/board/infineon/easy50712/danube.c index 473436692..f9b2b7626 100644 --- a/package/uboot-lantiq/files/board/infineon/easy50712/danube.c +++ b/package/uboot-lantiq/files/board/infineon/easy50712/danube.c @@ -32,6 +32,9 @@ #include #include #include +#if defined(CONFIG_CMD_HTTPD) +#include +#endif extern ulong ifx_get_ddr_hz(void); extern ulong ifx_get_cpuclk(void); @@ -336,3 +339,102 @@ int board_eth_init(bd_t *bis) return 0; } +#if defined(CONFIG_CMD_HTTPD) +static int image_info (ulong addr) +{ + void *hdr = (void *)addr; + + printf ("\n## Checking Image at %08lx ...\n", addr); + + switch (genimg_get_format (hdr)) { + case IMAGE_FORMAT_LEGACY: + puts (" Legacy image found\n"); + if (!image_check_magic (hdr)) { + puts (" Bad Magic Number\n"); + return 1; + } + + if (!image_check_hcrc (hdr)) { + puts (" Bad Header Checksum\n"); + return 1; + } + + image_print_contents (hdr); + + puts (" Verifying Checksum ... "); + if (!image_check_dcrc (hdr)) { + puts (" Bad Data CRC\n"); + return 1; + } + puts ("OK\n"); + return 0; +#if defined(CONFIG_FIT) + case IMAGE_FORMAT_FIT: + puts (" FIT image found\n"); + + if (!fit_check_format (hdr)) { + puts ("Bad FIT image format!\n"); + return 1; + } + + fit_print_contents (hdr); + + if (!fit_all_image_check_hashes (hdr)) { + puts ("Bad hash in FIT image!\n"); + return 1; + } + + return 0; +#endif + default: + puts ("Unknown image format!\n"); + break; + } + + return 1; +} + +int do_http_upgrade(const unsigned char *data, const ulong size) +{ + /* check the image */ + if(image_info(data)) { + return -1; + } + /* write the image to the flash */ + puts("http ugrade ...\n"); + return 0; +} + +int do_http_progress(const int state) +{ + /* toggle LED's here */ + switch(state) { + case HTTP_PROGRESS_START: + puts("http start\n"); + break; + case HTTP_PROGRESS_TIMEOUT: + break; + case HTTP_PROGRESS_UPLOAD_READY: + puts("http upload ready\n"); + break; + case HTTP_PROGRESS_UGRADE_READY: + puts("http ugrade ready\n"); + break; + case HTTP_PROGRESS_UGRADE_FAILED: + puts("http ugrade failed\n"); + break; + } + return 0; +} + +unsigned long do_http_tmp_address(void) +{ + char *s = getenv ("ram_addr"); + if (s) { + ulong tmp = simple_strtoul (s, NULL, 16); + return tmp; + } + return 0 /*0x80a00000*/; +} + +#endif diff --git a/package/uboot-lantiq/files/include/configs/easy50712.h b/package/uboot-lantiq/files/include/configs/easy50712.h index e061b831d..8eeb6c06a 100644 --- a/package/uboot-lantiq/files/include/configs/easy50712.h +++ b/package/uboot-lantiq/files/include/configs/easy50712.h @@ -112,4 +112,6 @@ # define CONFIG_EBU_BUSCON0 0x0001D7FF #endif +#define CONFIG_CMD_HTTPD /* enable upgrade via HTTPD */ + #endif /* __CONFIG_H */ -- cgit v1.2.3