嵌入式RTOS在MSP430F148单片机上的实现外文翻译资料
2022-12-06 15:30:30
The embedded RTOS MSP430F148 in the realization of single-chip microcomputer
With the development of information society, information appliances, smart meters and smart security system, etc. more and more products have been in peoples lives. It can be foreseen in order to meet people for comfortable, convenient, safe living environment for the needs of embedded product design, the application will be rapid development.
SCM is an important application as an embedded information products, the use of design facing new challenges. On one hand, the requirements of embedded products is getting higher and higher, stable and reliable, feature-rich, affordable information products will become the first choice of the people. The other hand, with the level of development of microelectronics technology, single-chip processors ability to continue to improve from the original 8-bit microcontrollers to 16 and then 32-bit microcontrollers, function more and more powerful, faster and faster execution speed, integrated , accuracy, application has been further widened. It can be said that the performance of single chip have been able to meet the higher demands of modern embedded information products. Embedded RTOS software design methods in order to be able to both effectively combine also replaced the front and back (hypercycle), more and more attention and application.
Appear to break as time-sharing operating system, Linux, Windows domination, designed and written by the United States Mr. Jean J.Labrosse, uC / OS-II (Micro C OS) appear also to the RTOS application withto surprise. uC / OS-II The biggest advantage of Linux is the same, that is, its source code is all open, so that people can apply it at the same time a clear understanding of the internal implementation details, and the ability to transplant and modify according to their needs. Of particular importance is the uC / OS-II after eight years of development, has been successful in a number of industry applications, to ensure the practicality and reliability. It has changed the former attitude of the people using the RTOS, reducing the economic concerns, for domestic RTOS research, promotion, applications will play an important role in promoting. uC / OS-II micro-kernel design, using the C language, the pursuit of flexibility, configurable, scalable, expandable, and portability. Should be emphasized that the uC / OS-II, strict priority preemptive scheduling. Assign different priority to each task when the task is created, according to the importance of the task. The first implementation of high-priority task scheduling, task, and then descending in accordance with the priority tasks. If the execution of a task to stimulate a higher priority task, after the end of the task execution to perform the excitation will be the task scheduler scheduling high-priority tasks, rather than sequential execution.
Following transplantation and the uC / OS-II on the production of TIs MSP430F148 chip to explore the RTOS may encounter some problems in the SCM.
1.The the MSP430 series microcontroller Profile
MSP430 MCU is a 16-bit microcontroller developed by TI. Its outstanding feature is the ultra-low power consumption, very low occasions for a variety of power requirements. There are multiple series and models, made by some of the basic functional modules according to different application of goal combination. The typical application of the flow meter, intelligent instruments, medical equipment and security systems. Due to its high performance and low cost, the application has become increasingly widespread.
MSP430F148 is TIs recently introduced MSP430F14x/13x Series MCU a. Relative MSP430 series of other chips, the main features as follows: Low power consumption. Built-in low power consumption of fast flash MSP430F14x/13x series of power consumption in standby mode is also less than the natural wear and tear in the battery when not in use. In the normal state, if the operating voltage was 2.2 V, the typical current consumption is only 250uA/MIPS standby mode current to only 1uA below.
Fast execution speed. The MSP430F13x/14x series operating voltage range of 1.8 ~ 3.6 V-8 the MIPS performance.
Storage capacity. MSP430F148 chip built-in 48 KB of Flash ROM and 2 KB of RAM. RAM space is the largest in the MSP430 series, in line with the needs of running an RTOS.
High-performance A, / D Contains an 8 external channels, 12 high-performance A / D converter. Chip built-in auto-scan function, the A / D converter does not require central processing unit with the assistance of independent work.
The high integration. The device also includes an independent watchdog, two pulse width modulation timer (PWM), 1, 2 USART port and 48 input / output pins and other components.
Online support. MSP430F13x/14x family support can be provided by the MSP the-FET430P140 flash emulation tool (FET). The FET is a complete integrated development environment, including source-level debugger, simulator, assembler / Connectors, C compiler, two kinds of evaluation chip, the target board, the JTAG interface and programming unit.
It can be seen from the above description, a low-end microcontroller MSP430F148 belong to only have the basic conditions for running an RTOS, in some of the problems met by it above the run RTOS for general MCU is a representative.
2 .interrupts the structural design of the stack
UC / OS-II, the task switch is divided into task-level switching and interrupt level switch. Task-level switching is completed by weak interrupt instruction or rely on the processor executes the trap instruction. The soft interrupt instruction will be forced to save some processor registers to the stack of the current task, and perform the task scheduling. Its purpose is in the ready state task stack structure looks like just happened to interrupt and save all registers on the
剩余内容已隐藏,支付完成后下载完整资料
嵌入式RTOS在MSP430F148单片机上的实现
随着信息社会的发展,信息家电、智能仪表和智能安保系统等产品已经越来越多地出现在人们的生活中。可以预见,为了满足人们对舒适、便捷、安全生活环境的需求,嵌入式信息产品的设计、应用将得到快速发展。
单片机作为嵌入式信息产品的一个重要应用方面,其使用、设计面临着全新的挑战。一方面,人们对嵌入式产品的要求越来越高,稳定可靠、功能丰富、物美价廉的信息产品将成为人们的首选。另一方面,随着微电子工艺水平的发展,单片机处理器的能力不断提高,从最初的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可能遇到的一些问题。
1 MSP430系列单片机简介
MSP430系列单片机是由TI公司开发的16位单片机。其突出特点是超低功耗,非常适合于各种功率要求低的场合。有多个系列和型号,分别由一些基本功能模块按不同的应用目标组合而成。典型应用是流量计、智能仪表、医疗设备和保安系统等方面。由于其较高的性能价格比,应用已日趋广泛。
MSP430F148是TI新近推出的MSP430F14x/13x系列单片机中的一款。相对MSP430系列的其它芯片,主要特点如下:
超低功耗。由于内置了功耗极低的快速闪存,因此,MSP430F14x/13x系列在待机模式下所消耗的电能还少于电池未使用时的自然损耗。在正常的工作状态下,如果工作电压为2.2 V,其典型消耗电流仅为250uA/MIPS,而待机模式下工作电流降至仅1uA以下。
执行速度快。MSP430F13x/14x系列的工作电压范围为1.8~3.6 V,性能可达8 MIPS。
存储容量大。MSP430F148片内内置了48 KB Flash ROM和2 KB RAM。RAM空间是MSP430系列中最大的,基本符合运行RTOS的需要。
高性能A/D。包含了1个具有8个外部通道的12位高性能A/D转换器。利用芯片内置的自动扫描功能,A/D转换器可以不需要中央处理器的协助而独立工作。
集成度高。该器件还包括1个独立的看门狗、2个脉宽调制定时器(PWM)、1个比较器、2个USART口以及48个输入/输出引脚等部件。
在线支持强。MSP430F13x/14x系列均可由MSP-FET430P140闪速仿真工具(FET)提供支持。该FET是一种完整的集成开发环境,包括源代码级调试器、仿真器、汇编/连接器、C编译器、2种评估芯片、目标板、JTAG接口以及编程单元等。
由以上介绍可以看出,MSP430F148属于一种中低端的单片机,只具备运行RTOS的基本条件,所以在它上面运行RTOS所遇见的一些问题,对于一般的单片机而言是具有代表性的。
2 中断堆栈的结构设计
在uC/OS-II中,任务切换分为任务级切换和中断级切换。其中任务级切换是通过发软中断指令或依靠处理器执行陷阱指令来完成的。软中断指令会强制将一些处理器寄存器保存到当前任务的堆栈中,并执行任务调度。其目的是使处于就绪态的任务的堆栈结构看起来就像刚发生过中断并将全部寄存器保存在堆栈的情形一样。如MCS-5l以及x86芯片都有类似的指令,但问题出在有一些单片机芯片中没有软中断指令,并且在发生中断时保存寄存器的情况根据单片机芯片和所使用的编译器的不同而有很大区别。
MSP430F148中就没有软中断指令,所使用的IAR编译器在发生中断时也不保存所有的寄存器,而是只保存几个在中断中使用到的寄存器。所有这些都是不符合uC/OS-II的移植条件的。我们的解决方法是根据具体情况来自己定义一个中断结构,不论是在任务级调度还是中断发生或调度以及任务堆栈的初始化时,都要按照这个结构来执行。代价是必须对所编写的中断程序的汇编代码进行人工修改,使之符合这个中断结构。
为设计一个符合要求的中断堆栈结构,首先必须清楚所使用的单片机在发生中断时执行了哪些操作,即向堆栈中保存了哪些寄存器以及它们的顺序。当MSP430单片机发生中断时,只进行2条基本操作,先将SR(状态寄存器)压入堆栈中保存,然后将中断发生时要执行的下一条指令的PC值压入堆栈保存。其次,要清楚所使用的C编译器在编译C语言编写的中断程序时,进行了哪些默认的操作。通过对所使用的IAR V2.13编译器编译产生的汇编程序进行分析,可以发现,除了以上的2条基本操作以外,在中断程序的开头,还自动保存了 R12~R15四个寄存器,余下的R4~Rll八个寄存器中只保存在中断程序中用到的个别寄存器,而不是全部保存。但在RTOS中必须保存所有的寄存器,这样才能正确保存该任务的状态。通过以上分析,我们定义了MSP430运行uC/OS-II时的中断堆栈结构,如图1所示。
3 如何保证单片机的低功耗特性(3)
单片机在嵌入式方面的应用都非常强调单片机的超低功耗特性。MSP430系列的特点也在于此。如果由于运行RTOS而破坏了单片机的低功耗特性是得不偿失的。一般的单片机都规定了几种不同功耗的工作模式,可以根据具体的需求来选择。不同工作模式是通过读写1个或1组寄存器来控制CPU、时钟、晶振以及外围设备的运行来实现的。
MSP430系列单片机有6种不同的工作模式,都是通过对状态寄存器SR的读写来实现的。在RTOS中,由于每个任务都可以分别保存自己的状态,包括状态寄存器,所以在实现低功耗工作模式时更加灵活方便。首先,在设计每个任务时,都可以根据任务的具体要求定义它的工作模式。其次,在整个系统设计中,设计一个最低优先级的任务,其作用就是使系统进入特定的低功耗工作模式。这样,在其它任务都运行完毕后,系统会调用这个任务使整个系统进入低功耗工作模式。当其它任务又恢复运行时(如延时结束),会自动进入其特定的工作状态,以达到降低功耗的目的。
4 如何减少RTOS在运行中占用的RAM空间
影响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的同步变化。
为了达到这个目的,单片机芯片必须具备以下2个条件。
首先,单片机芯片必须有一个通用寄存器和相应的指令能够模仿堆栈指针SP的功能,即能实现软堆栈。在MSP430系列单片机中有以下指令可以仿真SP的功能(把R4作为中断堆栈指针使用):
MOV @R4 ,SP ;将R4所指向地址中的内容存入SP;中,同时R4中内容加2
MOV SP,0(R4) ;将SP中的内容存入R4所指向的地址中
MOV @R4 ,PC ;将R4所指向地址中的内容存入PC;中,同时R4中内容加2
其次,作为模拟中断堆栈指针的寄存器R4,必须在中断之外的任何情况下不被使用。因为,此时的R4必须时刻保持在中断堆栈的顶部,如果改变它的值,就会改变中断堆栈的结构。一般这个要求是由所使用的编译器来保证的,在我们所使用的IAR编译器中,有一个选项可以避免使用R4和/或R5。
具体设计时,我们在uC/OS-II每个任务的TCB(任务控制块)结构中加入以下几项:
TSP--任务堆栈指针。发生中断后,指向该任务的任务堆栈的顶部。
ISP--中断堆栈指针。如果在中断中发生任务切换,指向该任务在中断堆栈所保存状态的顶部。
FromInt标志--是否来自中断标志。用来判断该任务的状态是保存在中断堆栈中(为1),还是保存在任务堆栈中(为0)。
下面假设一个普通任务1在执行过程发生中断,对它在中断执行过程中可能出现的几种情况进行分析。
(1)在普通任务1运行时引发中断,在中断中没有激活更高优先级的任务,而是正常结束中断,继续执行任务1,如图2所示。
开始中断:将在中断发生时保存在当前任务堆栈的SR和PC移到中断堆栈中保存,同时 SP回到中断前的位置并将它保存到该任务TCB中的TSP中(这是为了在中断结束后,保持任务堆栈的连续性),然后将SP指到目前中断堆栈的顶部,按照自定义堆栈结构的顺序依次将所有寄存器都保存到中断堆栈中。保存的过程中R4必须与SP保持同步变化,同时将FromInt标志置l。
退出中断:由于没有激活更高优先级的任务,所以在中断任务完成后,将按正常的顺序退出中断,即将保存在中断堆栈中的寄存器推出堆栈,将FromInt标志置0,SP重新指向该任务的任务堆栈中,最后,将PC指针指向中断前的返回地址,继续程序运行。
(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(按照优先级调度)。
由于各个任务的ISP和TSP在任务切换前都已经保存在该任务的TCB中,任务1的堆栈指针和R4可以回到该任务在其任务堆栈和中断堆栈的正确的位置。
任务2被中止包括两种情况。一是任务2被别的任务删除,此时任务2在中断堆栈中占用的空间会自动释放。二是任务2被别的任务挂起,此时应在将程序挂起的函数TaskSuspend()中添加一段代码,将其保存在中断堆栈中的状态移到自己的任务堆栈中,同时将其TCB中的FromInt标志设为0。这样
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[28764],资料为PDF文档或Word文档,PDF文档可免费转换为Word