We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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".