遇到两个怪问题

Ei 2011-10-11 09:34:23
平台2451 CE6.。。
1.在OEMinit中 会如下一段代码,正常第一次启动正常,但是进行IOCTL_HAL_REBOOT (softreset)后,执行该段代码是正常的几十倍的周期。
void delayLoop(int count)
{
volatile j;
for(j = 0; j < count; j++) ;
}

2.实现HIVE,即注册表能够正常保存。但是无线首选网络不能保存。。。。。。
选择AP连接的时候 会有如下类似的错误。。
Exception 'Data Abort' (4): Thread-Id=02900002(pth=83e50300), Proc-Id=00400002(pprc=826f8308) 'NK.EXE', VM-active=00400002(pprc=826f8308) 'NK.EXE'
PC=c00726b8(k.coredll.dll+0x000526b8) RA=c0032f00(k.coredll.dll+0x00012f00) SP=d293f320, BVA=d295f000
Exception 'Data Abort' (4): Thread-Id=07370002(pth=880d6750), Proc-Id=00400002(pprc=826f8308) 'NK.EXE', VM-active=02250002(pprc=83d82000) 'udevice.exe'
PC=c00828d0(k.coredll.dll+0x000628d0) RA=00000000(???+0x00000000) SP=d38fef2c, BVA=d397f000
望遇到过的朋友告知。。
...全文
292 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
鸿雁 2011-10-22
  • 打赏
  • 举报
回复
顶玩起来
Ei 2011-10-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sunrain_hjb 的回复:]
1.你是如何确定10几倍的延时是这个delay循环引起的呢?建议你在它的前后控制一个IO,然后用示波器观察IO的变化,从而确定它真正延时的时间。如果真是变慢了,那就要检查下重启后CPU的时钟配置了。
2.很早之前,在TCC8902上调试过一款SDIO的WIFI模块,没有碰到你说的这个问题。建议你安装R3和最新补丁,Clean Sysgen后再看看。
[/Quote]
第一个问题已经解决了,
我已经打到了R3 + 2011 9月的patch。也重新新建了工程试过。
woshi_ziyu 2011-10-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 aaa_tnt 的回复:]

引用 9 楼 sunrain_hjb 的回复:
1.你是如何确定10几倍的延时是这个delay循环引起的呢?建议你在它的前后控制一个IO,然后用示波器观察IO的变化,从而确定它真正延时的时间。如果真是变慢了,那就要检查下重启后CPU的时钟配置了。
2.很早之前,在TCC8902上调试过一款SDIO的WIFI模块,没有碰到你说的这个问题。建议你安装R3和最新补丁,Clean Sysgen后再看……
[/Quote]
++

解决方法???
sunrain_hjb 2011-10-21
  • 打赏
  • 举报
回复
1.你是如何确定10几倍的延时是这个delay循环引起的呢?建议你在它的前后控制一个IO,然后用示波器观察IO的变化,从而确定它真正延时的时间。如果真是变慢了,那就要检查下重启后CPU的时钟配置了。
2.很早之前,在TCC8902上调试过一款SDIO的WIFI模块,没有碰到你说的这个问题。建议你安装R3和最新补丁,Clean Sysgen后再看看。
Ei 2011-10-17
  • 打赏
  • 举报
回复
诶,自顶下。。。还是没头绪
Ei 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 woshi_ziyu 的回复:]
1.
进行IOCTL_HAL_REBOOT后,执行delayLoop应该是正常的周期,监视方法有误吧

2.没有遇到过

k.coredll.dll+0x000628d0对应的是哪个函数呢?
[/Quote]
0001:0006188c DWORDToBigEndian 1006288c f k.coredll_ALL:uint4.obj
0001:000618c4 DWORDFromBigEndian 100628c4 f k.coredll_ALL:uint4.obj
0001:00061904 xxx_SystemParametersInfo_GWE 10062904 f k.coredll_ALL:tsystemparametersinfo.obj

我自己用代码 添加首选列表,调用WZCSetInterfaceEx 也会有上述Data Abort, IDA过wzcsapi.dll
也没看到调用DWORDFromBigEndian。。这个感觉没有什么联系的函数。
当我遇上-你 2011-10-12
  • 打赏
  • 举报
回复
重新定制个系统看下呢,我之前有遇到,重新定制就ok,还有时间问题,如果有输出最后用示波器测试下
woshi_ziyu 2011-10-12
  • 打赏
  • 举报
回复
1.
进行IOCTL_HAL_REBOOT后,执行delayLoop应该是正常的周期,监视方法有误吧

2.没有遇到过

k.coredll.dll+0x000628d0对应的是哪个函数呢?

tan0998 2011-10-12
  • 打赏
  • 举报
回复
不懂,帮顶
Ei 2011-10-11
  • 打赏
  • 举报
回复
我这个for循环 在CE5 下 softreset后,也是正常的。
AndyZhang 2011-10-11
  • 打赏
  • 举报
回复
别写for循环了,用
static void delay_ms(DWORD tmp_time)
{
DWORD start;
DWORD time_i=0;
start=GetTickCount();
while(time_i<=tmp_time)
{
time_i=GetTickCount()-start;
}

}

或者
static void delay_ns(DWORD tmp_time)
{
volatile register int i;
for (i = 0; i < (tmp_time); i++);
}

Ei 2011-10-11
  • 打赏
  • 举报
回复
汗。。自顶下。。

19,520

社区成员

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

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