完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
syswatch低功耗下模式下的表现形式 想请教一下syswatch组件运行后,当MCU分别进入睡眠模式 和 停止模式 以及standby模式后,syswatch组件分别有什么影响。也就是进入低功耗模式时syswatch的表现。 进入低功耗模式后,看门狗会不会停止计数 另外,还有几点不是很明白,文档中提到,当检测到有线程发生异常阻塞时,是指该线程阻塞MCU吗,不是线程进入阻塞态吧,感觉上应该理解为是一旦有线程一直抢占住CPU长达一定时间就判断该线程异常。这儿的发生异常阻塞还有别的什么情况异常阻塞吗。 |
|
相关推荐
7个回答
|
|
对低功耗模式的行为不太清楚
感觉上应该理解为是一旦有线程一直抢占住CPU长达一定时间就判断该线程异常 是这样理解的,但这个阻塞的概念要明确,如某个线程调用while(1){}死循环执行代码,会一直阻塞该线程,导致优先级低于该线程的其他线程一直得不到运行;其他调用类似rt_sem_take实现“阻塞”的操作为主动让出CPU,内核的延时函数也会让出CPU,内核会转而调度其他就绪态的线程,不属于异常阻塞 IDLE为最低优先级线程,IDLE一直运行为正常情况,IDLE一直得不到运行才需要考虑是否发生异常阻塞 |
|
|
|
有点明白了,就是任何一个线程不能一直被调度器调度霸占MCU运行,它要么让出给低优先线程运行一会儿,要么让出给IDLE线程运行一会儿,反正就是不能它一直被调度运行,即使比它高优先级的线程全部处在等待条件执行,这时它也必须出让给IDLE线程运行一会儿。
IDLE为最低优先级线程,IDLE一直运行为正常情况,IDLE一直得不到运行才需要考虑是否发生异常阻塞 理论上讲,这儿的IDLE一直得不到运行也可能是正常的情况,比如比IDEL优先级高的两个线程来回切换运行,导致IDEL得不到执行,这时也属于正常运行。 |
|
|
|
可以简单认为是个软件看门狗吧,在低优先级里面【喂狗】,如果低优先级线程IDLE 一直得不到执行,就咬狗。
建议在深睡眠、StandBy模式,冻结硬件看门狗,STM32的硬件看门狗,在 STOP、StandBy模式下默认不关闭,造成咬狗重启,这个需要修改STM32 的 option byte【选项字节】 软件看门狗,在 STOP、StandBy模式下,系统都停掉了,不会咬狗,tick 不改变。 |
|
|
|
syswatch是个软件看门狗吗,syswatch组件有没有启动硬件看门狗,我看配置过程好像开启了硬件看门狗。
|
|
|
|
没有用过这个 软件包,不过无论硬件还是软件看门狗,都一样的
|
|
|
|
是调用硬件看门狗的一个看守组件,会接管喂狗操作,不需要手动考虑喂狗
当系统hardfault异常,或者某个线程异常阻塞时可以控制系统重启,后者是简单的看门狗操作不能实现的 |
|
|
|
对于低功耗模式下syswatch的表现不太清楚。
个人理解:这个组件作用是通过赋予最高优先级和获得看门狗定时器的操作权限(其它线程就不要用看门狗了,统一由syswatch接管),syswatch因为有最高权限,所以可以中断其它所有线程的能力;通过监视其它线程的属性(与时间有关的超时参数)当其违反了,就采取一些措施(暂停/杀死线程,软重启/硬重启)。个人认为,因为操作系统层面一个线程对其它线程的处理除了信号,完成量之外的手段较少(挂起和恢复系统不推荐,直接杀死可能没有考虑其它相关的资源等待),如果这块能完善,无论是syswatch还是自己设计一个监护线程都是大有裨益的! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1165 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
4266 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1583 浏览 0 评论
2386 浏览 0 评论
1796 浏览 0 评论
75795 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-1 18:33 , Processed in 0.779016 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号