完善资料让更多小伙伴认识你,还能领取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之类的操作吧。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
804 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】串口测试标准输入输出重定向
840 浏览 0 评论
2789 浏览 0 评论
1396 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】以搭积木方式实现简单的互联型家庭网关
1158 浏览 0 评论
24864 浏览 21 评论
【参与有奖】激扬代码,千元现金!RT-Thread主题征文大赛
55810 浏览 88 评论
249881 浏览 69 评论
【资料活动】从入门到提升,嵌入式linux常用电子书教程合集(共47本)
211724 浏览 62 评论
野火 ISO STM32资料合集(程序、原理图、项目初高级篇)
17065 浏览 41 评论
12589 浏览 48 评论
43776 浏览 26 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 粤ICP备14022951号 )
GMT+8, 2023-12-13 04:21 , Processed in 0.280491 second(s), Total 33, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:粤 B2-20160233 工商网监 湘ICP备2023018690号