完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
rt-smart 中断阻塞问题如何解决?
该问题是怎么引起的? 为了测试rt-smart的实时性,测试了一下中断的稳定性。 用systick的1ms中断做测试源。 平时都正常的,但是发现打印时,波形老是抖动,最后发现,MSH打印阻塞了中断。如下图。 黄线是MSH输出测试脚的波形 蓝线是中断里翻转IO的波形 可以明显看出MSH打印如果和中断重叠的话,中断被阻塞了。 重现步骤 只要MSH重复打印,就可以引起 报错信息 跟踪发现,阻塞原因是lwp_console.c文件里,打印消息前,中断被关闭了。 然而rt_device_write()恰恰是一个阻塞型的发送,这就造成了中断的长时间延误,影响了OS整体的延时。 LWP文件夹里,大量的关闭中断,是否都是必须的?还有其他阻塞型函数吗?如何修复更好? rt-smart是要保留实时性的,中断稳定可靠是不能丢的。 讨论一下,如何修改。 |
|
相关推荐
5个回答
|
|
finsh 打印可以修改,这些代码里就只是把 finsh 当一个调试口在用,互斥资源直接关中断为了省事,没有仔细设计过。
另外,cortex-a 进个中断都费劲,要什么实时性。 rt-smart 比 linux/windows 实时性好就行了,想要实时性, cortex-r + 裸机。 |
|
|
|
用中断没发现什么问题。这么高级的芯片,不追求一下实时性,太浪费了。
|
|
|
|
系统实时性的要求与业务需求紧密相关,并不是实时性越高就越好。
|
|
|
|
中断里执行了阻塞操作,造成了其他中断的阻塞。更严重的是,他执行阻塞操作前,还关了中断,虽然后面他还原了。对于其他中断,体现出来的效果就是中断阻塞。
如果不改,假如我开一个100us的硬件定时器,那么这个100us就无法保证了。 |
|
|
|
不允许中断里进行阻塞操作啊,从理论上就避免这样操作。
中断里关中断倒是有些场景是可以用的,但是当中断操作太多执行时间过长了,这个中断函数就有调整优化的必要了。 rtt 里确实大量使用了关全局中断,造成关中断时间太多,很久之前我专门写过这个主题。在我的 serealX 文章里就尝试在串口驱动里减少全局中断关闭,仅仅关闭串口中断。这样在关闭串口中断的时候,还不影响其它外设中断响应。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
795 浏览 0 评论
4743 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2605 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2949 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31683 浏览 11 评论
73063 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 08:07 , Processed in 0.685594 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号