TI工程师您好:
cc2530,版本2.5.1a,我想用HalFlashWrite来改写secondary MAC。发现通过IAR调试时可擦除127page和写secondary MAC成功,但下电上电后(也就是不用IAR调试)时,擦除127page和写secondary MAC均失败,FCTL显示为abort。
我的问题跟下面case一样。下面case中有提到写flash对供电要求高,请问在供电上具体有怎么样的要求,来指导我们硬件修改验证?或者说此问题与供电无关,软件需要怎样处理?
https://e2echina.ti.com/question_answer/wireless_connectivity/zigbee/f/104/t/53553
本地通过cc2530的uart1口打印信息如下。调试代码见附件
��main�е����Լ�д�ĵ��Ժ���zigbee_adp_changeMac_test
int main( void )
{
// Turn off interrupts
osal_int_disable( INTS_ALL );
// Initialization for board related stuff such as LEDs
HAL_BOARD_INIT();
// Make sure supply voltage is high enough to run
zmain_vdd_check();
// Initialize board I/O
InitBoard( OB_COLD );
// Initialze HAL drivers
HalDriverInit();
zigbee_adp_changeMac_test();
// Initialize NV System
osal_nv_init( NULL );
// Initialize the MAC
ZMacInit();
��
��
void zigbee_adp_changeMac_test(void)
{
#if 1
uint8 usrDefSecondaryMac[Z_EXTADDR_LEN] = {0};
uint8 locbitw[HAL_FLASH_LOCK_BITS] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
uint8 locbit[HAL_FLASH_LOCK_BITS] = {0};
uint8 testMac1[Z_EXTADDR_LEN] = {0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00};
uint8 testMac2[Z_EXTADDR_LEN] = {0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77};
uint8 tmp[200]={0};
osal_memset(locbit,0,HAL_FLASH_LOCK_BITS);
HalFlashRead(HAL_FLASH_IEEE_PAGE, (HAL_FLASH_IEEE_OSET+HAL_FLASH_IEEE_SIZE), locbit, HAL_FLASH_LOCK_BITS);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[zmain,loc1:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x FCTL:0x%x]\r\n"
,locbit[0],locbit[1],locbit[2],locbit[3],locbit[4],locbit[5],locbit[6],locbit[7]
,locbit[8],locbit[9],locbit[10],locbit[11],locbit[12],locbit[13],locbit[14],locbit[15],FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
//����дloc
HalFlashWrite(0xFFFC, locbitw, 4);
osal_memset(locbit,0,HAL_FLASH_LOCK_BITS);
HalFlashRead(HAL_FLASH_IEEE_PAGE, (HAL_FLASH_IEEE_OSET+HAL_FLASH_IEEE_SIZE), locbit, HAL_FLASH_LOCK_BITS);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[zmain,loc2:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x FCTL:0x%x]\r\n"
,locbit[0],locbit[1],locbit[2],locbit[3],locbit[4],locbit[5],locbit[6],locbit[7]
,locbit[8],locbit[9],locbit[10],locbit[11],locbit[12],locbit[13],locbit[14],locbit[15],FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
//��ȡSecondary MAC
HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET, usrDefSecondaryMac, Z_EXTADDR_LEN);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[test_01,FM:0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x,FCTL:0x%x]\r\n"
,usrDefSecondaryMac[0],usrDefSecondaryMac[1],usrDefSecondaryMac[2],usrDefSecondaryMac[3]
,usrDefSecondaryMac[4],usrDefSecondaryMac[5],usrDefSecondaryMac[6],usrDefSecondaryMac[7],FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
HalFlashErase(127);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[test_02,after erase FCTL:0x%x]\r\n",FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
HalFlashWrite(0xFFFA, testMac1, 2);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[test_03,after write FCTL:0x%x]\r\n",FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
//��ȡSecondary MAC
HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET, usrDefSecondaryMac, Z_EXTADDR_LEN);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[test_04,FM:0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x,FCTL:0x%x]\r\n"
,usrDefSecondaryMac[0],usrDefSecondaryMac[1],usrDefSecondaryMac[2],usrDefSecondaryMac[3]
,usrDefSecondaryMac[4],usrDefSecondaryMac[5],usrDefSecondaryMac[6],usrDefSecondaryMac[7],FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
#endif
#if 1
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[test_001,before erase FCTL:0x%x]\r\n",FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
HalFlashErase(127);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[test_002,after erase FCTL:0x%x]\r\n",FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
HalFlashWrite(0xFFFA, testMac2, 2);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[test_003,after write FCTL:0x%x]\r\n",FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
//��ȡSecondary MAC
HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET, usrDefSecondaryMac, Z_EXTADDR_LEN);
osal_memset(tmp,0,200);
sprintf((char *)tmp, "\r\n[test_004,FM:0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x,FCTL:0x%x]\r\n"
,usrDefSecondaryMac[0],usrDefSecondaryMac[1],usrDefSecondaryMac[2],usrDefSecondaryMac[3]
,usrDefSecondaryMac[4],usrDefSecondaryMac[5],usrDefSecondaryMac[6],usrDefSecondaryMac[7],FCTL);
HalUARTWrite(1, tmp, osal_strlen((char *)tmp));
#endif
}