μC/OS-II操作系统在不同处理器上的应用

发布者:静雅心灵最新更新时间:2018-02-19 来源: eefocus关键字:μ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值。各个任务开/关中断的状态可以不同,这样实现了开/关中断的嵌套。


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操作系统在不同处理器上的应用

上一篇:一种嵌入式视频采集系统的设计
下一篇:基于ARM的嵌入式USB图像采集与显示方案

推荐阅读最新更新时间:2024-03-16 15:55

关于STC12C5410AD单片机PxM0,PxM1设置的问题
大家都知道高性能的stc单片机是目前使用得越来越多的单片机,也是一款性能特别高的单片机,在这我给大家介绍一些使用这种单片机时应该注意的问题,这样我们大家就能更好的使用它。 一个寄存器的设置不同,让我程序调了好几天!5555555~~~~~~~超汗~~~~ 这个寄存器就是(I/O口工作类型设置)即PxM0,PxM1。 为什么这么郁闷呢? 我一开始用的是STC12C5410AD系列单片机,这个系列的单片机I/O口类型配置如下: PxM0 PxM1 I/O口模式 0 0 准双向口,普通8051 I/O 口模式 0 1 推挽输出 1 0 高阻 1 1 开漏 我程序中要用的是PxM0=0x00; PxM1=0x01 也就是某I/O口(Px.
[单片机]
BlackBerry与捷豹路虎签署合作供应协议
BlackBerry 有限公司(纽交所:BB;多伦多证交所:BB)与 捷豹 路虎今日发表声明称双方达成一项多年度协议,共同合作开发下一代汽车技术。   作为协议的一部分,BlackBerry会将其 QNX 操作系统 和Certicom加密技术授权给捷豹路虎,同时指派一个工程师团队对新型电子控制装置组件(ECU)的开发提供技术支持。首个ECU项目为新一代车载信息娱乐系统。    “与BlackBerry合作让我们能够开发客户所需要的新一代安全可靠的联网汽车,”捷豹路虎车辆工程总监Dave Nesbitt表示,“我们将与BlackBerry的工程师携手,开发最前沿、最具活力的软件,保障我们联网汽车达到最高级别的安全标准。”    “我
[嵌入式]
物联网操作系统热潮来临,开路者庆科冷静对待
谷歌在今年的I/O大会上首次推出了名为 Brillo 的操作系统,基于Android底层框架,仅保留了Android系统的基础功能,支持低功耗蓝牙、Wi-Fi连接。再看国内,华为也于近日发布面向物联网的操作系统LiteOS,腾讯则是发布了TOS+智能硬件开放平台战略...... 这一系列的消息让上海庆科CEO王永虹很是兴奋,因为物联网操作系统终于得到了巨头们的重视。面对巨头们的虎视眈眈,王永虹则显示出非常乐观的心态: 得到巨头们的认可,证明我们这几年至少没有白忙活。大家都进入这一市场,未来才能更好。 与阿里共同发力智能领域 王永虹对笔者介绍了公司在近几年物联网浪潮中取得的成就。2012年庆科开始在家
[物联网]
I2C总线学习—查缺补漏—S3C2440的I2C控制器
学习了IIC总线协议的理论部分,觉得应该学习具体操作2440的IIC控制器,毕竟最终都是为了学习S3C2440,所以就把这一部分补上。 S3C2440的I2C接口有四种工作模式:主机发送器、主机接收器、从机发送器、从机接收机。其内部结构如下图所示。 从上图可以看出,S3C2440提供4个寄存器来完成所有的IIC操作。SDA线上的数据从IICDS寄存器经过移位寄存器发出,或通过移位寄存器传入IICDS寄存器;IICADD寄存器中保存S3C2440当做从机时的地址;IICCON、IICSTAT两个寄存器用来控制或标识各种状态,比如选择工作工作模式,发出S信号、P信号,决定是否发出ACK信号,检测是否
[单片机]
I2<font color='red'>C</font>总线学习—查缺补漏—S3<font color='red'>C</font>2440的I2<font color='red'>C</font>控制器
高效的C编程之:C编译器及其优化(上)
本章将帮助读者在ARM处理器上编写高效的C代码。本章涉及的一些技术不仅适用于ARM处理器,也适用于其他RISC处理器。本章首先从ARM编译器及其优化入手,讲解C编译器在优化代码时所碰到的一些问题。理解这些问题,将有助于编写出在提高执行速度和减少代码尺寸方面更高效的C源代码。 本章假定读者熟悉C语言,并且有一些汇编语言编程方面的知识。有关ARM编程的详细信息,请参阅本书的相关章节。 14.1C编译器及其优化 本章主要讲解C编译器在代码优化时遇到的一些问题。要编写高效的C语言源代码,必须了解C编译器对什么形式的代码有所改动,编译器涉及的处理器结构的限制,以及一些特殊的C编译器的限制。 14.1.1为编译器选择处理器结构
[单片机]
WSJ:宏达电拼对岸市场 推大陆专用手机操作系统
    宏达电(HTC,2498)挽救低迷业绩动作频频,不只重金请出钢铁人小劳勃道尼代言,据传更与中国大陆官方合作,打造专为对岸消费者设计的行动装置作业系统。 TechCrunch和华尔街日报报导,内情人士透露,宏达电董事长王雪红密切关注研发进度,并与中共官员进行讨论。新作业系统将深度整合大陆应用程式微博等,预计年底前上市。目前还不清楚新作业系统是否以谷歌Android系统为基础,据悉开发计划一变再变,一度要自行研发全新系统,一度又要在Android上另建新介面;目前系统进入测试阶段,部分原型机已送交大陆官员。 北京当局向来鼓励研发本土自有软体,减少依赖西方企业。大陆科技部3月发布白皮书指称,该国行动装置业界过于依赖谷歌系统。大陆先
[手机便携]
多媒体协处理器SM501在嵌入式系统中的应用
摘要:许多嵌入式系统需要支持高分辨率的LCD显示器。SM501是用来提高嵌入式系统显示能力的一款芯片。文中介绍SM501的基本架构,以及一个基于SM501的系统设计。 关键词:嵌入式系统 TFT LCD 多媒体协处理器 SM501 引言 近年来,从手持消费电子到工业控制系统,嵌入式处理器的应用已经深入到人们工作和生活的方方面面。在某些应用领域,系统需要提供如1 280%26;#215;1 024这类高分辨率的显示界面,而多数嵌入式处理器不能支持,或者在高分辨率下提供的显示效果不好。   通常,一个带有LCD显示器的ARM系统如图1所示。 图1 带有LCD显示器的ARM系统框图   在该系统中,ARM处理器将LC
[应用]
采用C8051F410为微处理器实现光纤通信传输组件的设计
光纤通信在现代通信领域的地位日趋重要,因其具有带宽大、信噪比低、抗干扰的特点在工程建设中应用广泛。某新品研制中需要一款能够同时传输多路模拟电压信号、脉冲控制信号及故障指示信号的传输组件,若采用传统的电缆传输方式将不可避免地存在体积大、重量沉及传输性能受外界电磁辐射干扰大的问题。基于以上情况,文中采用以光纤通信的方式设计了一款实用的传输组件,满足新品设计要求。 1 整体架构 光纤传输组件是指以光纤作为传输信道的功能器件,通常包括发射端、接收端、光纤跳线3部分。主要原理即是在采集端实现电光转换,在接收端实现光电转换,通过光纤实现两端通信的连接。由于其特殊的传输材质和模式,使得光纤传输组件可满足在某些特殊工作环境下的要求。组件主要由
[单片机]
采用<font color='red'>C</font>8051F410为微<font color='red'>处理器</font>实现光纤通信传输组件的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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