μC/OS-II操作系统在各种处理器上的移植

发布者:CrystalDawn最新更新时间:2009-12-28 来源: 单片机与嵌入式系统关键字:μC/OS-II  移植  处理器 手机看文章 扫描二维码
随时随地手机看文章

    μC/OS-II操作系统是一种抢占式多任务、单内存空间、微小内核的嵌入式操作系统,具有高效紧凑的特点。它执行效率高,占用空间小,可移植性强,实时性能良好且可扩展性强。采用μC/OS-II实时操作系统,可以有效地对任务进行调度;对各任务赋予不同的优先级可以保证任务及时响应;采用实时操作系统,降低了程序的复杂度,方便程序的开发和维护。μC/OS-11非常适合应用在一些小型的嵌入式产品应用场合,在家用电器、机器人、工业控制、航空航天、军事科技等领域有着广泛的应用。

    单片机、ARM、FPGA与μC/OS-II操作系统相结合,实现一些具体功能,是目前嵌入式应用中比较常见的。在这些应用中,基础性的工作就是操作系统的移植。本文选取使用较多的51单片机、LPC2210、NiosII三种处理器进行介绍。

1 μC/OS-II操作系统移植条件

    μC/OS-II操作系统的大部分源代码都是用C语言书写的,但仍需使用汇编语言来完成一些和处理器相关的操作,例如读写处理器、寄存器时只能使用汇编语言来实现。因此,将μC/OS-II操作系统移植到目标处理器上,需要从硬件和软件两方面来考虑。

    硬件方面,目标处理器需满足以下条件:

    ①处理器的C编译器能产生可重入代码;

    ②用C语言可以开/关中断;

    ③处理器支持中断,并且能够产生定时中断(通常在10~1 000 Hz之间);

    ④处理器能够支持容纳一定量数据的硬件堆栈;

    ⑤处理器有将堆栈指针和其他寄存器读出和存储到堆栈或内存中的指令。

    软件方面,主要关注的是一些与处理器相关的代码移植,其分布在OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM这3个不同的文件中。

2 目标处理器硬件支持

    51单片机、LPC2210、NiosII三种处理器在硬件方面均能满足μC/OS-II操作系统的移植要求。

    51单片机:选择Keil公司的集成开发环境作为开发工具,因为该集成开发环境的C51编译器能产生可重入型代码,且用C语言就可以开/关中断。同时具有一定数量的堆栈和操作相关寄存器的指令。

    LPC2210:采用ARM7微控制器可以满足上述②、④、⑤,而ADS1.2的C编译器可以满足①、③的要求。

    NiosII处理器:Nios处理器可以配置成最多支持64个中断,包括外部硬件中断、内部中断以及TRAP(调试中断)。Nios II处理器可以配置使用32位内部定时器,通过用软件控制写入几个控制寄存器的内容来获得定时工作,与一般的定时器工作原理相同,可以产生定时中断。Nios处理器可以外接存储器。以使用的DE2开发板为例,外接512 KB SRAM资源,可提供足够的数据硬件堆栈。NioslI 8.0 IDE采用GNU编译器,支持C/C++的编译、链接产生重入代码,允许在C语言中嵌入汇编语言。

3 软件移植过程

3.1 OS_CPU.H的实现

    OS_CPU.H文件包括了用#define语言定义的与处理器相关的常数、宏以及数据类型。

    在上述三种处理器采用的不同编译器中,数据类型的定义是相同的,在此不做具体介绍。

    在OS_CPU.H中定义与处理器相关的宏,主要是进入临界区的OS_ENTER_CRITICAL()和退出临界区的OS_EXIT_CRITICAL()。

    在Keil编译器中,EA是总中断。

    #define OS_ENTER_CRITICAL() EA=0;//关中断
    #define OS_EXIT_CRITICAL() EA=1;//开中断
    在ADS编译器中定义为软件中断函数,并编写软件中断处理代码实现开/关中断。
    _swi(0x00)viod OS_TASK_SW(viod);//任务级任务切换函数
    _swi(0x00)viod OS_ENTER_CRITICAL(viod);//关中断
    _swi(0x00)viod OS_EXIT_CRITICAL(viod); //开中断
    在NiosII 8.0 IDE编译器中:
    #define OS_ENTER_CRITICAL() asm(“PFX 8\n WRCTL%g0;”) //关中断
    #define OS_EXIT_CRITICAL() asm(“PFX 9\n WRC TL%g 0;”) //开中断

    堆栈的增长方向通过设置OS_STK_GROWTH为0或者1来确定。51单片机中只能设置为0,表示堆栈是从下往上增长的。LPC2210中则可以设置成0或者1。NiosII中则只能设置成1,表示堆栈是从上往下增长的。

3.2 OS_CPU_C.C的实现

    OS_CPU_C.C中,主要应改写堆栈初始化函数OS-TaskStkIint()。必须根据移植时统一定义的任务堆栈结构进行初始化,其他9个钩子函数只需说明即可。也可根据移植时用户自己的需要,编写相应的操作代码。

    以LPC2210为例,堆栈空间从高到低依次存放着PC,LR,R12,R11,…,R1,R0,CPSR,OsEnterSum。每个任务都有独立的OsEnterSum,在任务切换时保存和恢复各自的OsEnterSum值。各个任务开/关中断的状态可以不同,这样实现了开/关中断的嵌套。

    关于51单片机和NiosII处理器的这部分移植,请参看参考文献。

3.3 OS-CPU-A.S的实现

    这部分需要对处理器的寄存器进行操作,所以必须用汇编语言编写。μC/OS-II移植要求用户编写4个简单的汇编语言函数:OSStartHighRdy()、OSCtxSw()、OS-IntCtxSw()、OSTickISR()。

    OSStartHighRdy()的任务是进行任务调度和切换;OSCtxSw()的任务是强制CPU进行寄存器和程序计数器的切换;OSIntCtxSw()的任务是在中断返回时进行任务切换;OSTickISR()是时钟节拍中断服务程序,用来实现时间的延迟和超时功能。

    以OSStartHighRdy()任务调度和切换函数为例,介绍3种处理器移植代码。

    (1)51单片机

    OSStartHighRdy:

   

   

结 语

    51单片机、LPC2210,NiosII三种处理器在目前的嵌入式应用方面有着广阔的市场前景。将μC/OSs-II操作系统移植到这三种以及其他处理器上,能够更好地保证系统运行时的稳定性和实时性,而且该操作系统代码少,易于掌握和移植。

    本文所介绍的μC/OS-II操作系统在3种处理器上的移植是笔者在实际学习过程中,进行的梳理和小结,对初学者有一定的参考价值。

关键字:μC/OS-II  移植  处理器 引用地址:μC/OS-II操作系统在各种处理器上的移植

上一篇:嵌入式OS烽火再起 微软称霸胜算几何?
下一篇:μC/OS-II软件定时器的分析与测试

推荐阅读最新更新时间:2024-05-02 20:57

贸泽供货Texas Instruments PGA460超声波处理器
专注于新产品引入 (NPI) 并提供极丰富产品类型的业界顶级半导体和电子元件分销商贸泽电子 (Mouser Electronics),宣布即日起备货Texas Instruments (TI) 的PGA460和PGA460-Q1超声波信号处理器与驱器。下面就随网络通信小编一起来了解一下相关内容吧。 汽车级PGA460-Q1和非汽车级PGA460是现有的两款超声波传感器,能够以较低的功耗检测较宽范围内的物体,是各种超声波位置传感和机器人应用的理想选择。 贸泽电子备货的TI PGA460和PGA460-Q1为具有先进DSP内核的高度集成片上系统 (SoC) 超声波传感器驱动器和信号调理器。这两款器件具有2种基于驱动器的拓扑结构:基于
[网络通信]
详细了解i.MX 8ULP应用处理器
现代世界正逐渐采用更自然的人机界面(HMI)。我们不仅可以与智能音箱交谈,还可以在纸张般的电子阅读器上阅读。电子产品已成为我们的数字伙伴,而不再是被电源插座限制的系统。 实现这场变革,需要多核处理器来处理语音命令、音频播放、图形显示以及系统控制等各种任务。电源管理和信息安全方面的创新使这些芯片能够始终保持工作,按需提供交互,同时大幅度降低能耗。 i.MX 8ULP 处理器的创新灵活电源架构 恩智浦利用i.MX 8ULP应用处理器实现这些创新。该芯片通过将功能分配到不同的电源岛上,实现精细的电源管理。每个岛可以按需降低运行速度和电压,完全关闭或完全打开,从而节省电力。处理器中最耗电的部分是CPU
[嵌入式]
详细了解i.MX 8ULP应用<font color='red'>处理器</font>
U-Boot移植(1)新建一个开发板的相应目录和文件
今天很高兴,终于把U-Boot移植成功,在做的同时,我把一些步骤以截图记下。。现在我来慢慢回顾下过程。。 1、从官网上下了个U-Boot-1.1.6,网址:http://sourceforge.net/projects/u-boot/。然后放到Ubuntu的/work/下,解压。 2、进入board目录,将smdk2410复制为100ask24x0,并将board/100ask24x0/smdk2410.c改名为100ask24x0.c。 3、将include/configs/smdk2410.h直接复制为100ask24x0.h 4、修改以下两个Makefile,先看顶层的Makefile,增加底部
[单片机]
U-Boot<font color='red'>移植</font>(1)新建一个开发板的相应目录和文件
爱特梅尔首发基于ARM的Cortex-M4处理器
微控制器及触摸解决方案的领导厂商爱特梅尔公司(Atmel® Corporation)近日宣布向主要客户提供爱特梅尔SAM4S16器件样品,这是基于Cortex™-M4处理器之产品系列的首款器件。爱特梅尔继续致力于提供基于ARM®处理器的微控制器(MCU)产品,并公布了第五代基于Cortex-M4的快闪微控制器。 在2012年,爱特梅尔SAM3和SAM4系列将使爱特梅尔Cortex-M产品组合的数目增加至四倍,ARM-based微控制器将达到200款,包括高达2MB的片上快闪存储器、192KB SRAM和包含高速USB在内的多种外设的器件。爱特梅尔新型ARM Cortex-M4快闪系列中的数款器件还带有浮点运算单元(FPU),从而将
[单片机]
高通即将占领世界 高通发布入门级处理器骁龙205
在刚刚结束的新品发布会上,高通对其入门级移动处理器平台进行了升级,他们推出了较低端的处理器高通205,这款处理器旨在为印度、拉丁美洲和东南亚、非洲等移动网络欠发达地区的用户,带去更流畅的网络连线体验。写到这里,小编默默感动,良心企业啊。下面就随单片机小编一起来了解一下相关内容吧。 高通205支持LTE、3G与2G网络,最高下载速度可达到150 Mbps,CPU主频为 1.1 GHz,整合高通的 Adreno GPU,且支持双卡双待。虽然205无法和高通其它旗舰SoC相提并论,这也只是因为针对的目标区域和群体不同,能让更多的人享受到科技带来的便利,还能奢求什么。另外,205最高支持一颗300万像素镜头,输出的画面最高也能达到60帧4
[单片机]
嵌入式linux的移植的理论问题
   移植的基本概念:   移植是指将软件从一个平台迁移到另一个平台   * 从一个硬件平台移植到另一个硬件平台   * 从一个操作系统移植到另一个操作系统   * 从一种软件库环境移植到另一个软件库环境   软件进行移植的容易程度即可移植性    Linux硬件平台:   在Linux内核里,每一个处理器指令集对应一个独立的体系结构architecture,比如alpha, arm,i386, mips, ppc   每个体系结构可以有若干变种variant,或不同配置的硬件machine   统称sub-architecture。以arm体系结构举例   * variants 包括arm7
[嵌入式]
基于微处理器和以太网接口实现嵌入式尿液分析仪系统的设计
1 项目概述 我们设计的微型尿液分析仪可以检测尿液的十种参数,包括白细胞、亚硝酸盐、尿胆原、蛋白质、PH值、潜血、比重、酮体、胆红素和葡萄糖。 在用户把浸没了尿液的试纸条放入仪器后,通过LPC2148控制LED光源进行分时发光,然后反射光通过光纤照射到CCD上,经过信号的采集和模数转换,并在微处理器中经过归一化的算法,将结果输出至LCD进行显示,或者根据需要传输至PC。并可以利用以太网接口连接Internet,方便建设一个健康检测网络。不用复杂的操作便可以得到医生的诊断,十分适合家庭用户的使用。 通过设计新的仪器结构和检测方法,使仪器精度达到或超过国内医院使用较多的尿液分析仪的水平,把体积减小到170×110×120mm左
[单片机]
基于微<font color='red'>处理器</font>和以太网接口实现嵌入式尿液分析仪系统的设计
RTT lvgl在STM32H7上移植的步骤
LVGL适配 环境 STM32 H7 大体步骤 1.lvgl软件包添加 把对应的文件,复制到app里面 编译会报错,原因是需要添加几个文件,需要把头文件指向这里 再编译,就没问题了 2.cubemx配置ltdc,rcc,clock,mpu 这块比较简单,按照keil里面的配置来设置。最后吧生成的代码和keil的代码对比一下。 MPU_Config(): SCB_EnableICache(); SCB_EnableDCache(): 使用以下来替换 SystemClock_Config 对比发现,keil里面多了LTDC的初始化,这个难不倒我们,ltdc通过cubemx配置后,就有对应的初始化操作。按常规
[单片机]
RTT lvgl在STM32H7上<font color='red'>移植</font>的步骤
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved