完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好! 我在阅读RT-Thread操作系统源代码时,有个疑问就是什么时候使能操作系统心跳中断,我记得ucos操作系统需要在第一个运行的任务中启动操作系统心跳定时器的中断,这样才能确保操作系统调度正常运行。而我在RT-Thread操作系统中没有发现这样的处理方式,如果在操作系统的初始化函数初始化之前使能时钟定时器,那么在中断产生的时候rt_current_thread变量可能还没有设置有效值,rt_current_thread会是一个指向地址0的指针。只是rt_tick_increase函数忽略了rt_current_thread=0x0时的情况。这样感觉程序运行起来就会有点瑕疵了,我查了半天的源代码发现好像有很多的移植工程都是过早的使能了定时器中断,不知道我的理解对不对,或者有什么地方遗漏了? |
|
相关推荐
2个回答
|
|
在RT-Thread中,系统启动阶段cpsr的中断标志是关闭的,也就是说中断是关闭的。
只有当调度器开始调度第一个任务时,在switch_to里面把第一个任务的堆栈pop出来时,cpsr, spsr中断标志才被打开,这时才可以进入中断处理程序,响应心跳中断。 |
|
|
|
我看了一下程序,确实是这样,只是我的工程在汇编阶段过早的打开cpsr, spsr中断标志,才出现这样的问题,谢谢提示。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
741 浏览 0 评论
3557 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2435 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2881 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
30972 浏览 11 评论
72734 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 00:23 , Processed in 0.542880 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号