zstack3.0.1协议栈默认CC2538芯片的型号是SF53,设置成SF23的步骤如下:
1.选择芯片型号:
2.修改option->Linker->Checksum值如图:
3.option->Debugger->setup->Device description file选择对应芯片
4.修改linker connect file –cc2538.icf
下载链接如下:
CC2538xF23.icf
5.修改hal_board_cfg.h(#iifdef CC2538SF53后面为修改内容)
#define HAL_IMG_A_BEG FLASH_BASE
#define HAL_IMG_B_BEG (FLASH_BASE + 0x0003E000)
#if defined HAL_IMG_AREA
#define HAL_NVIC_OSET 512
#if (HAL_IMG_AREA == 0)
#define HAL_NVIC_ADDR (HAL_IMG_A_BEG + HAL_NVIC_OSET)
#elif (HAL_IMG_AREA == 1)
#define HAL_NVIC_ADDR (HAL_IMG_B_BEG + HAL_NVIC_OSET)
#else
#error HAL_IMG_AREA is invalid.
#endif
#else
#define HAL_NVIC_ADDR FLASH_BASE
#endif
#ifdef CC2538SF53 //chip flash cfg
#define HAL_NV_PAGE_END 254
#define HAL_OTA_LEDGER_PAGE 248
#else
#define HAL_NV_PAGE_END 126
#define HAL_OTA_LEDGER_PAGE 120
#endif //CC2538SF53
#define HAL_OTA_LEDGER_PAGE_ADDR (FLASH_BASE + (HAL_OTA_LEDGER_PAGE * HAL_FLASH_PAGE_SIZE))
/*
------------------------------------------------------------------------------------------------ * OSAL NV implemented by internal flash pages. *
------------------------------------------------------------------------------------------------ */
// Flash consists of 256 pages of 2 KB.
#define HAL_FLASH_PAGE_SIZE 2048
#define HAL_FLASH_WORD_SIZE 4
// Z-Stack uses flash pages for NV
#define HAL_NV_PAGE_CNT 6
#define HAL_NV_PAGE_BEG (HAL_NV_PAGE_END-HAL_NV_PAGE_CNT+1)
#define HAL_NV_START_ADDR ((FLASH_BASE) + (HAL_NV_PAGE_BEG * HAL_FLASH_PAGE_SIZE))
// Factory commmissioning location is now placed in the Lock Bits
page. The // certificates are stored at the locations defined below.
// NOTE: these addresses MUST match those defined in the associated
linker // control file (.icf) // NOTE: Commissioning items are
aligned and padded to HAL_FLASH_WORD_SIZE
// 74-byte Implicit Certificate (for binary 283 Key Establishment)
#ifdef CC2538SF53
#define HAL_FLASH_IMPLICIT_CERT_283_ADDR ( 0x0027FED4 )
#else
#define HAL_FLASH_IMPLICIT_CERT_283_ADDR ( 0x0023FED4 )
#endif
#define HAL_FLASH_IMPLICIT_CERT_283_SIZE ( 74 + 2 ) // 2-bytes of pad
// 37-byte CA Public Key (for binary 283 Key Establishment)
#ifdef CC2538SF53
#define HAL_FLASH_CA_PUBLIC_KEY_283_ADDR ( 0x0027FF20 )
#else
#define HAL_FLASH_CA_PUBLIC_KEY_283_ADDR ( 0x0023FF20 )
#endif
#define HAL_FLASH_CA_PUBLIC_KEY_283_SIZE ( 37 + 3 ) // 3-bytes of pad
// 36-byte Device Private Key (for binary 283 Key Establishment)
#ifdef CC2538SF53
#define HAL_FLASH_DEV_PRIVATE_KEY_283_ADDR ( 0x0027FF48 )
#else
#define HAL_FLASH_DEV_PRIVATE_KEY_283_ADDR ( 0x0023FF48 )
#endif
#define HAL_FLASH_DEV_PRIVATE_KEY_283_SIZE ( 36 )
// 48-byte Implicit Certificate (for Key Establishment)
#ifdef CC2538SF53
#define HAL_FLASH_IMPLICIT_CERT_ADDR ( 0x0027FF6C )
#else
#define HAL_FLASH_IMPLICIT_CERT_ADDR ( 0x0023FF6C )
#endif
#define HAL_FLASH_IMPLICIT_CERT_SIZE ( 48 )
// 22-byte CA Public Key (for Key Establishment)
#ifdef CC2538SF53
#define HAL_FLASH_CA_PUBLIC_KEY_ADDR ( 0x0027FF9C )
#else
#define HAL_FLASH_CA_PUBLIC_KEY_ADDR ( 0x0023FF9C )
#endif
#define HAL_FLASH_CA_PUBLIC_KEY_SIZE ( 22 + 2 ) // 2-bytes of pad
// 21-byte Device Private Key (for Key Establishment)
#ifdef CC2538SF53
#define HAL_FLASH_DEV_PRIVATE_KEY_ADDR ( 0x0027FFB4 )
#else
#define HAL_FLASH_DEV_PRIVATE_KEY_ADDR ( 0x0023FFB4 )
#endif
#define HAL_FLASH_DEV_PRIVATE_KEY_SIZE ( 21 + 3 ) // 3-bytes of pad
// 8-byte IEEE address (unique for each device)
#ifdef CC2538SF53
#define HAL_FLASH_IEEE_ADDR ( 0x0027FFCC )
#else
#define HAL_FLASH_IEEE_ADDR ( 0x0023FFCC )
#endif
#define HAL_FLASH_IEEE_SIZE ( 8 ) // Re-defining Z_EXTADDR_LEN here
// Location of SoC factory IEEE address (Information Page)
#define HAL_INFO_ADDR 0x00280000
#define HAL_INFO_IEEE_OFST 0x028
#define HAL_INFO_IEEE_ADDR (HAL_INFO_ADDR + HAL_INFO_IEEE_OFST)