[U-Boot] Dual boot Images in Flash

Gupta, Pekon pekon at ti.com
Tue Oct 1 08:02:23 CEST 2013


> From: u-boot-bounces at lists.denx.de [mailto:u-boot-
> Dear pshambhu,
> 
> In message <1380547665536-164381.post at n7.nabble.com> you wrote:
> >
> > As per previous posting i got to know that, there will be only one reset
> > entry point, can't i have the another entry point in it.
> 
> You can talk to your chip vendor to provide you with some kind of
> logic to detect failed boot attempts and provide an alternative reset
> vecotr then.  Guess your chances to gett that are extremely small,
> though.
> 
> You can, of course, throw hardware at it, and for example provide
> duplicate storage . memory devices for booting from, so you only have
> to swap chip select resp. address lines to select the alternative boot
> device.
> 
> >   -  Why i can't have multiple entry points ? and what will be effect if i
> > introduced ?
> 
> You can't, because your processor only has one.
> 
> >   -  Where the reset entry points are defined in the u-boot code ?
> 
> They are not defined in U-Boot, they are defined in the processor
> silicon or ROM code.
> 
> Disclaimer: of course things get even more complicated when you keep
> in mind that there is a multiverse of different hardware solutions,
> some of them with special, and others with truely exotic features.
> 
you can tweak your hardware to split it, and many micro-controllers
do it (especially for safety critical applications). Example:
Suppose 'default' entry-point (or reset entry-point) = 0x0000_0000,
Now OR your MSB bit with the fault-signal or boot-error-flag.
reset-addr[31] = reset-addr_internal[31] | boot_error_flag;
So in case when you primary boot fails, and boot_error_flags is set,
next time when you boot, the address transforms into 0x1000_0000

This can also be done at board-level, where you can always re-route
your default chip-select to some different memory by ORing it with
boot_error_flag. But yes, you need a way to determine that your
first boot failed, which is usually done by having a on-board watchdog,
which timeout if system doesn't boot  within given time.


with regards, pekon


More information about the U-Boot mailing list