Hi, Now, I'm doing the IAP function in LPC2138 using the keil 3.05. Rebuild is ok. But when I debug it, it will have a PreFetch Abort. The wrong message is "Prefetch Abort: Thumb Instruction at 80000000H".This happens at every function about IAP ,such as ReadParID,BootCodeID and so on.
I have browsed many material from the internet without a result.
Did anybody encounter this matter?
why no people reply ?
please help me .
You don't supply any code sections, for us to look at.
How do you do your IAP?
Are you supplying the correct - odd - address so the processor knows that it should switch into the Thumb instruction set for the IAP calls?
I know from experience with the LPC2478 that trying to use external RAM as the data source for IAP will fail. One must use internal RAM.
this is iap.c
#define IAP_ENTER_ADR 0x7ffffff1 #define iap_entry(a,b) ((void(*)())(IAP_ENTER_ADR))(a,b) #define IAP_FCCLK 48000 uint32 ReadParID(void) { paramin[0] = IAP_READPARTID; iap_entry(paramin,paramout); return (paramout[0]); } this is main.c int main (void) { uint8 err; VICIntEnClr=0xffffffff; MAMCR = 0; PLLCON = 0; PLLFEED = 0xaa; PLLFEED = 0x55; err =ReadParID(); //............................. }
. When I debug to ReadRarID(),it will prefetch abort.
I choose "use thumb code".