随着信息社会的发展,信息家电、智能仪表和智能安保系统等产品已经越来越多地出现在人们的生活中。可以预见,为了满足人们对舒适、便捷、安全生活环境的需求,嵌入式信息产品的设计、应用将得到快速发展。
单片机作为嵌入式信息产品的一个重要应用方面,其使用、设计面临着全新的挑战。一方面,人们对嵌入式产品的要求越来越高,稳定可靠、功能丰富、物美价廉的信息产品将成为人们的首选。另一方面,随着微电子工艺水平的发展,单片机处理器的能力不断提高,从最初的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可能遇到的一些问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
影响RTOS在单片机上应用的主要原因是由于在单片机上运行RTOS需要占用一定的系统资源,如系统时钟、RAM、FLASH或ROM等,从而减少了应用系统对资源的利用。特别是对RAM的占用。一般而言,单片机上的内部RAM数量都很少(如MSP430F148是整个MSP430中RAM最多的,也只有2 KB),虽然可以通过外部扩展来增加RAM数量,但这样不仅增加了设计的难度和产品成本,而且有时还使系统应用无法进行扩展。所以,最好的方法是能够充分利用单片机的内部RAM来运行RTOS。
通过分析uC/OS-II对RAM的使用情况可知,占用RAM空间最多的原因,是由于在设计uC/OS-II时,要给每个任务都分配一个单独的任务堆栈。特别在单片机的硬件设计没有将中断堆栈与任务堆栈分开时,计算任务堆栈的大小时不仅要计算任务中变量和函数嵌套所使用的RAM大小,还必须计算该任务在运行时发生中断和中断嵌套所需要的RAM空间的大小。由于每一个任务均需预留中断和中断嵌套所需要的RAM空间的大小,所以使得大量RAM空间被浪费。最直接的解决方法就是利用软件来将任务堆栈和中断堆栈分离,使得在计算任务堆栈的大小时,只需计算任务本身所需的RAM空间大小,从而提高了RAM的使用效率,增加了更多的应用任务。
所谓将中断堆栈与任务堆栈分离,就是在内存中专门开辟出一块区域作为中断堆栈使用,任何一个任务运行时发生中断都只使用它。设计的原则:一是要尽量将中断任务与普通任务分开;二是模拟的中断堆栈指针必须一直保持在中断堆栈的顶部,即中断时中断堆栈指针要时刻保持与SP的同步变化。
一周热门 更多>