This is the beginning of the ROM:
Code:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 5A 26 8D 01 00 8D 01 00 C0 01 00 00 66 C1 00 66 Z&......À...fÁ.f
00000010 C1 B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 91 Á°§æ^.....i296A‘
00000020 01 26 69 23 00 69 23 00 4D 03 00 00 41 C1 00 41 .&i#.i#.M...AÁ.A
00000030 C1 B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 79 Á°§æ^.....i296Ay
00000040 02 26 31 0E 00 31 0E 00 B6 26 00 22 20 C1 22 20 .&1..1..¶&." Á"
00000050 C1 B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 6E Á°§æ^.....i296An
00000060 03 21 E4 B5 00 AF FA 00 E7 34 00 00 00 C0 FF FF .!äµ.¯ú.ç4...Àÿÿ
00000070 FF B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 24 ÿ°§æ^.....i296A$
00000080 04 21 85 00 00 01 04 00 CB EA 00 00 FC C0 FF FF .!….....Ëê..üÀÿÿ
00000090 FF B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 03 ÿ°§æ^.....i296A.
000000A0 05 11 53 4E 00 C9 6E 00 50 EB 00 00 00 23 FF FF ..SN.Én.Pë...#ÿÿ
000000B0 FF B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 2F ÿ°§æ^.....i296A/
000000C0 06 11 86 23 00 C5 2C 00 A3 39 01 00 80 23 FF FF ..†#.Å,.£9..€#ÿÿ
000000D0 FF B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 14 ÿ°§æ^.....i296A.
000000E0 09 90 2F 00 00 2F 00 00 D0 FF 01 D0 7F 23 FF FF ../../..Ðÿ.Ð.#ÿÿ
000000F0 FF B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 1C ÿ°§æ^.....i296A.
00000100 0B 50 26 00 00 26 00 00 29 5D 01 06 F4 29 FF FF .P&..&..)]..ô)ÿÿ
00000110 FF B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 34 ÿ°§æ^.....i296A4
00000120 0C 50 06 02 00 06 02 00 4F 5D 01 2C F4 29 FF FF .P......O].,ô)ÿÿ
00000130 FF B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 45 ÿ°§æ^.....i296AE
00000140 07 13 AD 9F 00 09 DD 00 55 5F 01 00 00 22 C4 86 ..Ÿ..Ý.U_..."Ć
00000150 22 B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 75 "°§æ^.....i296Au
There are 11 sections. Each section has a 32-byte header (LDSC).
For example, here is the first LDSC:
Code:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 5A 26 8D 01 00 8D 01 00 C0 01 00 00 66 C1 00 66 Z&......À...fÁ.f
00000010 C1 B0 A7 E6 5E 00 00 00 00 00 69 32 39 36 41 91 Á°§æ^.....i296A‘
The structure of each LDSC appears to be as follows:
Code:
Byte # Value Description
-----------------------------------------------------------------------------------
00 0x5A ID --> 5A indicates boot from flash ??
01 0x26 attribute ? (bit 0 indicates whether section is compressed ?)
02-04 0x00018D size of section
05-07 0x00018D size of decompressed section ?
08-0A 0x0001C0 address of section in ROM
0B-0D 0xC16600 load address of section in RAM ?
0E-10 0xC16600 second RAM address ???
11-14 0x5EE6A7B0 date/time stamp ???
15-19 zeros ?
1A-1E "i296A" MCU ID ?
1F 0x91 checksum of bytes 0x00 - 0x1E
Here is the first section in ROM:
Code:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000001C0 D1 80 E6 EE 00 02 E0 15 7E D9 F6 F5 B4 F0 7F D9
000001D0 E6 F5 20 00 F6 F5 40 C2 E6 08 00 FC CC 00 E6 00
........
00000330 F3 F6 52 C2 E1 07 46 F2 FF FF 3D 03 47 F6 FF 00
00000340 2D 02 EC F3 EC F2 DB 00 CC 00 01 00 C4
If we add all the bytes from address 0x1C0 to 0x34B, the result is 0xC4. This corresponds to the value at address 0x34C. Therefore the last byte is the checksum byte.
I use the checksum calculator within HxD (freeware hex editor).