首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

nk.bin烧写地址,该如何处理

2012-04-17 
nk.bin烧写地址因为板子的网卡用不了,所以我只能用烧写器烧写nk.bin, 但是烧写完后发现nk.bin不能起来。具

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源代码,把内核拷到哪里了

热点排行