3 Copyright 2002 Broadcom Corp. All Rights Reserved.
5 This program is free software; you can distribute it and/or modify it
6 under the terms of the GNU General Public License (Version 2) as
7 published by the Free Software Foundation.
9 This program is distributed in the hope it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 You should have received a copy of the GNU General Public License along
15 with this program; if not, write to the Free Software Foundation, Inc.,
16 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
19 //**************************************************************************************
20 // File Name : bcmTag.h
22 // Description: add tag with validation system to the firmware image file to be uploaded
25 // Created : 02/28/2002 seanl
26 //**************************************************************************************
32 #define BCM_SIG_1 "U.S. Robotics"
33 #define BCM_SIG_2 "ver. 304L0107" // was "firmware version 2.0" now it is split 6 char out for chip id.
35 #define BCM_TAG_VER "6"
36 #define BCM_TAG_VER_LAST "26"
38 // file tag (head) structure all is in clear text except validationTokens (crc, md5, sha1, etc). Total: 128 unsigned chars
42 #define SIG_LEN_2 14 // Original second SIG = 20 is now devided into 14 for SIG_LEN_2 and 6 for CHIP_ID
45 #define ADDRESS_LEN 12
48 #define BOARD_ID_LEN 16
49 #define RESERVED_LEN (TAG_LEN - TAG_VER_LEN - SIG_LEN - SIG_LEN_2 - CHIP_ID_LEN - BOARD_ID_LEN - \
50 (4*IMAGE_LEN) - (3*ADDRESS_LEN) - (3*FLAG_LEN) - (2*TOKEN_LEN))
53 // TAG for downloadable image (kernel plus file system)
54 typedef struct _FILE_TAG
56 unsigned char tagVersion[TAG_VER_LEN]; // tag version. Will be 2 here.
57 unsigned char signiture_1[SIG_LEN]; // text line for company info
58 unsigned char signiture_2[SIG_LEN_2]; // additional info (can be version number)
59 unsigned char chipId[CHIP_ID_LEN]; // chip id
60 unsigned char boardId[BOARD_ID_LEN]; // board id
61 unsigned char bigEndian[FLAG_LEN]; // if = 1 - big, = 0 - little endia of the host
62 unsigned char totalImageLen[IMAGE_LEN]; // the sum of all the following length
63 unsigned char cfeAddress[ADDRESS_LEN]; // if non zero, cfe starting address
64 unsigned char cfeLen[IMAGE_LEN]; // if non zero, cfe size in clear ASCII text.
65 unsigned char rootfsAddress[ADDRESS_LEN]; // if non zero, filesystem starting address
66 unsigned char rootfsLen[IMAGE_LEN]; // if non zero, filesystem size in clear ASCII text.
67 unsigned char kernelAddress[ADDRESS_LEN]; // if non zero, kernel starting address
68 unsigned char kernelLen[IMAGE_LEN]; // if non zero, kernel size in clear ASCII text.
69 unsigned char imageSequence[FLAG_LEN * 2]; // incrments everytime an image is flashed
70 unsigned char reserved[RESERVED_LEN]; // reserved for later use
71 unsigned char imageValidationToken[TOKEN_LEN];// image validation token - can be crc, md5, sha; for
72 // now will be 4 unsigned char crc
73 unsigned char tagValidationToken[TOKEN_LEN]; // validation token for tag(from signiture_1 to end of // mageValidationToken)
74 } FILE_TAG, *PFILE_TAG;
76 #define CRC32_INIT_VALUE 0xffffffff /* Initial CRC32 checksum value */
79 // only included if for bcmTag.exe program
82 static unsigned long Crc32_table[256] = {
83 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
84 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
85 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
86 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
87 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
88 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
89 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
90 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
91 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
92 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
93 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
94 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
95 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
96 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
97 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
98 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
99 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
100 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
101 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
102 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
103 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
104 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
105 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
106 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
107 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
108 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
109 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
110 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
111 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
112 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
113 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
114 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
115 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
116 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
117 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
118 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
119 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
120 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
121 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
122 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
123 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
124 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
125 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
126 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
127 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
128 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
129 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
130 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
131 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
132 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
133 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
134 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
135 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
136 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
137 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
138 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
139 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
140 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
141 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
142 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
143 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
144 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
145 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
146 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D