Changeset 11550


Ignore:
Timestamp:
2008-06-22T07:41:37+02:00 (8 years ago)
Author:
juhosg
Message:

[tools] firmware-utils: ZyXEL firmware tool improvements

Location:
trunk/tools/firmware-utils/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/firmware-utils/src/mkzynfw.c

    r11096 r11550  
    9797        uint32_t code_start;    /* code start address */ 
    9898        uint32_t romio_offs;    /* offset of the firmware within the flash */ 
     99        uint32_t bootext_size;  /* maximum size of bootext block */ 
    99100}; 
    100101 
     
    122123#define ATHEROS_CODE_START      0x80e00000 
    123124 
    124 #define BOARD(n, d, v, m, fb, fs, cs, fo) { \ 
    125         .name = (n), .desc=(d), \ 
    126         .vendor = (v), .model = (m), \ 
    127         .flash_base = (fb), .flash_size = (fs)<<20, \ 
    128         .code_start = (cs), .romio_offs = (fo) \ 
     125#define BOARD(n, d, v, m, fb, fs, cs, fo) {             \ 
     126        .name = (n), .desc=(d),                         \ 
     127        .vendor = (v), .model = (m),                    \ 
     128        .flash_base = (fb), .flash_size = (fs)<<20,     \ 
     129        .code_start = (cs), .romio_offs = (fo),         \ 
     130        .bootext_size = BOOTEXT_DEF_SIZE                \ 
    129131        } 
    130132 
     
    174176                .code_start     = 0x94008000, 
    175177                .romio_offs     = 0x20000, 
     178                .bootext_size   = BOOTEXT_DEF_SIZE, 
    176179        }, 
    177180 
     
    206209                .code_start     = 0x94014000, 
    207210                .romio_offs     = 0x40000, 
     211                .bootext_size   = BOOTEXT_DEF_SIZE, 
    208212        }, 
    209213 
     
    702706        hdr.flags = ROMBIN_FLAG_OCSUM; 
    703707 
     708        offset = board->romio_offs; 
     709 
    704710        res = write_out_header(outfile, &hdr); 
    705711        if (res) 
    706712                return res; 
    707713 
    708         offset = sizeof(hdr); 
     714        offset += sizeof(hdr); 
    709715 
    710716        csum_init(&css); 
     
    714720 
    715721        offset += bootext_block->file_size; 
    716  
    717         padlen = ALIGN(offset,MMAP_ALIGN) - offset; 
     722        if (offset > (board->romio_offs + board->bootext_size)) { 
     723                ERR("bootext file '%s' is too big", bootext_block->file_name); 
     724                return -1; 
     725        } 
     726 
     727        padlen = ALIGN(offset, MMAP_ALIGN) - offset; 
    718728        res = write_out_padding(outfile, padlen, 0xFF, &css); 
    719729        if (res) 
     
    729739 
    730740        offset += MMAP_DATA_SIZE; 
    731         hdr.osize = offset - sizeof(hdr); 
     741        hdr.osize = offset - sizeof(hdr) - board->romio_offs; 
    732742        hdr.ocsum = csum_get(&css); 
    733743 
    734         for (i=0; i < num_blocks; i++) { 
     744        if ((offset - board->romio_offs) < board->bootext_size) { 
     745                padlen = board->romio_offs + board->bootext_size - offset; 
     746                res = write_out_padding(outfile, padlen, 0xFF, NULL); 
     747                if (res) 
     748                        return res; 
     749                offset += padlen; 
     750 
     751                DBG(2, "bootext end at %08x", offset); 
     752        } 
     753 
     754        for (i = 0; i < num_blocks; i++) { 
    735755                block = &blocks[i]; 
    736756 
     
    738758                        continue; 
    739759 
    740                 padlen = ALIGN(offset,block->align) - offset; 
     760                padlen = ALIGN(offset, block->align) - offset; 
    741761                res = write_out_padding(outfile, padlen, 0xFF, NULL); 
    742762                if (res) 
     
    10011021        } 
    10021022 
    1003  
    10041023        if (process_blocks() != 0) { 
    10051024                goto out; 
  • trunk/tools/firmware-utils/src/zynos.h

    r11096 r11550  
    2121#define BOOTBASE_MAC_LEN        6 
    2222#define BOOTBASE_FEAT_LEN       22 
     23 
     24#define BOOTEXT_DEF_SIZE        0x18000 
    2325 
    2426struct zyn_bootbase_info { 
Note: See TracChangeset for help on using the changeset viewer.