Hello TIers,
I have a problem that C6748 ROM bootloader doesn't copy whole image from NAND Flash to IRAM. In other words, only a partial content is copied to IRAM.
FYI, I'm evaluating this on C6748 LCDK.
I made an AIS image by AISgen for D800K008 and burned the image by OMAP-L138_FlashAndBootUtils. After some trials, I traced the ROM bootloader behavior and finally found that _only_ a partial image of the AIS image was copied to IRAM.
Exactly speaking, the AIS image has the following command (or data) block in it.
(snip)
0002340 010d0003 58535901 11800000 0000ffa0
0002360 27773677 86779577 053c35c4 01be54f6
0002400 02461347 06000041 043f82d5 e2600300
0002420 e8e6272e 30010f13 208002a5 270012a9
0002440 06267756 268016a8 233c62f4 e2200202
0002460 dc45ac05 90010a10 80382a78 81000fd8
0002500 80001fda 0c6e2c6e 00000000 e4200c00
0002520 d1fb2121 c4983624 301bf010 a1980fd8
(snip)
(Before the Section Load Command (0x58535901), I also see some PLL, DRR and PSC initialization sequences.)
When I traced the ROM bootloader by CCS emulator, it looks copying only the first 784 bytes (or 0x310) of the block even though the block has 0xffa0 bytes length as shown above.
I guess that the ROM bootloader iterates a process that copies some bytes from NAND flash into a scratch memory and again copying that to IRAM, but after copying the first 784 bytes, it doesn't copy the remaining bytes anymore. I'm afraid I have given up to trace the ROM bootloader because I don't have the bootloader source code. :)
Does anybody know why it happens? (I also suspect that the AIS image wasn't correctly burned into NAND flash, but I'm afraid I don't have any tool to investigate NAND flash contents.)
BTW, a very curious point is, the boot successfully runs WHEN I tried to load the NAND flash image into _DDR_ memory instead of IRAM. The AIS images should be identical except for loading memory address (0x11800000 instead of 0xc0000000). Secondly, it neither work if I specified local IRAM address (0x00800000). Thirdly, I confirmed that IRAM boot goes well when load image is very small. I suspect that the boot image was too large even though it should fit in 256KB IRAM of C6748.
If you need the actual AIS image file, I can send it to you.
My environment is as following.
- C6748 LCDK (should be the latest revision)
- AISgen_d800k008_Install_v1.13
- OMAP-L138_FlashAndBootUtils_2_40.tar.gz
Used commands are
- sfh_OMAP-L138.exe -targetType C6748_LCDK -flashType NAND -p COM3 -erase
- sfh_OMAP-L138.exe -targetType C6748_LCDK -flashType NAND -p COM3 -flash_noubl ais_image.bin
The AISgen configuration file is also attached.
Any suggestion would be highly appreciated.
Thanks and Best Regards,
Atsushi Yokoyama


