This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

looked around,understood a bit,need specific help with Remapping and boot loading

Hello freinds,

Having looked around for almost 2 days for getting some intro about the bootloading process, I would first elaborate a little about what I have understood about the entire thing.

Having referred to a plethora of forum threads, this is what I conclude.

Basically, the ARM7 executes in 3 different modes viz. boot mode, user flash mode and user ram mode. On reset, the core always is in boot mode and executes the boot loader.Now the boot block which is normally resident in the top 64 bytes in user flash gets remapped into the top 64 bytes of the onchip 2GB memory, if I understood correctly. Now heres my first question: If the boot block gets remapped to the top 64 bytes of on-chip memory, then does it mean that the reset vector is reset at location 0 relative to this address?..

If im correct on this one, does it mean that the 'LDR pc,reset_addr' which is usally the very first instruction in the startup file does(or is supposed to do) a short jump to reset addr which should be the very first word of my bootloader right?..the boot loeader should then do all the hardware initializations alongwith the allocation of various stacks for different operating modes including the user mode. It then does have to map the vectors back into the user RAM and load the OS image into the ram as well right? Now this is where things go haywire in my mind:
1. In one of the forum threads here, they said the startup file may use absolute addresses only whereas the manual says that once the MEMMAP register has been assigned a certain value, then based on this value, the core will automatically assume a certain base and accordingly calculate the addresses of the various interrupt vectors. Could someone please clarify what will it actually do?

2. Now how do I tell the linker that I would like to 'install' a given bootloader at a certain location. And how do I decidew where my bootloader should be. I plan to use U boot and while there is enough documentation to get started, I would be pleased if someone could get me straight on this one. I mean the bootloader should be able to boot the system automatically on startup. So I should be ideally placing it in non volatile flash right. Please give me some pointers on this one since these kind of things are bugging me a lot. The documentation on the UBoot website talks about the canyonlands board while I am using a local made board whch uses the LPC2129.If what I wrote above is indeed what it is actually done on the LPC2100s then I might have to specify an absolute address in the very first instruction which typically causes the jump to the reset handler. oh by the way im using uvision4

Keen to get things started, but Im still lost in this huge pile of information scattered in bits and pieces. May be I should get used to the real world now.

Keen to hear from you guys.