当前位置: 代码迷 >> WinCE >> nk.bin烧写地址,该如何处理
  详细解决方案

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

热度:57   发布时间:2016-04-28 13:20:18.0
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源代码,把内核拷到哪里了
  相关解决方案