FreeCalypso > hg > freecalypso-reveng
comparison pirelli/flash2-chksum @ 215:d69f7512e3c1
Pirelli: documented and verified the checksum scheme used for the factory block
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 25 Dec 2016 23:48:16 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
214:6b40617d00e6 | 215:d69f7512e3c1 |
---|---|
1 Pirelli's flash usage scheme allocates 3 "magic" areas in the flash2 bank: | |
2 | |
3 offset 0x480000 thru 0x7DFFFF: staging area for high-level fw updates | |
4 offset 0x7E0000 thru 0x7EFFFF: fw update control/state structure | |
5 offset 0x7F0000 thru 0x7FFFFF: factory record with IMEI and RF calibration | |
6 | |
7 The image or record stored in each of these "magic" areas ends with the | |
8 following 12-byte signature and checksum structure: | |
9 | |
10 Offset[1] Type[2] Contains | |
11 xxFFF4 32-bit word 0x12345678 | |
12 xxFFF8 32-bit word Length of the fw update image or factory or | |
13 fw update state record | |
14 xxFFFC 16-bit word Checksum 1 | |
15 xxFFFE 16-bit word Checksum 2 | |
16 | |
17 [1] The offset is from the beginning of the flash partition in question, the | |
18 xx digits will be 35 in the case of the 0x360000 byte fw update staging | |
19 area partition or 00 in the case of the two 64 KiB sectors. | |
20 | |
21 [2] All 16-bit and 32-bit values are in little-endian byte order. | |
22 | |
23 Checksum computation | |
24 ==================== | |
25 | |
26 The checksum is computed in two stages. First all 16-bit words in the main | |
27 body of the image (using the image length from the xxFFF8 word) are added | |
28 together as a ripple-carry sum, and this 16-bit sum is written into the 0xFFFC | |
29 word. Then the 5 16-bit words from xxFFF4 through xxFFFC (inclusive) are added | |
30 together (again as a ripple-carry sum), and this sum is written into the xxFFFE | |
31 word. Remember the little-endian byte order throughout! | |
32 | |
33 The ../miscprog/pircksum2.c program verifies this checksum computation scheme. |