how can I boot u-boot from 0x40000 in flash instead
Thanks for the answers. I apologize that I did not make it clear. My board is a PXA270, it will, of cause, boot from 0x0000. But our customer has a tiny tiny boot loader which just generates some special data and save it in flash. (So they reserved the flash blocks from the 0x0000 to 0x40000.) Then it make PXA270 jump to the 0x40000 and run the real boot loader from there. We used blob and it works fine with kernel 2.4. But I am porting the new Linux 2.6 to the board and I decide to switch to u-boot. My understanding is that after the u-boot get the control, ie, the CPU jump to the first instruct of the u-boot code. u-boot will do some initialization on the CPU's cache to build a simple C environment and then copy part of itself from the flash into the cache and run from there to initial the memory controller etc. The code then will copy all (or the rest) the u-boot from the flash to the memory. My question is, in default, u-boot will copy itself from the 0x0000 (right?). How could I let it know that the u-boot is actually locates in the 0x40000.
thanks,
Ray
Quoted 20 lines
Ray Zhao wrote:
My board need keep the first0x40000flash for special purpose. Is it easy to modify the u-boot to load itself from0x40000instead from the0x0000? Any help is appreciated.Ray
If your hardware supports it, probably. Otherwise no. Perhaps you could tell us what your hardware is?
gvb
It's not U-Boot code what determines the boot address, but your processor. So your real question is if you can teach your CPU to start from a different reset vector. But sorry, we cannot answer this here.
Best regards,
Wolfgang Denk
Signature · 2 lines
--------------------------------------------------------------- Everything that has a beginning has an end.
Quoted 3 lines · In message <[email protected]> you wrote:
0x0000(right?). How could I let it know that the u-boot is actually locates in the0x40000.
Change at least the linker script. Probaly you will need to tweak a few other places as well.
Best regards,
Wolfgang Denk
Signature · 3 lines
Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de "Pull the wool over your own eyes!" - J.R. "Bob" Dobbs
Thanks. I am a newbie on u-boot.
1. I changed the u-boot.lds in my board directory. in the line .=0x00000000 I changed it to .=0x00040000
2. Could you please tell me where are the codes which COPY the code from flash to the cache and sdram?
best regard
Ray
Quoted 17 lines · Wolfgang Denk
Quoted 3 lines · In message <[email protected]> you wrote:
0x0000(right?). How could I let it know that the u-boot is actually locates in the0x40000.Change at least the linker script. Probaly you will need to tweak a few other places as well.
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Pull the wool over your own eyes!" - J.R. "Bob" Dobbs
Signature · 2 lines
--------------------------------------------------------------- Everything that has a beginning has an end.
Quoted 3 lines · In message <[email protected]> you wrote:
Thanks. I am a newbie on u-boot.
1. I changed theu-boot.ldsin my board directory. in the line .=0x00000000 I changed it to .=0x00040000
This will hardly be sufficient. Remember that U-Boot expects to be started from the reset vector, which it will also assume when relocating, etc. Just changing the address is not sufficient - instead you will have to create a "gap" where you rpoprietary boot code fits in.
Quoted 2 lines
2. Could you please tell me where are the codes which COPY the code from flash to the cache and sdram?
I hope you will not continue to ask where to find each and every function. You are supposed to have the knowledge and tools to find your own way through the code. Tools like grep or ctags may help...
See function relocate_code() in cpu/*/start.S
Best regards,
Wolfgang Denk
Signature · 5 lines
Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de "Where shall I begin, please your Majesty?" he asked. "Begin at the beginning," the King said, gravely, "and go on till you come to the end: then stop." - Alice's Adventures in Wonderland, Lewis Carroll