|
关于eboot和binfs的一些问题请教大家!!!
[复制链接]
这两天研究了一下eboot的烧写和加载镜像以及binfs。研究的不够深入,看了一下前辈们以前写的博客,但是依旧有很多疑问。因此特来向大家请教一下:
1.我按照网上前辈们的帖子按部就班的想实现multibin,最后生成了xip.bin文件,烧写进去之后,发现加载速度确实快了不少,但是一看打印信息,傻了眼了,发现还是加载了整个xip.bin文件,打印信息:
OEMPlatformInit: IMAGE_TYPE_RAMIMAGE
+=OEMVerifyMemory+ dwStartAddr:0x80200000 dwLength:0x4
RAM image 0xa 0x80200003
+=OEMVerifyMemory+ dwStartAddr:0x8029cd84 dwLength:0x4
RAM image 0xa 0x8029cd87
IsValidMBR: MBR sector = 0x1000
OpenPartition: Partition Exists=0x1 for part 0x21.
BP_SetDataPointer at 0x0
ReadData: Start = 0x0, Length = 0x139ba00.
我的xip.bin文件19.2M,按理说,在这里应该只是加载RAMIMAGE大小才对的,在实现multibin的过程中我并没有修改eboot的代码,不知道是不是要修改 BP_ReadData()的代码让它只读RAMIMAGE大小。
我的config.bib相关配置如下:
MEMORY
XIPKERNEL 80200000 00200000 RAMIMAGE
CHAIN 80400000 00001000 RESERVED
NK 80401000 02BFF000 NANDIMAGE
RAM 80401000 03BFF000 RAM
; RAM 8C340000 03CC0000 RAM
pdwXIPLoc 00000000 80400000 FIXUPVAR
; FLASH 92000000 00100000 RESERVED
; Common RAM areas
AUD_DMA 80002000 00000800 RESERVED
SDIO_DMA 80010000 00010000 RESERVED
ARGS 80020800 00000800 RESERVED
DBGSER_DMA 80022000 00002000 RESERVED
SER_DMA 80024000 00002000 RESERVED
;IR_DMA 80026000 00002000 RESERVED
;SLEEP 80028000 00002000 RESERVED
;EDBG 80030000 00020000 RESERVED
DISPLAY 80026000 00180000 RESERVED
CONFIG
AUTOSIZE=ON
COMPRESSION=ON
DLLADDR_AUTOSIZE=ON
KERNELFIXUPS=ON
PROFILE=OFF
RAM_AUTOSIZE=OFF
ROMFLAGS=0
ROM_AUTOSIZE=OFF
XIPSCHAIN=80400000
2.我在看eboot加载镜像的代码时,在BootloaderMain的一开始,就是执行KernelRelocate (pTOC),对eboot的全局变量进行重定位,当然原因是因为之前全局变量在ROM去不可写,因此把他们重定位到内存。按照我的理解,TOC是一个54字节的结构体,它记录的是镜像内的TOC条目的信息。而这个TOC条目是不是就是我们用viewbin工具看到的一个一个的record[]?TOCentry又是什么? 我看KernelRelocate 的代码,好像就是把所有的COPYentry全部都拷贝到目标地址,这些0COPYentry应该是在内存中紧接着TOC的条目。如果COPYentry就是对应recourd[]的话,那意思就是说把镜像里的各个模块拷贝到程序内存,这样理解好像不对吧?
3.烧写镜像后,现在加载速度也不是很理想,网上大部分人说加载主要的时间都是花在从FLASH加载镜像到RAM比较花时间,但是我发现每次系统加载完成后,执行到下面的时候也会卡很久,不知道什么原因!!
OEMIoControl: Unsupported Code 0x10100b4 - device 0x0101 func 45
OEMIoControl: Unsupported Code 0x101008c - device 0x0101 func 35
FMD_OEMIoControl: unrecognized IOCTL (0x71c24).
OEMIoControl: Unsupported Code 0x1010104 - device 0x0101 func 65
BINFS: RegisterVolume - Mounted volume '\BINFS'
OEMIoControl: Unsupported Code 0x10100c4 - device 0x0101 func 49
OEMIoControl: Unsupported Code 0x10100c4 - device 0x0101 func 49
|
|