Yahoo Groups archive

Lpc2000

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

Message

Re: trashed 2148 bootloader

2006-02-22 by Jayasooriah

Hi Guile,

I am happy to clarify by way of annotation:

--- In lpc2000@yahoogroups.com, "Guillermo Prandi" <yahoo.messenger@...> wrote:
 >
 > Oh, I think I see the point, now. From what you say I get the
 > following:
 >
 > 1) I have no choice but to go through the embedded bootloader for the
 > initial programming.

Philips boot loader update distribution contains (authoritative) code that 
will update the boot sector for any of the LPC devices for which they have 
released boot loader updates.

This can be used (after stripping the "protective" bits) in lieu of IAP 
calls to switch between the original and alternate boot loaders.  You may 
need to switch back to the original boot loader, for example, if your board 
needs to be sent back for repair.

 > 2) Using the embedded bootloader should work if I am careful enough
 > to provide the correct crystal frequency. However, as the writing
 > procedure seems to be poorly implemented, a write-read-compare cycle
 > should be considered.

I do not think write-read-compare cycle will work because when things go 
wrong and the write or erase fails the IAP call may not return:

1/  While erase or write operation is in progress, the flash memory is not 
accessible.  Writes will (in general) have no effect and read (in general) 
always return ones.

2/  For this reason, the boot loader loads into and runs from RAM a stub of 
code that starts the erase or write command, sits in a programmed loop, and 
then terminates command and returns.

2/  However when this stub returns before the flash is ready the CPU is now 
in the wilderness.

3/  At some time when the flash becomes ready, the processor starts getting 
real data from on-chip flash from wherever its PC is pointing to, and what 
happens next is disaster.

 > 3) I might get a non-functional unit if my program misbehaves and
 > accidentally runs code that erases the provided bootloader. This
 > is "unavoidable" since the processor lacks some kind of hardware
 > protection to prevent this to happen accidentally.

Correct.  All the flash memories (embedded and external) that I have dealt 
with have some kind of feed sequences to prevent accidents like these.

I cannot find any evidence of such sequences in the boot loader for 2105, 
2292.  I believe the situation is the same for all the LPC series because 
they use a the same boot loader code, one for 2104/5/6 and another for the 
others,

 > 4) I have the choice (however undocummented) to write my own
 > bootloader. If this bootloader lacks flash memory programming
 > capabilities I might be safer because my potentially misbehaving
 > application will not be able to jump in the middle of the flash
 > programming code and accidentally erase the bootloader or other parts
 > of the flash.

You can use the provided boot loader if you are prepared to live with the 
problems people have raised in this forum with respect to flash programming.

Writing your own boot loader that does not deal with flash memory is IMO a 
low risk option.  By looking at what the provided boot loader does between 
reset and running user code, you can work out the couple of instructions 
your own boot loader needs to run.

Replacing flash algorithms is more involved and higher risk because you 
have to rely on suck-and-see assurances.

However, if you do not require flash for your application and only need it 
for purposes of firmware updates, and you only will run authoritative code, 
then there is nothing stopping you from using the very code that is used by 
Philips in their boot loader update distribution.

Regards,

Jaya

Send instant messages to your online friends http://au.messenger.yahoo.com

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.