完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.系统有数个任务,开机运行正常,但是运行一段时间(偶发不确定具体时间,反正至少好几个小时~1天),有一个显示任务Dis_task不运行了,其他任务(优先级有比显示任务高的,也有低的)正常。2.显示任务Dis_task调用OSPendMulti()请求多个内核对象:一个是RTC中断发送的时间消息队列Dis_TASK_RTC;一个是按键扫描任务发送的按键消息队列Dis_TASK_KEY。注:串口任务 UART_DEAL_task没有使用。
3.在统计任务的钩子函数中print所有任务的任务控制块的相关成员变量和消息队列的使用情况: //打印所有任务的相关信息(下边的代码与任务数量一样多) p = &(任务控制块); printf("rn %s rn",p->NamePtr); //打印任务名称 printf(" #CtxSw: %d rn",p->CtxSwCtr); //任务执行次数 printf(" #任务的CPU使用率: %.2f rn",((float)p->CPUUsage)/100); //任务CPU使用率 printf("Core_Pageused/sum/free:%d/%d/%d usage:%d %% .任务状态:%d rn",p->StkUsed,p->StkSize, p->StkFree,(p->StkUsed*100)/p->StkSize,p->TaskState); //打印堆栈使用情况 //CPU总使用率 printf("rnrn"); printf("CPU总使用率:%f%%rn",(float) OSStatTaskCPUUsage / 100); //CPU使用率 printf(" CPU Speed: %ld MHz rn",BSP_CPU_ClkFreq() / 1000000L); //主频 printf("rnrn"); //插入换行 //消息队列 printf("总消息池剩余/已使用/最大使用量:%d/%d/%d rn",OSMsgPool.NbrFree,OSMsgPool.NbrUsed,OSMsgPool.NbrUsedMax); printf("RTC实时中断的消息池总量/已使用/最大使用量:%d/%d/%d rn",Dis_TASK_RTC.MsgQ.NbrEntriesSize,Dis_TASK_RTC.MsgQ.NbrEntries,Dis_TASK_RTC.MsgQ.NbrEntriesMax); printf("按键扫描任务的消息池总量/已使用/最大使用量:%d/%d/%d rn",Dis_TASK_KEY.MsgQ.NbrEntriesSize,Dis_TASK_KEY.MsgQ.NbrEntries,Dis_TASK_KEY.MsgQ.NbrEntriesMax); 4.通过查看print打印的内容发现的现象: 4.1开机运行正常,运行一段时间(偶发不确定具体时间,反正至少好几个小时~1天)后,仅仅显示任务Dis_task不运行,就像不存在一样。其他任务都正常。由于显示任务Dis_task不运行了,但RTC中断不断的发送消息队列,当消息队列满了之后进入while死循环并打印“消息队列已满”。 4.2所有任务的堆栈都有很大余量,应该不是堆栈问题。 5.请求 希望给点bug排查的思路或手段。多谢!!! /*****************正常打印情况*********************** 串口任务 UART_DEAL_task #CtxSw: 62 #任务的CPU使用率: 0.00 Core_Pageused/sum/free:36/128/92 usage:28 % 显示任务 Dis_task #CtxSw: 49920 #任务的CPU使用率: 1.43 Core_Pageused/sum/free:74/128/54 usage:57 % 按键扫描任务 KEY task #CtxSw: 1231178 #任务的CPU使用率: 0.30 Core_Pageused/sum/free:32/128/96 usage:25 % 定时任务 uC/OS-III Timer Task #CtxSw: 133110 #任务的CPU使用率: 0.11 Core_Pageused/sum/free:54/128/74 usage:42 % 空闲任务 uC/OS-III Idle Task #CtxSw: 2223574 #任务的CPU使用率: 88.02 Core_Pageused/sum/free:18/128/110 usage:14 % 统计任务 uC/OS-III Stat Task #CtxSw: 237821 #任务的CPU使用率: 9.23 Core_Pageused/sum/free:129/256/127 usage:50 % 时钟节拍任务 uC/OS-III Tick Task #CtxSw: 2495831 #任务的CPU使用率: 0.42 Core_Pageused/sum/free:37/128/91 usage:28 % CPU总使用率:16.290001% CPU Speed: 72 MHz 总消息池剩余/已使用/最大使用量:200/0/0 RTC实时中断的消息池总量/已使用/最大使用量:50/0/0 按键扫描任务的消息池总量/已使用/最大使用量:50/0/0 *****************************************************/ /******************异常时************************ **********************************/ |
|
相关推荐
1个回答
|
|
你用的是不是原子大哥的移植好的模板?
|
|
|
|
只有小组成员才能发言,加入小组>>
795 浏览 0 评论
1154 浏览 1 评论
2530 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2713 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1074浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 12:08 , Processed in 1.126270 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号