社区
嵌入开发(WinCE)
帖子详情
WINCE下怎么诊断一个驱动有没存在资源锁死的问题?就是多个线程对同一个资源的访问同步互斥没做好。
xqhrs232
2009-11-14 10:21:25
WINCE下怎么诊断一个驱动有没存在资源锁死的问题?就是多个线程对同一个资源的访问同步互斥没做好。
...全文
179
33
打赏
收藏
WINCE下怎么诊断一个驱动有没存在资源锁死的问题?就是多个线程对同一个资源的访问同步互斥没做好。
WINCE下怎么诊断一个驱动有没存在资源锁死的问题?就是多个线程对同一个资源的访问同步互斥没做好。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ruritanian
2009-11-21
打赏
举报
回复
不是debug版本一样支持断点啊,我经常在retail版本下调试的
qthsrs232
2009-11-21
打赏
举报
回复
[Quote=引用 8 楼 ruritanian 的回复:]
不用debug版本的,但是需要有kitl
[/Quote]
不DEBUG,怎么支持断点,没有断点怎么看STACK和SFR/内存/变量等等的情况
ruritanian
2009-11-21
打赏
举报
回复
为什么看不到?只要有symbol就能看到,当然,release版本有些代码是优化过的,有些变量是看不到的
qthsrs232
2009-11-21
打赏
举报
回复
[Quote=引用 31 楼 ruritanian 的回复:]
不是debug版本一样支持断点啊,我经常在retail版本下调试的
[/Quote]
RELEASE版本看不到STACK和SFR/内存/变量等等的情况吧!VS2005不是DEBUG很多东西看不到的.
xqhrs232
2009-11-16
打赏
举报
回复
觉得还是处理的算法存在某种缺陷!!!那种算法更好呢?
xqhrs232
2009-11-16
打赏
举报
回复
初步发现是一直通不过校验,所以处理线程没数据处理,所以界面会没有东西显示.
但为什么会这样呢?通不过校验怎么会一直发生呢?想不明白?
为什么有时候又是可以通过校验使得材料线程有数据可以处理.
xqhrs232
2009-11-16
打赏
举报
回复
[Quote=引用 23 楼 oneonce 的回复:]
那你设置一下县城的优先级试一下,我在6410上是碰到一运行就卡的情况,设置一下县城优先级。
SetThreadPriority(THREAD_PRIORITY_BELOW_NORMAL);//使用THREAD_PRIORITY_BELOW_NORMAL
[/Quote]
这个应该不是解决问题的根本办法!
OneOnce
2009-11-16
打赏
举报
回复
那你设置一下县城的优先级试一下,我在6410上是碰到一运行就卡的情况,设置一下县城优先级。
SetThreadPriority(THREAD_PRIORITY_BELOW_NORMAL);//使用THREAD_PRIORITY_BELOW_NORMAL
xqhrs232
2009-11-16
打赏
举报
回复
[Quote=引用 21 楼 oneonce 的回复:]
是一运行就很卡? 还是运行了一段时间就很卡。如果是前者可能还好办,后者的话可能就比较棘手。
[/Quote]
两种情况都存在!!!
OneOnce
2009-11-16
打赏
举报
回复
是一运行就很卡? 还是运行了一段时间就很卡。如果是前者可能还好办,后者的话可能就比较棘手。
xqhrs232
2009-11-16
打赏
举报
回复
监视了系统了内存,内存的LOAD百分比是没有什么变化的,什么内存泄漏是不存在的.
91program
2009-11-16
打赏
举报
回复
不打印,说明出现问题,看看从那里开始不再打印信息
xqhrs232
2009-11-16
打赏
举报
回复
[Quote=引用 16 楼 91program 的回复:]
打印消息,来看是否存在死锁
[/Quote]
我现在就是通过打印消息发现死锁了,我在接收线程跟处理消息里面都打印消息,接收里面是会一直打印的,但处理里面打印了一段时间就不打印了.
还发现处理线程不打印消息的时候,系统的CPU使用率从40%直线降为26%,不知道为什么.
guopeixin
2009-11-16
打赏
举报
回复
[Quote=引用 17 楼 xqhrs232 的回复:]
CETK只能测试CE自带的驱动而不能测试写的流驱动吧?
[/Quote]
可以的,遵照tux的框架自己写就可以了
可以使用向导创建
xqhrs232
2009-11-16
打赏
举报
回复
通过打印消息觉得应该不是资源锁死的问题,因为两个线程的消息都有打印.应该是收到的数据一直通不过必要的校验,所以界面没有更新像卡死了一样.
zwtchy123
2009-11-16
打赏
举报
回复
bang ding !!!
qthsrs232
2009-11-14
打赏
举报
回复
CE下那个远程工具可以用这样的功能?
xqhrs232
2009-11-14
打赏
举报
回复
听说用链表可以很好地处理我这个问题,但用链表就不存在同步互斥的问题吗?
CE串口驱动缓冲区数据的管理是个好例子,一个头指针,一个尾指针来弄.但也存在同步互斥的问题啊!
这两种方法那个更好?我现在的缓冲区只是简单地用数组来做的.谁要访问就谁先占住,但没多久就卡死了,接收到了数据,但没处理了.应该是同步互斥没做好!!!
xqhrs232
2009-11-14
打赏
举报
回复
我的驱动是一个线程接数据到缓冲区,处理线程处理缓冲区里面的数据.两个线程都会改变缓冲区的内容.接收线程把数据接到缓冲区后面,处理线程把处理完的数据从缓冲区移除掉.
加了关键区的限制,但限制不住的感觉,过不了多久驱动就卡死了,整个系统的CPU使用率也降下了不少.
我的接收线程是一个中断线程,频繁地被调用到,驱动执行的频率还是很高的,处理线程也需要不断地处理.
xqhrs232
2009-11-14
打赏
举报
回复
我现在有一个驱动就是这样的情况.运行了一段时间就卡死了.但不知道卡在那里了,线程间也做了同步互斥的处理,但觉得没处理好,不知道怎么找到这个问题的所在.
加载更多回复(13)
WinCE
多
线程
并发
同步
安全不容忽视
Windows CE是微软公司推出的
一个
多任务的操作系统,
WinCE
实现多任务的方法是采用多
线程
和多进程机制。一般来说,每一种使用多
线程
、多进程的操作系统都或多或少的会
存在
着并发
线程
的安全
问题
。在上周我所负责的
WinCE
...
面经——嵌入式常见面试题总结100题(上)
1,字符型
驱动
设备是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件? 2,写
一个
中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的? 3,自旋锁和信号量在
互斥
使用...
linux
驱动
面试题整理
1、字符型
驱动
设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件? 答:mknod命令结合设备的主设备号和次设备号,可创建
一个
设备文件。 评:这只是其中一种方式,也叫手动创建...
驱动
面试题总结
1、字符型
驱动
设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件? 答:mknod命令结合设备的主设备号和次设备号,可创建
一个
设备文件。 评:这只是其中一种方式,也叫手动...
linux
驱动
面试题
1、字符型
驱动
设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件? 答:mknod命令结合设备的主设备号和次设备号,可创建
一个
设备文件。 评:这只是其中一种方式,也叫手动创建...
嵌入开发(WinCE)
19,502
社区成员
41,568
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章