jonathandj
驱动牛犊
驱动牛犊
  • 注册日期2009-12-25
  • 最后登录2010-05-19
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2099回复:2

Debug下编译的NK.bin正常,但是Release下出现异常

楼主#
更多 发布于:2010-02-05 18:16
异常如下:
* Exception (user) : TLB (load or instruction fetch) *

CAUSE    = 0x00008008  STATUS   = 0x00000002

EPC      = 0x811222f8  ERROREPC = 0x00982500

BADVADDR = 0x00000010
jonathandj
驱动牛犊
驱动牛犊
  • 注册日期2009-12-25
  • 最后登录2010-05-19
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-02-06 11:15
请高手指点下,觉得应该是在运行.s汇编程序的时候,因为没有打印出任何消息。
jonathandj
驱动牛犊
驱动牛犊
  • 注册日期2009-12-25
  • 最后登录2010-05-19
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-02-10 14:58
终于搞定了,原来又是小问题引发的血案。
以前想搞清楚NK.exe的启动顺序,将KernelInit()中的
void KernelInit (void)
{
#ifdef DEBUG
    g_pNKGlobal->pfnWriteDebugString (TEXT("Windows CE KernelInit\r\n"));
#endif
    APICallInit ();         // setup API set
    HeapInit ();            // setup kernel heap
    InitMemoryPool ();      // setup physical memory
    PROCInit ();            // initialize process
    VMInit (g_pprcNK);      // setup VM for kernel
    THRDInit ();            // initialize threads
    MapfileInit ();

#ifdef DEBUG
    g_pNKGlobal->pfnWriteDebugString (TEXT("Scheduling the first thread.\r\n"));
#endif
}

的#ifdef DEBUG去掉了,后来觉得是无所谓的就没有改回去。
但是Release版本下,估计是g_pNKGlobal这个变量没有初始化,所以导致出错了,将其改回去就可以了。
游客

返回顶部