Part Number: CC2530
Other Parts Discussed in Thread: Z-STACK, Z-STACK-ARCHIVE, CC-DEBUGGER, FLASH-PROGRAMMER
Tool/software: TI C/C++ Compiler
Hi:
cc2530,2.5.1a. I want to changing cc2530 secondary mac through code(erase page 127,write secondary mac). When using IAR to debug,It's ok. When not using IAR to debug,It's not ok(FCTL display "abort").
attatch my debug code
main invoke 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));
//try write 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));
//get 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));
//get 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));
//get 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
}
I heared that this might because of power. What's the excatly reason and how can our hard designer fix it? Or,is it other reason?