完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
|
可能是有高优先级线程占死CPU不释放,使用syswatch可以有效防止线程死机
|
|
|
|
以下是根据你提供的截图,开展的一段简单分析思路,供参考。
看到你的log中,tidle0线程的Error是-2,表示-RT-ETIMEOUT。 使用list_thread或者ps命令,打印线程的信息,会打印变量thread->error,即线程error状态。 在RT的源代码中,使得thread->error为-2的语句只有5条。 thread->error = -RT_ETIMEOUT; 使用CTRL+H在整个工程中搜索,分别在rt_mutex_take、rt_event_recv、rt_mb_recv、rt_mq_recv和rt_thread_timeout函数中。 因此,你重点看一下,你设置的hook函数中到底发生了什么?是不是你的钩子函数存在等待某种资源的操作? 钩子函数必须足够简单,且不要存在阻塞(Block)或者挂起(Suspend)的操作。 另外,值得注意的还有以下两点: rt_thread_idle_sethook函数只需要调用一次,设置钩子函数即可,即将某个函数指针写入到idle_hook_list数组中。 idle线程中,会依次从idle_hook_list数组中取出函数指针变量,当它不为空,则调用钩子函数。调用钩子函数完毕后,再执行rt_defunct_execute函数释放各种资源。 从你的描述来看,你设置钩子函数使得led按照tick闪烁,应该是在hook中调用了rt_thread_delay之类的操作吧。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
754 浏览 0 评论
3703 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2459 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2892 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31079 浏览 11 评论
72771 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 14:37 , Processed in 0.589236 second(s), Total 44, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号