嵌入式RTOS在MSP430单片机上的实现

2019-08-02 16:45发布

随着信息社会的发展,信息家电、智能仪表和智能安保系统等产品已经越来越多地出现在人们的生活中。可以预见,为了满足人们对舒适、便捷、安全生活环境的需求,嵌入式信息产品的设计、应用将得到快速发展。
  单片机作为嵌入式信息产品的一个重要应用方面,其使用、设计面临着全新的挑战。一方面,人们对嵌入式产品的要求越来越高,稳定可靠、功能丰富、物美价廉的信息产品将成为人们的首选。另一方面,随着微电子工艺水平的发展,单片机处理器的能力不断提高,从最初的8位单片机到16位,进而32位单片机,功能越来越强大,执行速度越来越快,集成度、精确度也越来越高,应用领域进一步拓宽。可以说,单片机芯片的性能已经能够满足现代人们对嵌入式信息产品的更高要求。为了能将二者有效地结合起来,嵌入式RTOS的软件设计方法也取代了以前的前后台(超循环)设计方法,越来越受到重视和应用。
  正如分时操作系统中Linux的出现打破了Windows一统天下的局面一样,由美国Jean J.Labrosse先生设计和编写的uC/OS-II(Micro C OS 2)的出现也给国内的RTOS应用者带来了惊喜。uC/OS-II的最大优点与Linux相同,即其源代码全部公开,使人们在应用它的同时能清楚地了解内部的实现细节,并且能够根据自己的需求进行移植和修改。特别重要的是uC/OS-II经过8年的发展,已经成功地在多个行业得到应用,保证了实用性和可靠性。它的出现改变了以前人们在使用RTOS时的态度,减少了经济上的顾虑,对于国内RTOS的研究、推广、应用将起到重要的推动作用。uC/OS-II采用微内核设计,使用C语言编写,追求灵活性,可配置、可裁剪、可扩充、移植性强。需要强调的是 uC/OS-II严格采用优先级抢占式调度方案。在创建任务时,根据任务的重要性给每个任务分配不同的优先级。任务调度时,先执行高优先级的任务,然后按照优先级由高到低执行任务。如果在某个任务执行中,激发了一个优先级更高的任务,那么在该任务执行结束后,将由任务调度器调度去执行所激发的高优先级任务,而不是顺序执行。
  下面就uC/OS-II在TI公司生产的MSP430F148芯片上的移植和应用来探讨在单片机上实现RTOS可能遇到的一些问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
houjiakai
1楼-- · 2019-08-03 11:40
  (2)在普通任务1运行时引发中断,在中断中激活更高优先级的任务2。中断结束时由任务调度器调度去执行更高优先级的任务2,没有返回普通任务1。

  当执行任务2时,任务调度器会将任务2保存在自己任务堆栈中的状态恢复并执行任务2。执行完后,如果没有激活更高优先级的任务,那么按照优先级高低的原则,调度器将调度执行任务1。通过判断任务1的TCB中的FromInt标志,可以知道任务1的状态是保存在任务堆栈中还是中断堆栈中,从而可以将其状态恢复,继续运行。

  (3)在普通任务1运行时引发中断,在中断中激活更高优先级的任务2,执行任务2时又发生中断。

  由于uC/OS-II是严格按照优先级抢占式原则进行任务调度的,所以将任务状态保存在中断堆栈顶部的任务的优先级一定比状态保存在它下面的任务的优先级高。在执行时,是由中断堆栈的顶部向底部顺序执行。在这种假设中,一定先执行任务2,然后执行任务1,如图3所示。

  (4)在普通任务1运行时引发中断,在中断中激活更高优先级的任务2。在执行任务2时又发生中断,在中断过程中任务2由于等待信号量而被挂起。

  这种情况在系统最初设计时已经被禁止,在中断中不允许使用信号量将中断挂起。

  (5) 在普通任务1运行时引发中断,在中断中激活更高优先级的任务2。在执行任务2时又发生中断,中断中激活更高优先级的任务3。中断结束时由任务调度器调度去执行更高优先级的任务3。

  这种情况与讨论的情况2是一样的。

  (6)高优先级任务2被更高优先级的任务3中止,在任务3运行完后,任务调度器将直接调度执行任务1(按照优先级调度)。
houjiakai
2楼-- · 2019-08-03 12:16
 精彩回答 2  元偷偷看……
houjiakai
3楼-- · 2019-08-03 14:10
 5 程序设计流程
  (1)中断程序结构和设计流程,如图4所示。

houjiakai
4楼-- · 2019-08-03 19:22
 (2)普通任务间的任务切换程序流程,如图5所示。

houjiakai
5楼-- · 2019-08-03 23:39
 (3)在中断中任务切换程序流程,如图6所示。

  我们已经在MSP430F148上成功运行了uC/OS-II,在RAM只有2 KB的情况下,能够运行16个任务,可以满足一些复杂的应用需求,大大扩展了MSP430F148的应用范围,并且提高了应用系统的实时性。为了验证实际效果,在此基础上,我们将几个常用的家庭仪表--水表、暖气表、热水表集成在一起,运行效果良好,达到设计要求。
专注于嵌入式
6楼-- · 2019-08-04 02:00
好复杂、

一周热门 更多>