nk.bin烧写地址
因为板子的网卡用不了,所以我只能用烧写器烧写nk.bin, 但是烧写完后发现nk.bin不能起来。具体情况是这样的。
volatile DWORD * pdwStartRAM;
volatile DWORD * pdwFlash;
DWORD i;
DWORD CRC;
pdwStartRAM = (volatile DWORD *)dwPhysStart;
pdwFlash = (volatile DWORD *)(FLASH_BIN_START);
if ( *(pdwFlash+16) == 0x43454345 )
{
EdbgOutputDebugString("Found pTOC signature.\n");
// Copy Flash image into RAM
EdbgOutputDebugString("Copying FLASH image into RAM.\r\n");
//memcpy((LPVOID)pdwStartRAM,(LPVOID)pdwFlash,dwPhysLen);
pdwStartRAM = (volatile DWORD *)dwPhysStart;
pdwFlash = (volatile DWORD *)(FLASH_BIN_START+0xF80000);
for (i = 0; i < dwPhysLen / 4; i++)
{
*pdwStartRAM = *pdwFlash;
pdwStartRAM++;
pdwFlash++;
}
}
这是一段将nk.bin从flash拷贝到内存的代码。其中FLASH_BIN_START是0xA0080000,对应的物理地址是0x80000, 然后我把nk。bin就烧写到norflash的这个地址,可是运行的时候提示*(pdwFlash+16)这个地址的值并不是0x43454345,请问这是什么原因呢?难道只能用pb下载吗? 如果我烧nk.bin又该怎么做呢? 谢谢了
[解决办法]
在你的config.bib
文件中加入
ROMSTART=
ROMWIDTH=
ROMSIZE=
让PB生成nb0文件,然后你用烧写器把nb0烧进去。
[解决办法]
if ( *(pdwFlash+16) == 0x43454345 )
改成
if ( *(pdwFlash+ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE)
头文件是romldr.h
[解决办法]
nk.bin是没法直接在内存中run的,必须通过romimage或者自己在eboot下实现一个类似romimage的程序,吧nk.bin转成nk.nb0
[解决办法]
这个是这样的:
在eboot中,你需要把内核拷贝到内存中,然后跳转到相应的位置
你看看你的eboot源代码,把内核拷到哪里了