|
谢谢“yangcuncunzhang”!,在Eboot.bin中我确实找到了:
MEMORY
;-----------------------------------------------------
; NAME ADDRESS SIZE TYPE
;-----------------------------------------------------
PTS 80000000 00020000 RESERVED ; Page Table : 128 KB
ARGS 80020800 00000800 RESERVED ; BSP Args : 2 KB
EBOOT 80030000 00080000 RAMIMAGE ; Eboot Image : 512 KB
RAM 800B0000 00010000 RAM ; RAM : 64 KB
BINFS 800C0000 00030000 RESERVED ; Bin FS : 192 KB
STACK 800FC000 00004000 RESERVED ; Stack : 16 KB (sharing with Step Loader)我的理解是Eboot.bib定义的这个表(上表只是部分代码……)是在Eboot运运行阶段对虚拟地址的分配,当真正进入操作系统后,这个就没用了(好像还有个共享区,是ARGS吗?),重新对虚拟地址进行分配靠的是config.bib,这样理解对吗?那g_OEMAddresstable,还有platform.bib,好像还有project.bin又都是什么关系呢?关键是config.bin和g_OEMAderesstable的关系,这是问题一!
这两天一直再看Eboot的代码,我理解的是:先是USB OTG将读的数据放入一段缓存,然后再通过读数据的前7个字节的内容,从而判断出是.bin,.nb0等,从而进入相应的下载程序。比如判断出事.bin就进入static BOOL DownloadBin (LPDWORD pdwImageStart, LPDWORD pdwImageLength, LPDWORD pdwLaunchAddr)这个函数进行下载操作。然后再根据‘loader.h’和‘image_cfg.h’中定义的地址下载到相应的地方。现在的问题是:因为要下载的内容有:Nboot\Eboot\NK,同样都是.bin文件,到底是什么时候区分出来的呢?这是第二个问题。
我现在的思路就是'logo.bin'通过USB OTG放到缓存后,EBOOT如何才能把它与Nboot.bin,Eboot.bn,NK.bin区分开来,然后我在‘loader.h’和‘image_cfg.h’也定义相应的下载地址和类型,然后执行下载操作。这样的思路应该没问题吧?求教达人啊
今天继续看代码……
|
|