Le 01/11/2010 20:23, Wolfgang Denk a écrit : > Dear Albert ARIBAUD, > > In message<4ccef2e4.5080...@free.fr> you wrote: >> >> Also, I understand why the second RFC change I did was harmful to tx25. >> Contrary to u-boot itself, u-boot-spl is not compiled to be position >> independent; it actually loads at a given address then copies itself, >> without relocating, to its home location. > > It copies _itself_? Not the U-Boot payload? > > Heiko, is this intentional? Do we really first load the whole image, > then copy the U-Boot payload to some other address, then relocate it > to yet another one?
I haven't been clear. The boot ROM or IPL loads u-boot-spl in RAM at a fixed location and jumps to it. u-boot-spl copies itself at its intended location if not already there, and jumps to tiself at that new location. u-boot-spl loads u-boot at a fixed location and jumps to it. u-boot relocates (copies and fixes up) itself at top of ram if not already there, and jumps to itself at that new location. >> I also think I might have found out what hit tx25. >> >> include/configs/tx25 defines the size of u-boot which SPL will use to >> load from NAND into RAM. currently it is defined thus: >> >> #define CONFIG_SYS_NAND_U_BOOT_SIZE 0x30000 > > Arghh... > >> Wolfgang, please try the following: >> >> - on u-boot-testing, branch reloc_tests, revert commit 7fab02d... >> (that's "arm926ejs: fix jump to RAM nand_boot") as this 'fix' is a mistake. >> >> - in include/configs/tx25.h, increasing CONFIG_SYS_NAND_U_BOOT_SIZE to >> 0x31000 >> >> Let me know if building tx25 after these two corrections makes things >> better. > > Bingo. Phew. > Both the ELDK and the CS compiled versions run fine now: > > with ELDK: > > U-Boot 2010.12-rc1-00030-g7fec359 (Nov 01 2010 - 20:13:53) > > U-Boot code: 81200000 -> 81224E64 BSS: -> 8122DF68 > CPU: Freescale i.MX25 at 399 MHz > > monitor len: 0002DF68 > ramsize: 02000000 > TLB table at: 81ff0000 > Top of RAM usable for U-Boot at: 81ff0000 > Reserving 183k for U-Boot at: 81fc2000 > Reserving 1024k for malloc() at: 81ec2000 > Reserving 24 Bytes for Board Info at: 81ec1fe8 > Reserving 92 Bytes for Global Data at: 81ec1f8c > New Stack Pointer is: 81ec1f88 > RAM Configuration: > Bank #0: 80000000 32 MiB > relocation Offset is: 00dc2000 > monitor flash len: 00024E64 > Now running in RAM - U-Boot at: 81fc2000 > .... > > with CS: > > U-Boot 2010.12-rc1-00030-g7fec359 (Nov 01 2010 - 20:18:09) > > U-Boot code: 81200000 -> 812237E8 BSS: -> 8122C8F0 > CPU: Freescale i.MX25 at 399 MHz > > monitor len: 0002C8F0 > ramsize: 02000000 > TLB table at: 81ff0000 > Top of RAM usable for U-Boot at: 81ff0000 > Reserving 178k for U-Boot at: 81fc3000 > Reserving 1024k for malloc() at: 81ec3000 > Reserving 24 Bytes for Board Info at: 81ec2fe8 > Reserving 92 Bytes for Global Data at: 81ec2f8c > New Stack Pointer is: 81ec2f88 > RAM Configuration: > Bank #0: 80000000 32 MiB > relocation Offset is: 00dc3000 > monitor flash len: 000237E8 > Now running in RAM - U-Boot at: 81fc3000 > .... > > Note that the CS tool chain gives somewhat smaller code... > > Thanks a lot! You're welcome. :) > > Guess we should submit the temporary changes now as formal patches? Yes, I will now prepare a patchset for mainline master. Do I include the increase of tx25 size? > Best regards, > > Wolfgang Denk Amicalement, -- Albert. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot