您的位置 首页 应用

剖析uC/OS-II在MSP430单片机芯片上完成RTOS的问题

单片机作为嵌入式信息产品的一个重要应用方面,其使用、设计面临着全新的挑战。一方面,人们对嵌入式产品的要求越来越高,稳定可靠、功能丰富、物美价

单片机作为嵌入式信息产品的一个重要运用方面,其运用、规划面临着全新的应战。一方面,人们对嵌入式产品的要求越来越高,安稳牢靠、功用丰厚、物美价廉的信息产品将成为人们的首选。另一方面,跟着微电子工艺水平的开展,单片机处理器的才干不断提高,从开始的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所示。

389175_1_0.jpg

图1 MSP430F的自界说中止仓库结构

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部