0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在S3C44B0x微处理器上实现μC/OS-Ⅱ的运行操作

电子设计 来源:网络整理 作者:佚名 2020-03-30 08:18 次阅读

目前,嵌入式系统工业控制、家用电器、移动通信、PDA等各种领域得到了越来越广泛的应用。由于用户对嵌入式产品的性能要求越来越高,程序设计也变得越来越复杂,这就需要一个通用的嵌入式实时操作系统来对其进行管理和控制。对移植了操作系统的嵌入式系统进行设计和开发,可以大大减小程序员的负担,对于不同的应用可以按照相同的步骤来完成系统的设计。

嵌入式系统是根据IEEE(电气电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

μC/OS-Ⅱ是一种简单高效、源代码公开的嵌入式实时操作系统,具有良好的可扩展性和可移植性,被广泛的应用到各种嵌人式处理器上。μCOS-Ⅱ操作系统拥有可固化,可裁剪,可剥夺性的实时内核,可同时管理64个系统任务。

1、 μCOS-Ⅱ概述

μCOS-Ⅱ从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时钟发生器等。

对于我们采用的S3C44B0微处理器来说,在系统加电之后,指令指针是指向0x00000000的,也就是说系统是从0x00000000开始之行。正是因为这个原因,通常这个地址空间我们会安排给FLASH存储器。这样我们可以将BootLoader启动代码以及我们之后将会要启动的uClinux操作系统映像烧写到Flash里。对于RAM地址空间,S3C44B0芯片将其设定为从0x0C000000到0x0FFFFFFF一共64MB的范围里。我们可以通过设定存储器控制寄存器来重新设定RAM的大小。

3、 嵌入式操作系统μCOS-Ⅱ的移植

3.1 移植μCOS-Ⅱ的条件

所谓移植,就是使一个实时内核能在其他的微处理器或微控制器上运行。为方便移植,大部分μCOS-Ⅱ的代码都是用C语言编写的,但是仍需要用C语言和汇编语言编写与处理器硬件相关的代码,这是因为μCOS-Ⅱ在读/写处理器的寄存器时,只能通过汇编语言来实现,要使μCOS-Ⅱ正常运行,处理器必须满足以下要求:

(1)处理器的C编译器能产生可重人型代码;

(2)处理器支持中断,并且能产生定时中断(通常为10~100 Hz);

(3)用C语言就可以开/关中断;

(4)处理器能支持一定数量的数据存储硬件堆栈;

3.2 搭建移植环境

本次移植在如下的环境中完成:

编译工具采用ARM公司的ADS 1.2。ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。ADS 1.2由命令行开发工具,ARM实时库,GUI开发环境,实用程序和支持软件组成。有了这些部件,用户就可以非常方便地为ARM系列的处理器编写和调试自己的应用程序了。

3.3 μCOS-Ⅱ的移植

μCOS-Ⅱ的硬件/软件体系结构如图1所示,对μCOS-Ⅱ的移植其实就是对与处理器有关的代码进行重新编写或修改。

在S3C44B0x微处理器上实现μC/OS-Ⅱ的运行操作

由图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()来保护临界段代码免受多任务或中断服务例程的干扰;。在移植该文件时,需要编写和修改的部分代码如下所示:

①设置与编译器相关的数据类型

在S3C44B0x微处理器上实现μC/OS-Ⅱ的运行操作

③设置堆栈的增长方向

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

在S3C44B0x微处理器上实现μC/OS-Ⅱ的运行操作

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

在S3C44B0x微处理器上实现μC/OS-Ⅱ的运行操作

(3)移植OS_CPU_A.ASM文件

在移植OS_CPU_A.ASM文件时,要求用户编写4个简单的汇编语言函数,它们分别是:OS-StartHighRdy(),OSCtxSw(),OSIntCtxSw(),OS-TickISR()。

①OSStartHighRdy():运行最高优先级的就绪任务。此函数仅在多任务启动时执行一次,用来启动第1个(也就是最高优先级)任务运行。它的程序代码如下:

在S3C44B0x微处理器上实现μC/OS-Ⅱ的运行操作

②OSCtxSw():任务级任务切换函数。实现CPU在正常运行时任务间的切换,完成对当前任务堆栈的保存和对最高优先级任务堆栈的弹出,使最高优先级的任务得到运行。

③OSIntCtxSw():中断级的任务切换函数。在中断服务程序执行完后,如果中断使得更高优先级的任务处于就绪状态,则该函数实现对任务的切换:保存中断发生之前的那个任务的执行现场。恢复已处于就绪态的那个更高优先级任务的执行现场,使优先级更高的那个任务得以运行,从而完成对任务的切换。

④OSTickISR():是系统时钟的中断服务函数。该函数的主要功能是检查是否有由于延时而被挂起的任务转为就绪态。如果有,则调用OSIntCtxSw()函数进行任务切换,使已处于就绪态的且具有最高优先级的任务运行。

4、 测试移植代码

为S3C44B0x移植好μC/OS-Ⅱ后,紧接着的工作就是验证移植好的μC/OS-II是否能正常工作。通过四个步骤来完成对移植代码的测试:确保C编译器、汇编编译器及链接器正常工作;验证OSTaskStkInit()和OSStartHighRdy()函数;验证OSCtxSw()函数;验证OSIntCtxSw()和OSTick-ISR()函数。

验证OSCtxSw函数,在已经知道OSTaskStkInit函数正确后,就可以在程序中加入一个任务,并不断的切换到空闲任务。这里是使用的软件中断swi来调用OSCtxSw函数的。

5、 结束语

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

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5065

    文章

    18997

    浏览量

    302622
  • 操作系统
    +关注

    关注

    37

    文章

    6718

    浏览量

    123165
  • 微处理器
    +关注

    关注

    11

    文章

    2246

    浏览量

    82287
收藏 人收藏

    评论

    相关推荐

    基于S3C44B0X微处理器实现运动系统电流信号采集电路的设计

    本文首先以三星公司的S3C44B0X微处理器为核心芯片,设计电流信号采集电路,然后介绍了非线性能量故障诊断算法。最后以X-Y运动平台为实验对象,验证该算法的有效性。
    的头像 发表于 03-24 16:23 6427次阅读
    基于<b class='flag-5'>S3C44B0X</b><b class='flag-5'>微处理器</b><b class='flag-5'>实现</b>运动系统电流信号采集电路的设计

    S3C44B0X pdf

    S3C44B0X p
    发表于 06-27 09:37 76次下载

    s3c44b0x中文资料,s3c44b0x中文数据手册

    S3C44B0X 中文数据手册...........................................................116 IIC 总线接口
    发表于 06-27 09:40 152次下载

    基于S3C44B0X微处理器的JFFS2件系统的实现

    基于S3C44B0X微处理器的JFFS2件系统的实现
    发表于 03-28 09:50 16次下载

    μC OS-II S3C44B0X 处理器的移植

    介绍实时操作系统μC/OS-II 的特点和内核结构,给出μC/OS-II Samsung 嵌入
    发表于 05-15 13:34 18次下载

    基于S3C44B0X 的uClinux的移植

    S3C44B0X 作为一款以ARM7TDMI 为内核的微处理器,正日益受到广泛的应用;uClinux作为一种运行于没有MMU 的嵌入式微处理器的Linux 衍生
    发表于 05-15 15:40 14次下载

    基于S3C44B0X的嵌入式网络通信研究

    S3C44B0X 作为一款以ARM7TDMI 为内核的微处理器,得到了广泛的应用。本文采用该处理器,使用到广泛应用的源代码公开的uClinux 操作系统,
    发表于 06-15 15:44 18次下载

    μC/OS-S3C44B0X的移植

    本文简介了一种实时多任务内核μC/OS-Ⅱ。并根据S3C44B0X 芯片的硬件特性,给出了一种把μC/OS-Ⅱ移植到
    发表于 08-31 11:46 18次下载

    基于S3C44B0X的UC/GUI的移植研究

    本文通过高性能微处理器ARM运行uc/GUI以实现友好的图形界面,研究了uc/GUI基于A
    发表于 09-02 11:33 21次下载

    基于S3C44B0X处理器的VxWorks中断设计

    通过基于立宇泰S3C44B0X 开发板的BSP 移植调试,阐述了VxWorks 的异常中断处理机制,实现了VxWorks 基于S3C44B0X 处理
    发表于 09-03 11:25 17次下载

    S3C44B0X中文手册 pdf

    S3C44B0X中文数据 三星的S3C44B0X 16/32位RISC处理器被设计来为手持设
    发表于 02-10 12:07 254次下载

    基于S3C44B0X和μC/OS-Ⅱ智能家居嵌入式系统设计

    基于S3C44B0X和μC/OS-Ⅱ智能家居嵌入式系统设计   随着社会经济的飞速发展及计算机控制技术等科技的进步,人们对自身的生活和工作环境有了更高的要求,由此对家
    发表于 02-26 12:26 673次阅读
    基于<b class='flag-5'>S3C44B0X</b>和μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-</b>Ⅱ智能家居嵌入式系统设计

    微处理器S3C44B0X音频文件播放

    微处理器S3C44B0X音频文件播放 S3C44B0X是三星公司针对嵌入式系统推出高性价比微处理器,它是基于ARM7TDMI内核的16/32位RISC
    发表于 03-16 11:46 769次阅读
    <b class='flag-5'>微处理器</b><b class='flag-5'>S3C44B0X</b>音频文件播放

    S3C44B0X微处理器内置LCD控制

      引言   S3C44B0X微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制解决方案。它使用ARM7TDMI核,工作66MHz,集成了LCD控制
    发表于 08-30 10:18 1710次阅读
    <b class='flag-5'>S3C44B0X</b><b class='flag-5'>微处理器</b>内置LCD控制<b class='flag-5'>器</b>

    S3C44B0X原理图

    S3C44B0X原理图:
    发表于 09-14 15:28 167次下载
    <b class='flag-5'>S3C44B0X</b>原理图