您的位置 首页 被动

裸奔的双使命体系-嵌入式微体系连载之十一

2014年春节里的一天上午,msOS QQ群里面讨论的很激烈,“传说中的火枪手”认为msOS-Mcu51已经很好了,对于msOS-Stm32引入uC/OS-II意见比较大。虽然他也用过uC/OS-

  2014年新年里的一天上午,msOS QQ群里边评论的很剧烈,“传说中的火枪手”以为msOS-Mcu51现已很好了,关于msOS-Stm32引进uC/OS-II定见比较大。尽管他也用过uC/OS-II,但并不喜爱,有一种不确定感,所以很喜爱裸奔。但他的观念遭到群内不少RTOS用户网友的辩驳,以“独钓千古愁”为代表,继续了将近半个多小时,我一向在旁围观。

  经过这次争辩,两边都把各自的观念表达的十分明晰、明晰。RTOS有它的长处,但的确存在很明显的缺陷,这个无可争议,尤其是咱们提出RTOS的几个问题:

  1、 带RTOS体系,不便于移植,这个对msOS的跨硬件渠道推行是很晦气的。

  2、 嵌入式工程师,往往有激烈的掌控欲,而了解透彻RTOS有必定的难度,有一种掌握不住的感觉而回绝RTOS。

  3、 实际中绝大多数嵌入式项目,只需经过合理的规划,不需求RTOS。

  4、 带RTOS的体系,在使命调度时进入临界态,这个时分无法呼应中止,不适合应用于实时性要求高的当地。

  以上四个原因,让我认识到需求推出一个msOS的无RTOS版别,但还要完结相似RTOS的双使命功用,把业务逻辑与菜单界面别离。在评论中,“传说中的火枪手”有一句话提醒了我,他说到他自己有一套相似MS3(msOS的前身)的架构,他用了一个中止处理各种音讯,而这个时分,我也在想着怎么改造uC/OS-II的使命切换软中止,完结双使命,思路彻底一致,他的话说明晰这个计划是可行的。

  后来的一段时间,忙着msOS文档,进一步完善msOS代码,一向没有着手写。直到三月份才开端依照软中止办法,粗粗的写了一个无OS的双使命版别msOS,完结了这个功用,但由于其时对Stm32的中止体系了解不深,所以放到群内让咱们一同剖析,寻觅bug,这个时分,“独钓千古愁”对无OS版别msOS提出了许多主张,而且直接在这个版别基础上修正,彻底的丢掉了汇编代码,移植十分简略,其间部分处理办法引用了他跟“传说中的火枪手”沟通时供给的代码。我再在“独钓千古愁”供给的版别基础上进一步优化,一致风格,定型后在群内发布,当“传说中的火枪手”看到终究版别,就觉得有他的影子存在。

  这个无OS版其他msOS,终究的命名是“Tomsu”起的,他参阅软件的命名习气,由于这是一个无OS简化版别,所以引荐为msOS-Lite版别,Lite的意思是“精简”。能够说,msOS-Lite版别,是整个msOS群咱们参加评论出来的,尽管有几个相对重要的网友活跃推进,但其它网友的奉献是不能扼杀的,团体的力气是强壮的。我对这个版别十分满足,由于它精确的反响了msOS理念:简略、易用。

  无RTOS完结双使命,乃至多使命,本质上讲跟RTOS办法相似的,仅仅RTOS是把一个main大循环斩成多个具有优先级的小循环,音讯触发决定在最高优先级的小循环中履行。由于是小循环,死循环,一向循环下去,所以有必要要有触发进入条件和等候资源挂起条件,不然这个小循环一向履行下去,其他小循环就履行不了了。

  无RTOS版别多使命,把中止看作是使命,由于中止优先级高于main大循环,树立一个最低优先级的,能够被音讯触发的软中止来完结使命,但由于在中止中,所以树立的这个使命不是一个死循环,而是履行结束就跳出的。而这一点刚好契合msOS的业务逻辑中的音讯机制,履行完音讯就退出的特色,不需求死循环等候在哪儿。

  多个中止,就完结多个使命,尤其是systick体系节拍中止,有许多业务在体系节拍中例行处理,相似使命,尽管这个使命不是严厉意义上的,功用不强壮,但够咱们用了,尤其是对msOS来说,只需求两个使命,刚好适宜。

  为了跟uC/OS-II兼容,挑选了软中止PendSV,把优先级设置为最低。

  

 

  其次,宏界说方式界说软中止PendSV的触发指令,只需EnterInterrupt这个宏指令被调用,就激活PendSV中止。这部分代码“独钓千古愁”和“传说中的火枪手”供给的,写的十分好,本来这部分在汇编中的,移到了C语言中,这姿态msOS-Lite就没有了汇编代码。

  

 

  再次,编写PendSV的中止呼应代码,考虑到有多个音讯源一起抛出音讯,但呼应中止只要一次,所以在中止呼应中有必要要把音讯行列中的音讯处理完,不然会导致后续的音讯由于中止此前被占用而不会再次发生中止符号而无法重入的问题。这儿增加了CheckMessage函数来完结。

  

 

  最终,改写抛出音讯入行列函数,调用EnterInterrupt触发PendSV中止。

  

 

  至此,无RTOS的msOS-Lite版别完结,十分感谢msOS QQ群的一切网友的支撑与协作

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/117854.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部