平台:S3C2440+WINCE5。0+EBOOT
问题1:在Eboot输出的调试信息中TOC的ID[1],打印出来的信息中dwLoadAddress:0x80200000 dwJumpAddress:0x8037cf88
其中dwLoadAddress是把nk.bin拷贝到RAM的虚拟地址,dwJumpAddress应该就是EBOOT完成拷贝之后,跳转到这个地址
去执行,问题是拷贝内核到RAM地址和跳转去执行的内核地址是不一样的。0x80200000 这个地址是在config.bib中确定,
那么dwJumpAddress又是在那里确定,为什么这两个地址可以不一样?
问题2:在boot.bib中 BINFS 0x80080000 00021000关于BINFS地址的设置又有什么需要注意的?跟什么有关系,怎么换算,它的
大小是如何确定的,跟内核大小有什么关系?
------解决方案--------------------
第二个问题,BINFS 0x80080000 00021000中是保留了一段内存给BOOTPART库使用,
大小与NK无关,跟FLASH的大小有关,具体计算方法如下:
BOOL BP_Init(
LPBYTE pMemory,
DWORD dwSize,
LPCTSTR lpActiveReg,
PPCI_REG_INFO pRegIn,
PPCI_REG_INFO pRegOut);
dwSize
[in]This value should be at least the size of one flash block plus one sector plus sectors divided by blocks multiplied by eight, or as expressed as a mathematical statement: block + sector + (sectors/block) * 8.
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
EBOOT最后跳转到NK.bin中,是NK.exe的入口处,并非NK的起始地址,
一般都是在起始地址之后的一个地址。
你可以通过viewbin nk.bin查看这个起始地址。
------解决方案--------------------
Eboot下载的是bin,但烧进Flash的是nb0,解压后烧进去的
------解决方案--------------------
我也想知道0x30038000这个地址怎么来的……
------解决方案--------------------
Binfs跟ROM Only File System应该是完全不同的两回事,
Binfs是一种文件系统,跟FAT之类是一个概念;而ROM Only File System则是OS选用的是RAM,RAM+ROM还是ROM Only文件系统中的一个,而且一般这里的ROM文件系统也不会用Binfs,所以说两个之间可以说基本上没有什么关系