μC/OS-Ⅱ在ARM系列单片机S3C44B0x上的移植

发布者:EuphoricVoyage最新更新时间:2011-06-18 关键字:μCOS-Ⅱ  ARM系列单片机  S3C44B0x 手机看文章 扫描二维码
随时随地手机看文章
引 言
   
目前,嵌入式系统在工业控制、家用电器、移动通信、PDA等各种领域得到了越来越广泛的应用。由于用户对嵌入式产品的性能要求越来越高,程序设计也变得越来越复杂,这就需要一个通用的嵌入式实时操作系统来对其进行管理和控制。对移植了操作系统的嵌入式系统进行设计和开发,可以大大减小程序员的负担,对于不同的应用可以按照相同的步骤来完成系统的设计。
    μC/OS-Ⅱ是一种简单高效、源代码公开的嵌入式实时操作系统,具有良好的可扩展性和可移植性,被广泛的应用到各种嵌人式处理器上。μCOS-Ⅱ操作系统拥有可固化,可裁剪,可剥夺性的实时内核,可同时管理64个系统任务。利用移植μCOS-Ⅱ操作系统的嵌入式微处理器来设计和开发产品,对于提高产品的性能,减少产品的开发周期和降低开发成本有着重要的意义。在此较详细地分析和介绍了嵌入式实时操作系统μCOS-Ⅱ在ARM系列单片机S3C44B0x上的移植过程。

1 μCOS-Ⅱ概述
    μCOS-Ⅱ是一种源代码公开、结构小巧、具有可剥夺性实时内核的嵌入式实时操作系统。μCOS-Ⅱ是用ANSI的C语言编写的,包含一小部分汇编语言代码,使之可供不同架构的微处理器使用,至今,从8位到64位,μCOS-Ⅱ已在超过40种不同架构的微处理器上运行。μCOS-Ⅱ是专门为嵌入式应用而设计的,它包含了任务调度,任务管理,时间管理,内存管理和任务问的通信和同步等基本功能。μCOS-Ⅱ拥有一个可移植、可固化、可裁剪的实时内核,它具有执行效率高,占用空间小,实时性能优良和可扩展性强等特点,被广泛地移植应用到各种嵌入式微处理器中。

2 S3C44B0处理器概述
    S3C44B0x微处理器采用高性能、低功耗的32位RISC内核ARM7TDMI。 同时,S3C44B0x在ARM7TDMI核的基础上,扩展了一系列的外围器件,使系统成本及外围器件数目降低至最低,这些功能部件分为CPU单元,系统时钟管理单元,存储单元和系统功能接口单元,片上集成的主要功能如下:
    在ARM7TDMI基础上增加了8 KB的CACHE;外部扩充存储器控制器;LCD控制器,并带有1个LCD专用DMA通道;2个通用DMA通道,2个带外部请求引脚的DMA;2个带有握手协议的UART,1个SIO;1个I2C总线控制器;5个PWM定时器及1个内部定时器;1个看门狗定时器;71个通用可编程I/O口,8个外部中断源;功耗控制模式:正常、低、休眠和停止;8路10位ADC;具有日历功能的RTC;PLL时钟发生器等。

3 嵌入式操作系统μCOS-Ⅱ的移植
3.1 移植μCOS-Ⅱ的条件
   
所谓移植,就是使一个实时内核能在其他的微处理器或微控制器上运行。为方便移植,大部分μCOS-Ⅱ的代码都是用C语言编写的,但是仍需要用C语言和汇编语言编写与处理器硬件相关的代码,这是因为μCOS-Ⅱ在读/写处理器的寄存器时,只能通过汇编语言来实现,要使μCOS-Ⅱ正常运行,处理器必须满足以下要求:
    (1)处理器的C编译器能产生可重人型代码;
    (2)处理器支持中断,并且能产生定时中断(通常为10~100 Hz);
    (3)用C语言就可以开/关中断;
    (4)处理器能支持一定数量的数据存储硬件堆栈;
    (5)处理器有将堆栈指针以及其他CPU寄存器的内容读出、并存储到堆栈或内存中去的指令。
    ARM系列单片机S3C44B0x满足以上的条件。所以可以将μCOS-Ⅱ移植应用到S3C44B0x。
3.2 搭建移植环境
   
本次移植在如下的环境中完成:
    (1)编译工具采用ARM公司的ADS 1.2。ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,它取代了早期的ADS 1.0和ADS 1.1。ADS 1.2由命令行开发工具,ARM实时库,GUI开发环境,实用程序和支持软件组成。有了这些部件,用户就可以非常方便地为ARM系列的处理器编写和调试自己的应用程序了。
    (2)目标板采用杭州立宇泰公司生产的S3C44B0x开发板,主机通过JTAG连接目标板以建立交叉开发调试环境。
3.3 μCOS-Ⅱ的移植
    μCOS-Ⅱ的硬件/软件体系结构如图1所示,对μCOS-Ⅱ的移植其实就是对与处理器有关的代码进行重新编写或修改。

    由图1可知,移植μCOS-Ⅱ实际上就是分别对OSCPU.H,OS_CPU_A.ASM和OS_CPU_C.C这三个文件进行重新编写或修改。由于在本次移植中是将μCOS-Ⅱ移植到ARM系列单片机S3CA4B0x中,接下来将结合S3CA4B0x微处理器的特性来具体介绍本次移植过程中所做的主要工作。
    (1)移植OS_CPU.H文件
    OS CPU.H文件中包括了用#define定义的与处理器相关的常量和类型的定义,与μCOS-Ⅱ所定义的变量类型相一致;定义开/关中断的宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来保护临界段代码免受多任务或中断服务例程的干扰;定义栈的增长方向,在本次移植中栈的增长方向被定义为从上往下增长,OS_STK_GROWTH的值定义为1。在移植该文件时,需要编写和修改的部分代码如下所示:
    ①设置与编译器相关的数据类型

   
    ③设置堆栈的增长方向
    绝大多数的微处理器和控制器的堆栈是从上往下增长的,但是也有一些处理器和控制器的堆栈增长方向是从下往上增长的μCOS-Ⅱ被设计成这两种情况都可以处理,只要在结构常量OS_STK_GROWTH中指定堆栈的增长方式即可。在本次移植中堆栈的增长方向被设置成从上往下增长。

   
    (2)移植OS_CPU_C.C文件
    在该文件中需要编写10个简单的C函数它们分别是:


[page]

在这些函数中惟一必须需要编写的函数是OSTa-skStkInit(),其他9个函数必须要声明,但不一定要包含任何代码。OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()函数来初始化任务的堆栈结构,因此,堆栈看起来就像刚发生过中断,并将所有的寄存器都保存到堆栈中的情形一样。OSTaskStkInit()的程序代码如下:


    (3)移植OS_CPU_A.ASM文件
    在移植OS_CPU_A.ASM文件时,要求用户编写4个简单的汇编语言函数,它们分别是:OS-StartHighRdy(),OSCtxSw(),OSIntCtxSw(),OS-TickISR()。
    ①OSStartHighRdy():运行最高优先级的就绪任务。此函数仅在多任务启动时执行一次,用来启动第1个(也就是最高优先级)任务运行。它的程序代码如下:


    ②OSCtxSw():任务级任务切换函数。实现CPU在正常运行时任务间的切换,完成对当前任务堆栈的保存和对最高优先级任务堆栈的弹出,使最高优先级的任务得到运行。
    ③OSIntCtxSw():中断级的任务切换函数。在中断服务程序执行完后,如果中断使得更高优先级的任务处于就绪状态,则该函数实现对任务的切换:保存中断发生之前的那个任务的执行现场.恢复已处于就绪态的那个更高优先级任务的执行现场,使优先级更高的那个任务得以运行,从而完成对任务的切换。
    ④OSTickISR():是系统时钟的中断服务函数。该函数的主要功能是检查是否有由于延时而被挂起的任务转为就绪态。如果有,则调用OSIntCtxSw()函数进行任务切换,使已处于就绪态的且具有最高优先级的任务运行。

4 测试移植代码
   
为S3C44B0x移植好μC/OS-Ⅱ后,紧接着的工作就是验证移植好的μC/OS-II是否能正常工作。在这里采用不加任何应用程序代码的方法测试移植好的μC/OS-Ⅱ,这样做有两个优点:使测试移植代码的工作变得更简单;如果有部分,μC/OS-II代码不能正常工作,可以明白是被移植代码本身的问题,而不是应用代码产生的问题。通过四个步骤来完成对移植代码的测试:确保C编译器、汇编编译器及链接器正常工作;验证OSTaskStkInit()和OSStartHighRdy()函数;验证OSCtxSw()函数;验证OSIntCtxSw()和OSTick-ISR()函数。经测试,以上四个测试过程均能正常通过,表明被移植到ARM系列单片机S3C44B0x中的μC/OS-Ⅱ操作系统已经能正常工作了。

5 结束语
    μC/OS-II是一种可配置、可裁剪的嵌入式实时操作系统,现已被广泛的移植应用到多种处理器当中。这里成功地将μC/OS-Ⅱ移植到了ARM系列单片机S3C44B0x中,经测试,移植好的μC/OS-Ⅱ代码能正常的在S3C44B0x处理器中稳定运行。

 

 

关键字:μCOS-Ⅱ  ARM系列单片机  S3C44B0x 引用地址:μC/OS-Ⅱ在ARM系列单片机S3C44B0x上的移植

上一篇:基于ARM的空问光通信APT控制系统设计
下一篇:基于ARM9的快速对星装置设计与实现

推荐阅读最新更新时间:2024-03-16 12:37

基于S3C44B0X的大型LED显示系统设计
大型LED显示系统已经广泛应用于各种室内外场合,但由于其多采用多机系统,提高了系统成本和软硬件设计复杂度。多机系统工作时,本质上相当于一个高总线宽度的计算机系统。其技术难点如下: ◆大型LED显示屏上的像素数以万计,随着显示面积增大,电路结构随之增大。 ◆为了保证一定的显示质量,帧频应在30帧/s以上。对于一个512%26;#215;252的单色LED屏,每秒的数据传输量至少为480 KB以上,对于彩屏及显示质量高的场合,数据传输量还将按整数倍增长。 ◆当LED屏位于室外时,上下位机通信可能在百米甚至千米以上,要求通信速度快且可靠。 鉴于上述前两个技术难点,为能够使用单CPU系统代替多机系统控制大型LED显示系统,
[应用]
基于ARM的心电信号处理系统设计
  本文设计了一个具有数字化、信息化特征的心电信号处理系统。该系统以 32 位高速 ARM 处理器为硬件平台,以实时操作系统作为软件平台,对硬件系统的资源进行了调度和分配,达到了对心电信号进行实时处理的效果,并且实现了对心电信号的实时显示、实时存储等功能。   据统计,我国目前有县及县级以上医院1.3万家,医疗机械总数达17.5万台,加上一些专业心脏疾病治疗机构,我国目前每年心脏疾病的门诊量约在一千万人次以上。根据国家卫生部《全国卫生信息化发展规划纲要》的目标,在2010年要基本实现医院的数字化和信息化。所以未来医疗器械市场对新型医疗设备的市场空间巨大,特别是拥有数字化和信息化特征的心电信号处理系统具有广阔的应用前景和实用
[嵌入式]
基于S3C44B0X的移动机器人的应用研究
移动机器人利用导航技术,获得机器人的目前所处的位置,结合传感器技术对周围外界环境(障碍物等)作实时探测,并根据环境提供的信息规划一条可行路径完成达到目标点的任务。移动机器人技术涉及到传感器技术,导航技术,计算机技术,人工智能等多个领域,因而对移动机器人的控制部分提出很高的要求,特别是视觉传感器的出现,要求控制系统不仅存储量大,而且处理速度快等。以往基于PLC和单片机控制的移动机器人就不能很好的满足实时性快速性的特点。 随着ARM处理器的出现和发展以及嵌入式系统的发展,移动机器人的实时性快速性要求便能得到很好满足,现在该技术已经在多种领域得到有效的应用。本文是以SAMSUNG公司一款基于ARM7TDMI核的低功耗高性能的32位处理
[工业控制]
基于<font color='red'>S3C44B0X</font>的移动机器人的应用研究
基于S3C44B0X的嵌入式Socket通信设计
随着微电子技术的不断创新和发展,嵌入式系统已经广泛渗透到科学研究、工程设计、国防军事、自动化控制领域以及人们日常生活的方方面面。由嵌入式微控制器组成的系统其最明显的优势就是可以嵌入到任何微型或小型仪器和设备中。 嵌入式系统是指将应用程序、操作系统与计算机硬件集成在一起的系统。它以应用为中心、以计算机技术为基础,而且软硬件可以裁剪,因而是能满足应用系统对功能、可靠性、成本、体积和功耗的严格要求的专用计算机系统1。嵌入式系统与通信、网络技术的结合可以极大地增强网络的智能化与灵活性,拓展通信功能,从而实现各种通信系统之间的互联互通。本文给出一种适合于中/低端应用的通信平台设计方案,它可支持Ethernet网络之间的数据传输,并且具有R
[应用]
ARM CPU S3C44B0X与C54X DSP的接口设计
后PC时代,嵌入式产品逐渐占领市场。而这些嵌入式产品的核心——处理器决定了产品的市场和性能。高性能、低功耗、低成本是嵌入式处理器的主要特点。在32位嵌入式处理器市场中,ARM占有78.6%的份额。而TI而占有DSP市场的绝大部分份额。通常的嵌入式系统设计中,由微控制器实现整个系统的控制,由DSP来执行计算密集型操作,然后通过一定的手段实现微控制器与DSP之间的通信和数据交换。因此,如何高效地设计控制器(ARM)与DSP之间的接口以满足嵌入式系统的实时性要求,在嵌入式系统设计中显得尤为重要。 1 ARM CPU S3C44B0X的特点 ARM是一款32位的精简指令集(RISC)处理器架构,以其高性能、低功耗、低成本占有市场。
[单片机]
基于μCOS-Ⅱ系统的智能寻迹模型车的设计与实现
0 引 言 智能车辆是当今车辆工程领域研究的前沿,它体现了车辆工程、人工智能、自动控制、计算机等多个学科领域理论技术的交叉和综合,是未来汽车发展的趋势。以往智能小车在软件设计上多采用单程序控制,不利于智能车在外部环境改变时做出快速反应,为使智能车系统反应更为快速,该智能车应用μC/OS-Ⅱ系统,该系统适合小型控制系统,具有执行效率高、占用空间小、实时性能优良等特点。且选用功耗较低、资源更为丰富的AVR系列ATmega16单片机作为核心控制单元。 采用红外探测法实现寻迹功能,即将红外光电传感器固定在底盘前沿,利用其在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,单片机就是否收到反射回来的
[单片机]
基于μ<font color='red'>COS-</font>Ⅱ系统的智能寻迹模型车的设计与实现
关于三星S3C44B0X目标板的uClinux Bootloader
uClinux是为控制领域设计的嵌入式Linux操作系统,它沿袭了主流Linux的大部分特性,并进行了一定幅度的裁减。其设计主要针对没有内存管理单元(MMU)的微处理器,例如基于ARM7TDMI内核的S3C44B0X。 嵌入式Linux系统通常由三部份组成:Bootloader、Kernel和File System。其中Bootloader是在系统启动之后、Kernel运行之前所执行的第一段代码,其任务是为调用Kernel准备必要的软硬件环境。由此可见,Bootloader是非常依赖于硬件和操作系统的。所谓依赖于硬件,是指Bootloader的实现与处理器体系架构和板级硬件资源密切相关;所谓依赖于操作系统,是指不同操
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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