TOC_START_BLOCK=0x21
g_dwTOCBlock=0x21
g_dwTOCBlockSize=0x1
g_dwEBootBlock=0x22
g_dwEBootblocksize=0x1000
g_dwDMBlock=0x1022
g_dwDMBlocksize=0x480
g_dwSecureBlock=0x14A2
g_dwSecureBlocksize=0x4
g_dwLOGOBlock=0x14A6
g_dwLOGOBlocksize=0x1FE
g_dwNKBlock=0x16A4
TOC update
配合 program nboot.bin, uboot.bin 到 sd 的 shell script 來看 sd card 的配置:
- nboot : sector 1 ~ 32
- TOC : 33
- uboot : 34 ~ (34+4096)
Jumpto image:0x0
Sector Needed 0x1000
dwRAM: 0x8D000000
JumpAddr: 0xC1000000
startsect=0x22
dwNumSectors=0x1000
dwRAM=0x8D000000
Jumpto:0xC1000000
Preparing System for Linux Kernel Boot
對照 CE 的 boot log:
start Address: 0x22
Load Address: 0x8C01A000
Jump Address: 0x8C01A000
Ttl Sectors: 0x180
Chain in TOC:
Chain Load Addr: 0x0
startsect=0x22
dwNumSectors=0x180
dwRAM=0x8C01A000
Jumpto:0xC001A000
所以差異是在 ram 的 address 上..
這個 default TOC 是在 nboot 啟動後寫入的: ce 版:
Reset TOC
@@@@ g_pTOC is not valid, init it @@@@
TOC_START_BLOCK=0x21
g_dwTOCBlock=0x21
g_dwTOCBlockSize=0x1
g_dwEBootBlock=0x22
g_dwEBootblocksize=0x180
g_dwDMBlock=0x1A2
g_dwDMBlocksize=0x0
g_dwSecureBlock=0x1A2
g_dwSecureBlocksize=0x4
g_dwLOGOBlock=0x1A6
g_dwLOGOBlocksize=0x1FE
g_dwNKBlock=0x3A4
TOC updateTOC update
決定 nboot payload - eboot/uboot 的 預留空間size是 predefine 的, linux 和 ce 在這裡不一樣:
- CE : 0x30000
- Linux: 0x200000 (2M ? 實際上看 u-boot 真的要 1.6M..)
果然,修改 EBOOT_RAM_IMAGE_SIZE 之類的就可以..
%CSPCOMMONPATH%\INC\loader.h
- EBOOT_RAM_IMAGE_BASE 0x8D000000
- EBOOT_RAM_IMAGE_SIZE 0x00030000
- EBOOT_RESERVED_SIZE 0x200000
其中最後一個:EBOOT_RESERVED_SIZE 的大小就是使用 vendor 不open source 的 download tool download uboot 時,需要的空間。不改的話,會有 error.
沒有留言:
張貼留言