======WINCE6.0下这些异常怎么定位解决---Exception 'Undefined Instruction'++++Exception 'Prefetch Abort' ======

xqhrs232 2009-05-15 11:24:30
======WINCE6.0下这些异常怎么定位解决---Exception 'Undefined Instruction'++++Exception 'Prefetch Abort' ======
...全文
1833 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
surelion 2011-11-08
  • 打赏
  • 举报
回复
真是如12楼和35楼说的那样啊。我的问题解决了。找得我好辛苦。低级错误。寄存器没有初始化。具体的说就是没有VirtualAlloc和VirtualCopy操作啊......
surelion 2011-11-04
  • 打赏
  • 举报
回复
我也一样遇到了类似的问题

Wince加载背光驱动程序时,出现异常的问题

BAK: DLL_PROCESS_ATTACH
BAK_Init: Before BL_MonitorThread!a//SureLion
BAK: BL_PowerOn : InitializeAddresses OK!//SureLion
BL_ON
Exception 'Data Abort' (4): Thread-Id=00a20002(pth=83f7c7f8), Proc-Id=00400002(pprc=818dd308) 'NK.EXE', VM-active=01f50002(pprc=83e574c8) 'udevice.exe'
PC=c09e1f28(backlight.dll+0x00001f28) RA=c09e2098(backlight.dll+0x00002098) SP=d02fe92c, BVA=00000000
Exception 'Raised Exception' (-1): Thread-Id=00a20002(pth=83f7c7f8), Proc-Id=00400002(pprc=818dd308) 'NK.EXE', VM-active=01f50002(pprc=83e574c8) 'udevice.exe'
PC=c003b738(k.coredll.dll+0x0001b738) RA=802494c8(kernel.dll+0x000064c8) SP=d02fe1c8, BVA=ffffffff
BAK: DLL_PROCESS_DETACH
pipixiong999 2011-03-11
  • 打赏
  • 举报
回复
可能是堆栈过深导致的,一个变量如果通过堆栈运行,这个变量的值赋值过大,就会导致这个问题
xiaosan5871 2010-09-29
  • 打赏
  • 举报
回复
Exception 'Prefetch Abort' (3): Thread-Id=03900002(pth=8528f000), Proc-Id=00400002(pprc=80fd1308) 'NK.EXE', VM-active=013b0002(pprc=86f047e4) 'udevice.exe'
PC=00000000(???+0x00000000) RA=c0772558(touch.dll+0x00002558) SP=d0c4fc90, BVA=00000000


严重关注中!!!
ccyu 2009-08-14
  • 打赏
  • 举报
回复
一般是程序有内存溢出或者越界访问,破坏了代码区,从而产生Undefined Instruction的错误。这个问题在能够直接访问物理内存的代码中最容易出现,例如bootloader或者驱动程序。
xiao_pi1981 2009-08-14
  • 打赏
  • 举报
回复
严重关注一下
zhj8727 2009-07-01
  • 打赏
  • 举报
回复
uping
riyan 2009-07-01
  • 打赏
  • 举报
回复
22楼的兄弟:这篇文章叫什么名字?能给个链接不?
rushonin 2009-06-23
  • 打赏
  • 举报
回复
FlushICache

This function is used to flush and invalidate the instruction cache. It is called by the kernel.

The kernel flushes and invalidates the instruction cache when a process loads, a process switch occurs, and CacheSync is called.

This function is deprecated. To flush and invalidate the instruction cache, use the OEMCacheRangeFlush function instead.

kernel在进程切换时做的事情,用户不用强制做吧. 
这种情况也可能是硬件上不稳定,比如DDR出错.
gooogleman 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 xqhrs232 的回复:]
引用 28 楼 codewarrior 的回复:
遇到过。注意一下I-Cache是否已经是脏数据,有时有必要强制刷新。



我们怎么刷I-CACHE?没有这个接口吧?!
[/Quote]

晕,怎么会没有,在bootloader那里就有。
xqhrs232 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 codewarrior 的回复:]
遇到过。注意一下I-Cache是否已经是脏数据,有时有必要强制刷新。
[/Quote]

我们怎么刷I-CACHE?没有这个接口吧?!
会思考的草 2009-06-23
  • 打赏
  • 举报
回复
遇到过。注意一下I-Cache是否已经是脏数据,有时有必要强制刷新。
rushonin 2009-06-22
  • 打赏
  • 举报
回复
看来很可能是驱动层的问题了.不过这种错误很难定位.
sunrain_hjb 2009-06-22
  • 打赏
  • 举报
回复
这种错误,很可能是某些驱动没有移植好。
我在移植WinCE6.0时也碰到过类似的问题,
主要原因是5.0和6.0的内存管理有很大差别。
楼主可以做一个最小系统看看有没有问题。
gooogleman 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 rushonin 的回复:]
帮顶,我也遇到这种问题.
Exception 'Prefetch Abort' (3): Thread-Id=06ef0002(pth=8dd24000), Proc-Id=00400002(pprc=8cadc308) 'NK.EXE', VM-active=06ee0002(pprc=8dc44bb0) 'osd.exe'
PC=c17a289c(???+0xc17a289c) RA=c03a2898(gwes.dll+0x00022898) SP=d4b2fdcc, BVA=c17a289c
Exception 'Data Abort' (4): Thread-Id=06ef0002(pth=8dd24000), Proc-Id=00400002(pprc=8cadc308) 'NK.EXE', VM-active=06ee0002(pprc=8d…
[/Quote]

我2440 跑wince6.0的时候也会这个哦。后来把nand flash 驱动的IOControl做一些处理就好了。
rushonin 2009-06-22
  • 打赏
  • 举报
回复
帮顶,我也遇到这种问题.
Exception 'Prefetch Abort' (3): Thread-Id=06ef0002(pth=8dd24000), Proc-Id=00400002(pprc=8cadc308) 'NK.EXE', VM-active=06ee0002(pprc=8dc44bb0) 'osd.exe'
PC=c17a289c(???+0xc17a289c) RA=c03a2898(gwes.dll+0x00022898) SP=d4b2fdcc, BVA=c17a289c
Exception 'Data Abort' (4): Thread-Id=06ef0002(pth=8dd24000), Proc-Id=00400002(pprc=8cadc308) 'NK.EXE', VM-active=06ee0002(pprc=8dc44bb0) 'osd.exe'
PC=8fd4e1b0(kitl.dll+0x000091b0) RA=8fd49748(kitl.dll+0x00004748) SP=d4b2fb5c, BVA=00000010
xqhrs232 2009-05-18
  • 打赏
  • 举报
回复
Quote=引用 22 楼 unsway123 的回复:]
呵呵。。哥们你是CE5的程序在CE6上面跑出现的问题吧。。。我遇到过。。可能不是很好改了、、、网上找找有个哥们写的很好的总结。。我前些时候出现这个问题就是根据那哥们的总结给改好的
[/Quote]

我的不是,我的是CE6。0的系统跑起来了但跑不了几下就挂!!!
unsway123 2009-05-18
  • 打赏
  • 举报
回复
呵呵。。哥们你是CE5的程序在CE6上面跑出现的问题吧。。。我遇到过。。可能不是很好改了、、、网上找找有个哥们写的很好的总结。。我前些时候出现这个问题就是根据那哥们的总结给改好的
xqhrs232 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 codewarrior 的回复:]
Generally speaking, prefetch abort happens when it tries to jump invalid address.
Clear IMGNODEBUGGER and run “makeimg” to enable native debugger at boot time. Once you catch it in native debugger, you can see if its native code or managed from the callstack.
[/Quote]

没看怎么明白!
会思考的草 2009-05-17
  • 打赏
  • 举报
回复
Generally speaking, prefetch abort happens when it tries to jump invalid address.
Clear IMGNODEBUGGER and run “makeimg” to enable native debugger at boot time. Once you catch it in native debugger, you can see if its native code or managed from the callstack.
加载更多回复(19)

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧