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

发布者:李国永最新更新时间:2015-04-22 来源: eechina关键字:μ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中指定堆栈的增长方式即可。在本次移植中堆栈的增长方向被设置成从上往下增长。 [page]



(2)移植OS_CPU_C.C文件 

在该文件中需要编写10个简单的C函数它们分别是: 



在这些函数中惟一必须需要编写的函数是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上的移植

上一篇:U-Boot在基于S3C4480开发板上的移植
下一篇:一种基于微控制器的智能家居电能控制系统

推荐阅读最新更新时间:2024-03-16 13:59

基于AVR单片机的高精度频率调节器设计
   1 引言   在现代化工业生产与高精度测试中,我们需要相当精确的频率来帮助判断设备性能指标。而且我们希望能够微调该频率。采用压控振荡器得到的频率不够精确,微调频率步骤烦琐,耗时漫长,因此有些测试项目限制了压控振荡器的使用。   Mega系列单片机是Atmel公司于2002年起陆续推出的。这款AVR增强型单片机具有速度快,抗干扰能力强,价格低廉等诸多优点。为了加快AVR单片机的软件编制,Atmel以及第三方提供的开发工具多种多样,程序开发方便有效。该单片机内部FLASH结构功能灵活,加锁后很难解密,可以最大限度地保护知识产权。AVR单片机可以广泛应用于通信、野外测试、汽车电子、医疗器械等领域,并且适用于各种低电压、低功耗的
[单片机]
基于AVR<font color='red'>单片机</font>的高精度频率调节器设计
单片机数码管和矩阵按键实现密码锁功能
用数码管和矩阵按键实现密码锁功能,我的理解是实现输入数据并判断数据是否和密码一致,并且更改密码。矩阵按键是4×4的,图在下面。先说功能,初始密码值4321。第一部分:当数码管未进行闪烁的时候,按下S11是进行数据和密码的比较,当正确时数码管显示1111,错误显示2222。按下S12进行数据移位(口误了,应该是 数据选择 而不是数据移位,但意思大家一定要理解,因为下面的我都口误了),这时数码管闪烁,你按下S1到S10可以进行设定,当按四次S12的时候 或者按下S13 可以不闪烁了,这时按下S11才能进行数据比较(意思是只有不闪烁才能进行数据比较)。这是数据和密码的比较。第二部分:当数码管不进行闪烁的时候才能进行密码的更改,按下
[单片机]
用<font color='red'>单片机</font>数码管和矩阵按键实现密码锁功能
STC单片机timer2捕获模式测频率
在使用STC单片机测频率最常用的方法是在一定时间内计算脉冲个数,这种方式一般需要一个计数器和一个定时器配合,而且对低频信号也不太准确,下面我们可以用到timer2的捕获模式通过测量两个下降沿的时间,来计算频率,这样做仅使用timer2就好了,而且对低频信号测量准确,经实际测试,在100Hz一下时,精度可达0.05Hz。 下面先介绍一下STC51 timer2的捕获模式: 在捕获模式中,通过T2CON中的EXEN2设置两个选项,如果EXEN2=0,定时器作为一个16位的定时器或计数器,溢出时置位TF2。该位可用于产生中断(ET2=1)。如果EXEN2=1,就增加了一个特性,即外部输入T2EX(P11)有下降沿时,将timer
[单片机]
STC<font color='red'>单片机</font>timer2捕获模式测频率
此款MCU自带“防火墙”了
瑞萨电子(Renesas)是全球首屈一指的微控制器供应商,瑞萨MCU全球市场占有率第一,以绝佳的品质、功能和丰富的新兴市场应用获得客户的选择与依赖。世强与瑞萨建立起了稳固的长期合作伙伴关系。世强代理的RX63N/RX631系列是瑞萨最新推出的32位微型控制器,采用LQFP、TFLGA及LFBGA封装,能够满足多种嵌入式设备的需求。该系列MCU的最小外型尺寸仅为6×6 mm,支持48到177个引脚的封装形式,且类似封装产品之间具有针脚兼容性,可以轻松转移设计。同时世强代理的瑞萨电子还能为客户提供强大的开发环境,包括两款仿真器:低成本E1和高性能E20仿真器。 图1:世强代理的RX63N/RX631微控制器开发平台 丰富的片上资源
[嵌入式]
此款<font color='red'>MCU</font>自带“防火墙”了
图解单片机网卡RAM区如何发送数据包
  本文深入研究了使用单片机控制网卡,接入以太网Ethernet,即IEEE802.3协议网络,实现串口仪器的网络化。   1 硬件结构和电路设计   1.1 总体设计   整个系统设计采用ATMEL公司8位通用微控制器AT89C51作为主处理器,驱动REALTEK公司的10M以太网控制芯片RTL8019AS,实现串口数据和外部网络互连。   1.2 网卡接线设计   RTL8019AS为100管脚PQFP封装,工作电压5V。其接线原理图如图1所示。地址SA0-4接到单片机P2的低五位上;SA8和SA9接电源;其余SA5-7,SA10-19这13个管脚全部接地;IORB和IOWB分别接单片机的读写信号端;RSTDRV接到
[单片机]
图解<font color='red'>单片机</font>网卡RAM区如何发送数据包
基于单片机的多机并行通信设计
  1. 问题的提出   某系统中使用了三路串行接口的传感器(GPS、压力和风向)及三路模拟电流(4~20mA)接口的传感器(湿度、温度和水位)。现需要将这些数据汇总后通过串口上传给PC机,并且要求每路信号数据都能够实时独立的接收。   2.系统设计   经过分析,我们分别使用一块2051单片机接收各路串口传感器的数据,同时使用一块多路高精度ADC对转换成电压的温度等信号采样,系统结构图如图1所示。主从机之间的具体管脚连接参见图2。 图1 系统结构框图   系统中51单片机作为主机控制着整个系统的动作并发起每次通信,每块2051作为实时从传感器获取数据并在主机控制下完成通信。主机和各从机之间通过并口连接通信。主从机工
[单片机]
基于<font color='red'>单片机</font>的多机并行通信设计
基于单片机8251和MODEM设计的远程通信系统
1 前言 我国中大型石油化工企业大都采用小电流接地系统来供电,电力系统较为庞大。这类系统一般拥有几座乃至十几座35kV级的总降压站,几十座6~10kV级的高压配电室,分布范围较广,有的变电站离开总调有十几km之远。因此,各变电站的电量参数(电压、电流、相位、功率因数等)的准确、可靠传送,对总调及时决策、对提高供电质量和确保电力运行安全尤为重要。这里,我们采用单片微型计算机控制调制解调器进行远程实时数据传送,获得了满意的效果。 2 硬件系统设计  系统网络图如图1所示。本系统的上位机采用PII微机,通过MODEM←→交换网←→MODEM与作为下位机的单片机系统相连接。电力传感器采集的数据信号输入单片机系统,经软件程序处理后由异
[单片机]
基于<font color='red'>单片机</font>8251和MODEM设计的远程通信系统
时分多线程在单片机系统中的应用研究
随着IT技术的飞速发展,单片机应用系统几乎覆盖了社会生活的各个角落,从消费电子、通信网络、工业控制、汽车到军事等领域皆可觅其踪影;而在硬件、软件以及网络技术日益成熟的今天,其应用形式正呈现多样性和复杂性。尤其是SoC、可配置内核等性能的出现,其可裁剪性使系统设计成本大大降低,减小了系统设计工作量,为单片机应用提供了便利,在产品设计、更新换代等应用方面也备受青睐。 为适应这些纷繁的应用需求.本文就时分多线程技术在单片机中的应用进行了介绍。该方法为构建低成本、高效、便于维护的单片机系统提供了良好的体系框架结构和设计思想。 1 时分多线程结构应用 通常,在单片机应用的各种控制系统中,都或多或少地存在着诸如现场数据
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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