Contiki 2.6
|
00001 /** @file hal/micro/cortexm3/token-manufacturing.h 00002 * @brief Definitions for manufacturing tokens. 00003 * 00004 * This file should not be included directly. It is accessed by the other 00005 * token files. 00006 * 00007 * Please see hal/micro/token.h for a full explanation of the tokens. 00008 * 00009 * The tokens listed below are the manufacturing tokens. 00010 * 00011 * Since this file contains both the typedefs and the token defs, there are 00012 * two \#defines used to select which one is needed when this file is included. 00013 * \#define DEFINETYPES is used to select the type definitions and 00014 * \#define DEFINETOKENS is used to select the token definitions. 00015 * Refer to token.h and token.c to see how these are used. 00016 * 00017 * <!--(C) COPYRIGHT 2010 STMicroelectronics. All rights reserved. --> 00018 */ 00019 00020 /** 00021 * @name Convenience Macros 00022 * @brief The following convenience macros are used to simplify the definition 00023 * process for commonly specified parameters to the basic TOKEN_DEF macro. 00024 * Please see hal/micro/token.h for a more complete explanation. 00025 *@{ 00026 */ 00027 #define DEFINE_MFG_TOKEN(name, type, address, ...) \ 00028 TOKEN_NEXT_ADDRESS(name,(address)) \ 00029 TOKEN_MFG(name, CREATOR_##name, 0, 0, type, 1, __VA_ARGS__) 00030 /** @} END Convenience Macros */ 00031 00032 ////////////////////////////////////////////////////////////////////////////// 00033 // MANUFACTURING DATA 00034 // *the addresses of these tokens must not change* 00035 00036 00037 // MANUFACTURING CREATORS 00038 // The creator codes are here in one list instead of next to their token 00039 // definitions so comparision of the codes is easier. The only requirement 00040 // on these creator definitions is that they all must be unique. A favorite 00041 // method for picking creator codes is to use two ASCII characters in order 00042 // to make the codes more memorable. Also, the msb of Stack and Manufacturing 00043 // token creator codes is always 1, while the msb of Application token creator 00044 // codes is always 0. This distinction allows Application tokens 00045 // to freely use the lower 15 bits for creator codes without the risk of 00046 // duplicating a Stack or Manufacturing token creator code. 00047 //--- Fixed Information Block --- 00048 #define CREATOR_MFG_CHIP_DATA 0xC344 // msb+'C'+'D' 00049 #define CREATOR_MFG_PART_DATA 0xF064 // msb+'p'+'d' 00050 #define CREATOR_MFG_TESTER_DATA 0xF464 // msb+'t'+'d' 00051 #define CREATOR_MFG_ST_EUI_64 0xE545 // msb+'e'+'E' 00052 #define CREATOR_MFG_ANALOG_TRIM_NORMAL 0xF46E // msb+'t'+'n' 00053 #define CREATOR_MFG_ANALOG_TRIM_BOOST 0xF442 // msb+'t'+'B' 00054 #define CREATOR_MFG_ANALOG_TRIM_BOTH 0xF462 // msb+'t'+'b' 00055 #define CREATOR_MFG_REG_TRIM 0xF274 // msb+'r'+'t' 00056 #define CREATOR_MFG_1V8_REG_VOLTAGE 0xF276 // msb+'r'+'v' 00057 #define CREATOR_MFG_VREF_VOLTAGE 0xF676 // msb+'v'+'v' 00058 #define CREATOR_MFG_TEMP_CAL 0xF463 // msb+'t'+'c' 00059 #define CREATOR_MFG_FIB_VERSION 0xFF09 00060 #define CREATOR_MFG_FIB_CHECKSUM 0xE663 // msb+'f'+'c' 00061 #define CREATOR_MFG_FIB_OBS 0xE66F // msb+'f'+'o' 00062 //--- Customer Information Block --- 00063 #define CREATOR_MFG_CIB_OBS 0xE36F // msb+'c'+'o' 00064 #define CREATOR_MFG_CUSTOM_VERSION 0xC356 00065 #define CREATOR_MFG_CUSTOM_EUI_64 0xE345 00066 #define CREATOR_MFG_STRING 0xED73 00067 #define CREATOR_MFG_BOARD_NAME 0xC24E // msb+'B'+'N' (Board Name) 00068 #define CREATOR_MFG_EUI_64 0xB634 00069 #define CREATOR_MFG_MANUF_ID 0xC944 // msb+'I'+'D' (Id) 00070 #define CREATOR_MFG_PHY_CONFIG 0xD043 // msb+'P'+'C' (Phy Config) 00071 #define CREATOR_MFG_BOOTLOAD_AES_KEY 0xC24B // msb+'B'+'K' (Bootloader Key) 00072 #define CREATOR_MFG_EZSP_STORAGE 0xCD53 00073 #define CREATOR_MFG_ASH_CONFIG 0xC143 // msb+'A'+'C' (ASH Config) 00074 #define CREATOR_MFG_CBKE_DATA 0xC342 // msb+'C'+'B' (CBke) 00075 #define CREATOR_MFG_INSTALLATION_CODE 0xC943 // msb+'I'+'C' (Installation Code) 00076 #define CREATOR_MFG_OSC24M_BIAS_TRIM 0xB254 // msb+'2'+'T' (2[4mHz] Trim) 00077 00078 // The master defines indicating the verions number these definitions work with. 00079 #define CURRENT_MFG_TOKEN_VERSION 0x01FE //MSB is version, LSB is complement 00080 #define CURRENT_MFG_CUSTOM_VERSION 0x01FE //MSB is version, LSB is complement 00081 00082 00083 #ifndef __MFG_TYPES_DEFINED__ 00084 #define __MFG_TYPES_DEFINED__ 00085 //--- Fixed Information Block --- 00086 typedef int8u tokTypeMfgChipData[24]; 00087 typedef int8u tokTypeMfgPartData[6]; 00088 typedef int8u tokTypeMfgTesterData[6]; 00089 typedef int8u tokTypeMfgStEui64[8]; 00090 typedef struct { 00091 int16u iffilterL; 00092 int16u lna; 00093 int16u ifamp; 00094 int16u rxadcH; 00095 int16u prescalar; 00096 int16u phdet; 00097 int16u vco; 00098 int16u loopfilter; 00099 int16u pa; 00100 int16u iqmixer; 00101 } tokTypeMfgAnalogueTrim; 00102 typedef struct { 00103 int16u iffilterH; 00104 int16u biasmaster; 00105 int16u moddac; 00106 int16u auxadc; 00107 int16u caladc; 00108 } tokTypeMfgAnalogueTrimBoth; 00109 typedef struct { 00110 int8u regTrim1V2; 00111 int8u regTrim1V8; 00112 } tokTypeMfgRegTrim; 00113 typedef int16u tokTypeMfgRegVoltage1V8; 00114 typedef int16u tokTypeMfgAdcVrefVoltage; 00115 typedef int16u tokTypeMfgTempCal; 00116 typedef int16u tokTypeMfgFibVersion; 00117 typedef int16u tokTypeMfgFibChecksum; 00118 typedef struct { 00119 int16u ob2; 00120 int16u ob3; 00121 int16u ob0; 00122 int16u ob1; 00123 } tokTypeMfgFibObs; 00124 //--- Customer Information Block --- 00125 typedef struct { 00126 int16u ob0; 00127 int16u ob1; 00128 int16u ob2; 00129 int16u ob3; 00130 int16u ob4; 00131 int16u ob5; 00132 int16u ob6; 00133 int16u ob7; 00134 } tokTypeMfgCibObs; 00135 typedef int16u tokTypeMfgCustomVersion; 00136 typedef int8u tokTypeMfgCustomEui64[8]; 00137 typedef int8u tokTypeMfgString[16]; 00138 typedef int8u tokTypeMfgBoardName[16]; 00139 typedef int16u tokTypeMfgManufId; 00140 typedef int16u tokTypeMfgPhyConfig; 00141 typedef int8u tokTypeMfgBootloadAesKey[16]; 00142 typedef int8u tokTypeMfgEui64[8]; 00143 typedef int8u tokTypeMfgEzspStorage[8]; 00144 typedef int16u tokTypeMfgAshConfig; 00145 typedef struct { 00146 int8u certificate[48]; 00147 int8u caPublicKey[22]; 00148 int8u privateKey[21]; 00149 // The bottom flag bit is 1 for uninitialized, 0 for initialized. 00150 // The other flag bits should be set to 0 at initialization. 00151 int8u flags; 00152 } tokTypeMfgCbkeData; 00153 typedef struct { 00154 // The bottom flag bit is 1 for uninitialized, 0 for initialized. 00155 // Bits 1 and 2 give the size of the value string: 00156 // 0 = 6 bytes, 1 = 8 bytes, 2 = 12 bytes, 3 = 16 bytes. 00157 // The other flag bits should be set to 0 at initialization. 00158 // Special flags support. Due to a bug in the way some customers 00159 // had programmed the flags field, we will also examine the upper 00160 // bits 9 and 10 for the size field. Those bits are also reserved. 00161 int16u flags; 00162 int8u value[16]; 00163 int16u crc; 00164 } tokTypeMfgInstallationCode; 00165 typedef int16u tokTypeMfgOsc24mBiasTrim; 00166 #endif //__MFG_TYPES_DEFINED__ 00167 00168 00169 #ifdef DEFINETOKENS 00170 //The Manufacturing tokens need to be stored at well-defined locations. 00171 //None of these addresses should ever change without extremely great care. 00172 //All locations are OR'ed with DATA_BIG_INFO_BASE to make a full 32bit address. 00173 //--- Fixed Information Block --- 00174 // FIB Bootloader 0x0000 //1918 bytes 00175 #define MFG_CHIP_DATA_LOCATION 0x077E // 24 bytes 00176 #define MFG_PART_DATA_LOCATION 0x0796 // 6 bytes 00177 #define MFG_TESTER_DATA_LOCATION 0x079C // 6 bytes 00178 #define MFG_ST_EUI_64_LOCATION 0x07A2 // 8 bytes 00179 #define MFG_ANALOG_TRIM_NORMAL_LOCATION 0x07AA // 20 bytes 00180 #define MFG_ANALOG_TRIM_BOOST_LOCATION 0x07BE // 20 bytes 00181 #define MFG_ANALOG_TRIM_BOTH_LOCATION 0x07D2 // 10 bytes 00182 #define MFG_REG_TRIM_LOCATION 0x07DC // 2 bytes 00183 #define MFG_1V8_REG_VOLTAGE_LOCATION 0x07DE // 2 bytes 00184 #define MFG_VREF_VOLTAGE_LOCATION 0x07E0 // 2 bytes 00185 #define MFG_TEMP_CAL_LOCATION 0x07E2 // 2 bytes 00186 //reserved 0x07E4 // 16 bytes 00187 #define MFG_FIB_VERSION_LOCATION 0x07F4 // 2 bytes 00188 #define MFG_FIB_CHECKSUM_LOCATION 0x07F6 // 2 bytes 00189 #define MFG_FIB_OBS_LOCATION 0x07F8 // 8 bytes 00190 //--- Customer Information Block --- 00191 #define MFG_CIB_OBS_LOCATION 0x0800 // 16 bytes 00192 #define MFG_CUSTOM_VERSION_LOCATION 0x0810 // 2 bytes 00193 #define MFG_CUSTOM_EUI_64_LOCATION 0x0812 // 8 bytes 00194 #define MFG_STRING_LOCATION 0x081A // 16 bytes 00195 #define MFG_BOARD_NAME_LOCATION 0x082A // 16 bytes 00196 #define MFG_MANUF_ID_LOCATION 0x083A // 2 bytes 00197 #define MFG_PHY_CONFIG_LOCATION 0x083C // 2 bytes 00198 #define MFG_BOOTLOAD_AES_KEY_LOCATION 0x083E // 16 bytes 00199 #define MFG_EZSP_STORAGE_LOCATION 0x084E // 8 bytes 00200 #define MFG_ASH_CONFIG_LOCATION 0x0856 // 40 bytes 00201 #define MFG_CBKE_DATA_LOCATION 0x087E // 92 bytes 00202 #define MFG_INSTALLATION_CODE_LOCATION 0x08DA // 20 bytes 00203 #define MFG_OSC24M_BIAS_TRIM_LOCATION 0x08EE // 2 bytes 00204 // unused 0x08F0 //1808 bytes 00205 //--- Virtual MFG Tokens --- 00206 #define MFG_EUI_64_LOCATION 0x8000 // Special Trigger - see token.c 00207 00208 // Define the size of indexed token array 00209 #define MFG_ASH_CONFIG_ARRAY_SIZE 20 00210 00211 #ifndef TOKEN_NEXT_ADDRESS 00212 #define TOKEN_NEXT_ADDRESS(region, address) 00213 #endif 00214 00215 00216 // NOTE: because of their special handling, the manufacturing tokens 00217 // cannot use the convenience macros in their definitions, so the full 00218 // definitions are present here. 00219 //--- Fixed Information Block --- 00220 TOKEN_NEXT_ADDRESS(MFG_CHIP_DATA_ADDR,MFG_CHIP_DATA_LOCATION) 00221 TOKEN_MFG(MFG_CHIP_DATA, CREATOR_MFG_CHIP_DATA, 00222 0, 0, tokTypeMfgChipData, 1, 00223 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 00224 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 00225 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) 00226 00227 TOKEN_NEXT_ADDRESS(MFG_PART_DATA_ADDR,MFG_PART_DATA_LOCATION) 00228 TOKEN_MFG(MFG_PART_DATA, CREATOR_MFG_PART_DATA, 00229 0, 0, tokTypeMfgPartData, 1, 00230 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) 00231 00232 TOKEN_NEXT_ADDRESS(MFG_TESTER_DATA_ADDR,MFG_TESTER_DATA_LOCATION) 00233 TOKEN_MFG(MFG_TESTER_DATA, CREATOR_MFG_TESTER_DATA, 00234 0, 0, tokTypeMfgTesterData, 1, 00235 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) 00236 00237 TOKEN_NEXT_ADDRESS(MFG_ST_EUI_64_ADDR,MFG_ST_EUI_64_LOCATION) 00238 TOKEN_MFG(MFG_ST_EUI_64, CREATOR_MFG_ST_EUI_64, 00239 0, 0, tokTypeMfgStEui64, 1, 00240 {3,0,0,0,0,0,0,3}) 00241 00242 TOKEN_NEXT_ADDRESS(MFG_ANALOG_TRIM_NORMAL_ADDR,MFG_ANALOG_TRIM_NORMAL_LOCATION) 00243 TOKEN_MFG(MFG_ANALOG_TRIM_NORMAL, CREATOR_MFG_ANALOG_TRIM_NORMAL, 00244 0, 0, tokTypeMfgAnalogueTrim, 1, 00245 {0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, 00246 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF}) 00247 00248 TOKEN_NEXT_ADDRESS(MFG_ANALOG_TRIM_BOOST_ADDR,MFG_ANALOG_TRIM_BOOST_LOCATION) 00249 TOKEN_MFG(MFG_ANALOG_TRIM_BOOST, CREATOR_MFG_ANALOG_TRIM_BOOST, 00250 0, 0, tokTypeMfgAnalogueTrim, 1, 00251 {0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, 00252 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF}) 00253 00254 TOKEN_NEXT_ADDRESS(MFG_ANALOG_TRIM_BOTH_ADDR,MFG_ANALOG_TRIM_BOTH_LOCATION) 00255 TOKEN_MFG(MFG_ANALOG_TRIM_BOTH, CREATOR_MFG_ANALOG_TRIM_BOTH, 00256 0, 0, tokTypeMfgAnalogueTrimBoth, 1, 00257 {0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF}) 00258 00259 TOKEN_NEXT_ADDRESS(MFG_REG_TRIM_ADDR,MFG_REG_TRIM_LOCATION) 00260 TOKEN_MFG(MFG_REG_TRIM, CREATOR_MFG_REG_TRIM, 00261 0, 0, tokTypeMfgRegTrim, 1, 00262 {0xFF, 0xFF}) 00263 00264 TOKEN_NEXT_ADDRESS(MFG_1V8_REG_VOLTAGE_ADDR,MFG_1V8_REG_VOLTAGE_LOCATION) 00265 TOKEN_MFG(MFG_1V8_REG_VOLTAGE, CREATOR_MFG_1V8_REG_VOLTAGE, 00266 0, 0, tokTypeMfgRegVoltage1V8, 1, 00267 0xFFFF) 00268 00269 TOKEN_NEXT_ADDRESS(MFG_VREF_VOLTAGE_ADDR,MFG_VREF_VOLTAGE_LOCATION) 00270 TOKEN_MFG(MFG_VREF_VOLTAGE, CREATOR_MFG_VREF_VOLTAGE, 00271 0, 0, tokTypeMfgAdcVrefVoltage, 1, 00272 0xFFFF) 00273 00274 TOKEN_NEXT_ADDRESS(MFG_TEMP_CAL_ADDR,MFG_TEMP_CAL_LOCATION) 00275 TOKEN_MFG(MFG_TEMP_CAL, CREATOR_MFG_TEMP_CAL, 00276 0, 0, tokTypeMfgTempCal, 1, 00277 0xFFFF) 00278 00279 TOKEN_NEXT_ADDRESS(MFG_FIB_VERSION_ADDR,MFG_FIB_VERSION_LOCATION) 00280 TOKEN_MFG(MFG_FIB_VERSION, CREATOR_MFG_FIB_VERSION, 00281 0, 0, tokTypeMfgFibVersion, 1, 00282 CURRENT_MFG_TOKEN_VERSION) 00283 00284 TOKEN_NEXT_ADDRESS(MFG_FIB_CHECKSUM_ADDR,MFG_FIB_CHECKSUM_LOCATION) 00285 TOKEN_MFG(MFG_FIB_CHECKSUM, CREATOR_MFG_FIB_CHECKSUM, 00286 0, 0, tokTypeMfgFibChecksum, 1, 00287 0xFFFF) 00288 00289 TOKEN_NEXT_ADDRESS(MFG_FIB_OBS_ADDR,MFG_FIB_OBS_LOCATION) 00290 TOKEN_MFG(MFG_FIB_OBS, CREATOR_MFG_FIB_OBS, 00291 0, 0, tokTypeMfgFibObs, 1, 00292 {0xFFFF,0x03FC,0xAA55,0xFFFF}) 00293 00294 00295 //--- Customer Information Block --- 00296 TOKEN_NEXT_ADDRESS(MFG_CIB_OBS_ADDR,MFG_CIB_OBS_LOCATION) 00297 TOKEN_MFG(MFG_CIB_OBS, CREATOR_MFG_CIB_OBS, 00298 0, 0, tokTypeMfgCibObs, 1, 00299 {0x5AA5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF}) 00300 00301 TOKEN_NEXT_ADDRESS(MFG_CUSTOM_VERSION_ADDR,MFG_CUSTOM_VERSION_LOCATION) 00302 TOKEN_MFG(MFG_CUSTOM_VERSION, CREATOR_MFG_CUSTOM_VERSION, 00303 0, 0, tokTypeMfgCustomVersion, 1, 00304 CURRENT_MFG_CUSTOM_VERSION) 00305 00306 TOKEN_NEXT_ADDRESS(MFG_CUSTOM_EUI_64_ADDR,MFG_CUSTOM_EUI_64_LOCATION) 00307 TOKEN_MFG(MFG_CUSTOM_EUI_64, CREATOR_MFG_CUSTOM_EUI_64, 00308 0, 0, tokTypeMfgCustomEui64, 1, 00309 {0,3,3,3,3,3,3,0}) 00310 00311 TOKEN_NEXT_ADDRESS(MFG_STRING_ADDR,MFG_STRING_LOCATION) 00312 TOKEN_MFG(MFG_STRING, CREATOR_MFG_STRING, 00313 0, 0, tokTypeMfgString, 1, 00314 {0,}) 00315 00316 TOKEN_NEXT_ADDRESS(MFG_BOARD_NAME_ADDR,MFG_BOARD_NAME_LOCATION) 00317 TOKEN_MFG(MFG_BOARD_NAME, CREATOR_MFG_BOARD_NAME, 00318 0, 0, tokTypeMfgBoardName, 1, 00319 {0,}) 00320 00321 TOKEN_NEXT_ADDRESS(MFG_MANUF_ID_ADDR,MFG_MANUF_ID_LOCATION) 00322 TOKEN_MFG(MFG_MANUF_ID, CREATOR_MFG_MANUF_ID, 00323 0, 0, tokTypeMfgManufId, 1, 00324 {0x00,0x00,}) // default to 0 for st 00325 00326 TOKEN_NEXT_ADDRESS(MFG_PHY_CONFIG_ADDR,MFG_PHY_CONFIG_LOCATION) 00327 TOKEN_MFG(MFG_PHY_CONFIG, CREATOR_MFG_PHY_CONFIG, 00328 0, 0, tokTypeMfgPhyConfig, 1, 00329 {0x00,0x00,}) // default to non-boost mode, internal pa. 00330 00331 TOKEN_NEXT_ADDRESS(MFG_BOOTLOAD_AES_KEY_ADDR,MFG_BOOTLOAD_AES_KEY_LOCATION) 00332 TOKEN_MFG(MFG_BOOTLOAD_AES_KEY, CREATOR_MFG_BOOTLOAD_AES_KEY, 00333 0, 0, tokTypeMfgBootloadAesKey, 1, 00334 {0xFF,}) // default key is all f's 00335 00336 TOKEN_NEXT_ADDRESS(MFG_EZSP_STORAGE_ADDR,MFG_EZSP_STORAGE_LOCATION) 00337 TOKEN_MFG(MFG_EZSP_STORAGE, CREATOR_MFG_EZSP_STORAGE, 00338 0, 0, tokTypeMfgEzspStorage, 1, 00339 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }) 00340 00341 TOKEN_NEXT_ADDRESS(MFG_ASH_CONFIG_ADDR,MFG_ASH_CONFIG_LOCATION) 00342 TOKEN_MFG(MFG_ASH_CONFIG, CREATOR_MFG_ASH_CONFIG, 00343 0, 1, tokTypeMfgAshConfig, MFG_ASH_CONFIG_ARRAY_SIZE, 00344 { 0xFFFF, }) 00345 00346 TOKEN_NEXT_ADDRESS(MFG_CBKE_DATA_ADDR,MFG_CBKE_DATA_LOCATION) 00347 TOKEN_MFG(MFG_CBKE_DATA, CREATOR_MFG_CBKE_DATA, 00348 0, 0, tokTypeMfgCbkeData, 1, 00349 {0xFF,}) 00350 00351 TOKEN_NEXT_ADDRESS(MFG_INSTALLATION_CODE_ADDR,MFG_INSTALLATION_CODE_LOCATION) 00352 TOKEN_MFG(MFG_INSTALLATION_CODE, CREATOR_MFG_INSTALLATION_CODE, 00353 0, 0, tokTypeMfgInstallationCode, 1, 00354 {0xFF,}) 00355 00356 TOKEN_NEXT_ADDRESS(MFG_OSC24M_BIAS_TRIM_ADDR,MFG_OSC24M_BIAS_TRIM_LOCATION) 00357 TOKEN_MFG(MFG_OSC24M_BIAS_TRIM, CREATOR_MFG_OSC24M_BIAS_TRIM, 00358 0, 0, tokTypeMfgOsc24mBiasTrim, 1, 00359 {0xFF,}) 00360 00361 TOKEN_NEXT_ADDRESS(MFG_EUI_64_ADDR,MFG_EUI_64_LOCATION) 00362 TOKEN_MFG(MFG_EUI_64, CREATOR_MFG_EUI_64, 00363 0, 0, tokTypeMfgEui64, 1, 00364 {3,3,3,3,0,0,0,0}) 00365 00366 #undef TOKEN_NEXT_ADDRESS 00367 00368 #endif //DEFINETOKENS 00369