Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: IAP problem

2005-08-24 by Gus

older version of philips boot loader had some issue and it would 
lock up sometimes.

On philips website, you will find a hex file and the steps to update 
the boot loader.

I think (not sure) I had problem with version 1.61 and updated to 
1.63 to fix


--- In lpc2000@yahoogroups.com, "Michal Krestan" <krestan@h...> 
wrote:
> Hi,
> 
> I'm using IAP programming in my application with LPC2106. It works 
fine, but in one of about 5 tries my procedure for firmware update 
will hang somewhere (probably in callIAP) and after hardware reset, 
in MCU still remains the same code without any modification. Does 
anyone have recommended flowchart for using IAP? Do I have to check 
result of IAP prepare command and result of other IAP calls? For 
example, I don't know what to do if I'll get busy result after IAP 
call. Do I have to make infinite loop with call of the same command 
until it's sucessfull? My code for fw update is following:
> 
> It will copy new firmware sotred in external SPI flash memory. 
This procedure is compiled in ARM mode, located in 8th sector of 
flash memory.
> 
> void __attribute__((section(".bootloader"))) startflash(void) 
> {
> disableIRQ();
> VICVectCntl0 = 0;
> VICVectCntl1 = 0;
> VICVectCntl2 = 0;
> 
> SCB_PLLCON = 0;//turn off PLL
> SCB_PLLFEED = PLL_FEED1;
> SCB_PLLFEED = PLL_FEED2;
> 
> MAM_MAMCR = 0; 
> startadr=262144;
> destadr=0;
> for (x=0;x<7;x++) { 
>    command[0]=50;
>    command[1]=x;
>    command[2]=x;
>    callIAP();
>    command[0]=52;
>    command[1]=x;
>    command[2]=x;
>    command[3]=7328;
>    callIAP();
>    for (y=0;y<16;y++) {
>       flash_readbuf(&fbuf[0], startadr, 255);startadr+=256;
>       flash_readbuf(&fbuf[256], startadr, 255);startadr+=256;
>       command[0]=50;
>       command[1]=0;
>       command[2]=13;
>       callIAP();
>       command[0]=51;
>       command[1]=destadr;
>       command[2]=&fbuf[0];
>       command[3]=512;
>       command[4]=7328;
>       callIAP();
>       command[0]=56;
>       command[1]=destadr;
>       command[2]=&fbuf[0];
>       command[3]=512;
>       callIAP();
>       destadr+=512;
>       }
>    }
> dorestart();   
> while (1) ;   
> }
> 
> 
>         Regards,
>                 Michal
> 
> 
> [Non-text portions of this message have been removed]

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.