Hi,
I need help. I'm using the IAP, secondary bootloader. I'm having a problem erasing sectors. When I try to erase a sector, it hangs at function "iap_entry(command, result)" in erase function.
It passes through Prepare function successfully.
The code:
#define IAP_LOCATION 0x7FFFFFF1 #define IAP_CLK 48000000 #define AP_ADDR 0x10000// where the user app located typedef void (*FP)(void);/* run the user application from pre-specified address*/ #define iap_entry(a, b) ((void (*)())(IAP_LOCATION))(a, b) unsigned long command[5]; unsigned long result[3];
The ERASE FUNCTION:
unsigned long IAP_EraseSec (unsigned long StartSecNum, unsigned long EndSecNum) { if (EndSecNum < StartSecNum) return IAP_STA_INVALD_PARAM; command[0] = IAP_CMD_EraseSec; command[1] = StartSecNum; command[2] = EndSecNum; command[3] = IAP_CLK / 1000; _printf("\r\n*******ERASE3************"); iap_entry(command, result); _printf("\r\n*******ERASE4************"); return result[0]; }
The PREPARE FUNCTION:(that one works ok)
unsigned long IAP_PrepareSec (unsigned long StartSecNum, unsigned long EndSecNum) { if (EndSecNum < StartSecNum) return IAP_STA_INVALD_PARAM; command[0] = IAP_CMD_EraseSec; command[1] = StartSecNum; command[2] = EndSecNum; command[3] = IAP_CLK / 1000; _printf("\r\n*******ERASE3************"); iap_entry(command, result); _printf("\r\n*******ERASE4************"); return result[0]; }
Can anyone help me?
thanks
... since you have not seen fit to reveal which chip.
sector erase is very chip dependent. And I do not recognize your IRAM settings matching any chip I know
Erik
Sorry.. It is LPC2368.