all = []
section = []
end_addr = None
+offset = 0
for line in image.split():
#print "DEBUG:", line
length = int(line[1:3], 16)
- addr = int(line[3:7], 16)
+ addr = int(line[3:7], 16) + offset
rectype = int(line[7:9], 16)
data = []
if len(line) > 11:
start_addr = addr
section += data
end_addr = addr + length
+ elif rectype == 0x02:
+ offset = int(line[9:9+4], 16) << 4
elif rectype == 0x01:
all.append((start_addr, section))
section = []
}
bool verifyImage(ex_flash_addr_t startAddr) {
- uint16_t addr;
+ uint32_t addr;
uint8_t numPgs;
uint8_t i;
+
if (!verifyBlock(startAddr + offsetof(DelugeIdent,crc),
startAddr, offsetof(DelugeIdent,crc)))
return FALSE;
for ( i = 0; i < numPgs; i++ ) {
if (!verifyBlock(startAddr + i*sizeof(uint16_t),
startAddr + addr, DELUGE_BYTES_PER_PAGE)) {
- if (i == 0)
- while (1)
- call Leds.flash(2);
return FALSE;
}
addr += DELUGE_BYTES_PER_PAGE;
error_t programImage(ex_flash_addr_t startAddr) {
uint8_t buf[TOSBOOT_INT_PAGE_SIZE];
- uint16_t pageAddr, newPageAddr;
+ uint32_t pageAddr, newPageAddr;
in_flash_addr_t intAddr;
in_flash_addr_t secLength;
ex_flash_addr_t curAddr;