
From: u-boot-bounces@lists.denx.de [mailto:u-boot- Dear pshambhu,
In message 1380547665536-164381.post@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