Changeset 20610 for trunk


Ignore:
Timestamp:
2010-03-30T18:17:38+02:00 (6 years ago)
Author:
ralph
Message:

[uboot-lantiq] httpd failsafe - add image check and flash access

Location:
trunk/package/uboot-lantiq
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/uboot-lantiq/Makefile

    r20603 r20610  
    8585                bs=64k conv=sync 
    8686ifeq ($(CONFIG_UBOOT_RAMBOOT),y) 
    87         if [ -e $(UBOOT_CONFIG).conf ]; then \ 
     87        if [ -e $(UBOOT_DDR_CONFIG) ]; then \ 
    8888                perl ./gct \ 
    8989                        $(UBOOT_DDR_CONFIG) \ 
  • trunk/package/uboot-lantiq/files/board/infineon/easy50712/danube.c

    r20603 r20610  
    341341 
    342342#if defined(CONFIG_CMD_HTTPD) 
    343 static int image_info (ulong addr) 
    344 { 
    345    void *hdr = (void *)addr; 
    346  
    347    printf ("\n## Checking Image at %08lx ...\n", addr); 
    348  
    349    switch (genimg_get_format (hdr)) { 
    350    case IMAGE_FORMAT_LEGACY: 
    351       puts ("   Legacy image found\n"); 
    352       if (!image_check_magic (hdr)) { 
    353          puts ("   Bad Magic Number\n"); 
    354          return 1; 
    355       } 
    356  
    357       if (!image_check_hcrc (hdr)) { 
    358          puts ("   Bad Header Checksum\n"); 
    359          return 1; 
    360       } 
    361  
    362       image_print_contents (hdr); 
    363  
    364       puts ("   Verifying Checksum ... "); 
    365       if (!image_check_dcrc (hdr)) { 
    366          puts ("   Bad Data CRC\n"); 
    367          return 1; 
    368       } 
    369       puts ("OK\n"); 
    370       return 0; 
    371 #if defined(CONFIG_FIT) 
    372    case IMAGE_FORMAT_FIT: 
    373       puts ("   FIT image found\n"); 
    374  
    375       if (!fit_check_format (hdr)) { 
    376          puts ("Bad FIT image format!\n"); 
    377          return 1; 
    378       } 
    379  
    380       fit_print_contents (hdr); 
    381  
    382       if (!fit_all_image_check_hashes (hdr)) { 
    383          puts ("Bad hash in FIT image!\n"); 
    384          return 1; 
    385       } 
    386  
    387       return 0; 
    388 #endif 
    389    default: 
    390       puts ("Unknown image format!\n"); 
    391       break; 
    392    } 
    393  
    394    return 1; 
    395 } 
    396  
    397343int do_http_upgrade(const unsigned char *data, const ulong size) 
    398344{ 
     345        char buf[128]; 
     346 
     347        if(getenv ("ram_addr") == NULL) 
     348                return -1; 
     349        if(getenv ("kernel_addr") == NULL) 
     350                return -1; 
    399351        /* check the image */ 
    400         if(image_info(data)) { 
     352        if(run_command("imi ${ram_addr}", 0) < 0) { 
    401353                return -1; 
    402354        } 
    403355        /* write the image to the flash */ 
    404356        puts("http ugrade ...\n"); 
    405         return 0; 
     357        sprintf(buf, "era ${kernel_addr} +0x%x; cp.b ${ram_addr} ${kernel_addr} 0x%x", size, size); 
     358        return run_command(buf, 0); 
    406359} 
    407360 
     
    414367                break; 
    415368                case HTTP_PROGRESS_TIMEOUT: 
     369                puts("."); 
    416370                break; 
    417371                case HTTP_PROGRESS_UPLOAD_READY: 
  • trunk/package/uboot-lantiq/files/board/infineon/easy50812/ar9.c

    r20606 r20610  
    4949#define SAMURAI_ID_REG0                 0xA0 
    5050#define SAMURAI_ID_REG1                 0xA1 
    51 #define ID_TANTOS                               0x2599 
    52  
    53 #define RGMII_MODE                              0 
    54 #define MII_MODE                                1 
     51#define ID_TANTOS                       0x2599 
     52 
     53#define RGMII_MODE                      0 
     54#define MII_MODE                        1 
    5555#define REV_MII_MODE                    2 
    5656#define RED_MII_MODE_IC                 3               /*Input clock */ 
     
    566566 
    567567#if defined(CONFIG_CMD_HTTPD) 
    568  
    569 static int image_info (ulong addr) 
    570 { 
    571    void *hdr = (void *)addr; 
    572  
    573    printf ("\n## Checking Image at %08lx ...\n", addr); 
    574  
    575    switch (genimg_get_format (hdr)) { 
    576    case IMAGE_FORMAT_LEGACY: 
    577       puts ("   Legacy image found\n"); 
    578       if (!image_check_magic (hdr)) { 
    579          puts ("   Bad Magic Number\n"); 
    580          return 1; 
    581       } 
    582  
    583       if (!image_check_hcrc (hdr)) { 
    584          puts ("   Bad Header Checksum\n"); 
    585          return 1; 
    586       } 
    587  
    588       image_print_contents (hdr); 
    589  
    590       puts ("   Verifying Checksum ... "); 
    591       if (!image_check_dcrc (hdr)) { 
    592          puts ("   Bad Data CRC\n"); 
    593          return 1; 
    594       } 
    595       puts ("OK\n"); 
    596       return 0; 
    597 #if defined(CONFIG_FIT) 
    598    case IMAGE_FORMAT_FIT: 
    599       puts ("   FIT image found\n"); 
    600  
    601       if (!fit_check_format (hdr)) { 
    602          puts ("Bad FIT image format!\n"); 
    603          return 1; 
    604       } 
    605  
    606       fit_print_contents (hdr); 
    607  
    608       if (!fit_all_image_check_hashes (hdr)) { 
    609          puts ("Bad hash in FIT image!\n"); 
    610          return 1; 
    611       } 
    612  
    613       return 0; 
    614 #endif 
    615    default: 
    616       puts ("Unknown image format!\n"); 
    617       break; 
    618    } 
    619  
    620    return 1; 
    621 } 
    622  
    623568int do_http_upgrade(const unsigned char *data, const ulong size) 
    624569{ 
     570        char buf[128]; 
     571 
     572        if(getenv ("ram_addr") == NULL) 
     573                return -1; 
     574        if(getenv ("kernel_addr") == NULL) 
     575                return -1; 
    625576        /* check the image */ 
    626         if(image_info(data)) { 
     577        if(run_command("imi ${ram_addr}", 0) < 0) { 
    627578                return -1; 
    628579        } 
    629580        /* write the image to the flash */ 
    630581        puts("http ugrade ...\n"); 
    631         return 0; 
     582        sprintf(buf, "era ${kernel_addr} +0x%x; cp.b ${ram_addr} ${kernel_addr} 0x%x", size, size); 
     583        return run_command(buf, 0); 
    632584} 
    633585 
     
    640592                break; 
    641593                case HTTP_PROGRESS_TIMEOUT: 
     594                puts("."); 
    642595                break; 
    643596                case HTTP_PROGRESS_UPLOAD_READY: 
  • trunk/package/uboot-lantiq/patches/300-httpd.patch

    r20604 r20610  
    166166        NetRxPacketLen = len; 
    167167        et = (Ethernet_t *)inpkt; 
    168 @@ -1952,3 +1972,161 @@ ushort getenv_VLAN(char *var) 
     168@@ -1952,3 +1972,162 @@ ushort getenv_VLAN(char *var) 
    169169 { 
    170170        return (string_to_VLAN(getenv(var))); 
     
    250250+       } 
    251251+ 
     252+restart: 
     253+ 
    252254+       eth_halt(); 
    253255+#ifdef CONFIG_NET_MULTI 
     
    259261+       } 
    260262+ 
    261 +restart: 
    262263+#ifdef CONFIG_NET_MULTI 
    263264+       memcpy (NetOurEther, eth_get_dev()->enetaddr, 6); 
Note: See TracChangeset for help on using the changeset viewer.