


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2005 10 $October 2005TComputer Engineering 31 Q 20 20Vol.31fl$:10003428(2005)20022603$:A$:TP316实时操作系统uC/OS-II在ARM9上移植的实现楚红雨 1,李磊民 1,黄玉清 1,张静 2(1. 西南科技大学信息与控制工程学院,绵阳 621010;2. 北京理工大学计算机科学与工程系,北京 100081)摘 要:介绍了目前在嵌入式系统应用中非常流行的实时操作系统 uC/OS-II 和 ARM 微处理器,详细论述了 uC/OS-II 在基于 ARM 体系结构的 Motorola 32-bit 嵌入式微控制器 MC9328MX1 上移植的实现过程,指出了在 uC/OS-II 的移植过程中的重点和难点问题,得出了 uC/OS-II在 ARM 上的移植的一般性方法。 关键词:uC/OS-II;ARM;MC9328MX1;移植Implementation of Porting RTOS uC/OS-II to ARM9CHU Hongyu1, LI Leimin1, HUANG Yuqing1, ZHANG Jing2(1. School of Information & Control, Southwest University of Science and Technology, Mianyang 621010 ;2. Department of Computer Science and Engineering, Beijing Institute of Technology, Beijing 100081)【Abstract】The paper introduces the very popular RTOS uC/OS-II and processor based on ARM core in embedded system applications. Then itdescribes the realization and the methods of porting uC/OS-II to MC9328MX1, Motorola 32 bit MCU based on ARM architecture in detail. At the same time, it presents the most important and difficult problems in the course of porting uC/OS-II and summarizes the general methods for porting it to ARM.【Key words】uC/OS-II; ARM; MC9328MX1; Porting1 嵌入式操作系统 uC/OS-IIuC/OS-II 是一个完整的、可移植、固化、裁剪的占先式实时多任务内核1。它总是运行最高优先级的就绪任务,不 支持轮转法任务调度。每个任务被赋予了唯一的优先级,使 用自己独立的堆栈。uC/OS-II 提供了许多系统服务,如邮箱机制、队列机制、信号量机制、固定大小的内存分区以及时间相关的函数等。目前,uC/OS-II 已经应用在很多领域,比 如医疗设备、发动机控制、网络设备、自动提款机及工业机 器人等。uC/OS-II 最大的特点就是它的源代码开放,这是其它商 业实时内核无法比拟的。它是针对嵌入式应用而设计的,而 且,在设计之初就充分考虑到了它的可移植性,它的大部分源代码都是用高可移植性的 ANSI C 编写的。uC/OS-II 可以移植到很多的处理器上,它能运行在大部分的 8bits,16bits,32bits,甚至 64bits 的微处理器和 DSP 上,目前 uC/OS-II 已 在超过 40 种不同架构的微处理器上运行。2 ARM 微处理器ARM 公司于 1990 年 9 月在英国成立。自成立以来,ARM公司在 32bits 位 RISC CPU 开发领域不断取得突破,其结构 已经从 V3 发展到 V6,而且一直以 IP(Intelligence Property) 提供者的身份向各大半导体制造商出售知识产权,加上其设 计的芯核具有功耗低、成本低和功能强等显著优点,因此获 得众多的半导体厂家和整机厂商的大力支持,在 32bits 嵌入式应用领域获得了巨大的成功,目前已经占有 75%以上的32bitsRISC 嵌入式产品市场,几乎成了事实上的标准2。目 前 广泛应 用在所有 ARM 微处 理器系 列中的是 ARM7 和 ARM9 系列,本文所移植的对象 MC9328MX1 就是一款由 Motorola 公司生产的基于 ARM920T 核的微处理器。3 动代码编写基于 ARM 微 处理器的系 统 一般为复杂 的 片上系统 (SoC),这种复杂系统的多数硬件模块都是可配置的,需要软件设置为特定的工作状态,因此在用户的应用程序之前,需要有一些专门的代码完成对系统的初始化。由于这类代码直接面对 ARM 微处理器内核和硬件控制器,一般都使用汇 编语言完成。初始化代码所完成的操作与具体的硬件平台相 关,但一般包括如下内容:(1)初始化异常向量表;(2)初始化 存储器系统;(3)初始化堆栈;(4)初始化有特殊要求的端口、 设备;(5)初始化应用程序的运行环境;(6)改变处理器的运行 模式;(7)调用主应用程序。需要注意的是,在对处理器每个模式的堆栈指针寄存器 进行初始化的时候,用户模式下的堆栈寄存器必须最后进行初始化。因为在用户模式下,当前程序状态寄存器的值是不 能用 MSR 指令改变的,不能用 MSR 指令从用户模式切换到 其它的特权模式,所以如果在其它特权模式的堆栈指针被初 始化之前切换到用户模式,就无法对特权模式下的堆栈指针 进行初始化。我们是使处理器运行于系统模式下。4 uC/OS-II 的移植C/OS-II 的移植条件是:只要该处理器有堆栈,有 CPU内部寄存器入栈、出栈指令;使用的 C 编译器支持内嵌汇编(inline assembly)或者该 C 语言可扩展,可连接汇编模块, 使得关中断、开中断能在 C 语言程序中实现。MC9328MX1符合其移植条件。uC/OS-II 的移植集中在 3 个文件,os_cpu.h,os_cup_a.s, os_cpu_c.c。其中 os_cpu.h 主要包含编译器相关的作者简介:楚红雨(1979),男,硕士生,主研方向:嵌入式系统应用;李磊民,教授;黄玉清,副教授;张 静,硕士生收稿日期:2004-09-05E-mail:chu_数据类型的定义、堆栈类型的定义以及几个宏定义和函数说明。而 os_cpu_c.c 中则包含与移植有关的 C 函数,包括堆栈 的初始化函数和一些钩子(hook)函数的实现。os_cpu_a.s 中则包含与移植有关的汇编语言函数,包括开/关中断、上下 文切换、时钟中断服务程序等。移植中关键的功能模块实现 如下文所述。4.1 开/关中断的实现uC/OS-II 和其它所有的实时内核一样,在访问操作系统的临界区之前必须关闭中断,访问之后开中断。这可以保证 uC/OS-II 的临界区代码不会被多个任务或中断服务程序同时 访问,避免造成共享数据(uC/OS-II 的全局变量)的不一致 性。开/关中断有 3 种实现方法,最简单的方法是仅用该内核 提供的关中断指令实现宏 ENTER_CRITICAL_SECTION(),仅用开中断指令实现宏 EXIT_CRITICAL_SECTION()。这种方法可以减少中断延迟时间,但它可能存在一点小问题,就 是如果程序在调用 ENTER_CRITICAL_SECTION()之前,中 断已经被禁止,那么在调用 EXIT_CRITICAL_SECTOIN()之 后,中断被允许,这可能不是程序所期望的。这种简单的实 现方法对某些情况不适用。另外两种方法见参考文献1,在此不做赘述。在大部分情况下,第 1 种实现方法可以满足应用的要求, 用以下的汇编子程序可以实现关中断:EnterCriticalOSStartHighRdy; Call OSTaskSwHook() BLOSTaskSwHook; Set OSRunning to TRUE MOV R0,#1LDR R1,=OSRunningSTRB R0,R1; Get stack ptr for task to resumeLDRLDR LDRR1,=OSTCBHighRdyR1,R1 SP,R1,#0; OSTCBStkPtr is at +0; Restore saved context & return to taskLDMFDSP!,R0MSR CPSR_cxsf, R0LDMFDSP!,R0-R12, R14, PC4.4 任务级上下文切换的实现任务级上 下文 切换是由 汇编 子程序 OSCtxSw 实现 。OSCtxSw 首先保存 R14,R14 中保存的是任务的返回地址。然后再保存其它的寄存器和 CPSR。接着进入 CmnCtxSw 标识的程序片断,主要完成的功能是:首先将当前任务的堆栈指针 保存 到任 务控 制块 ;然 后调 用用 户扩 展的 钩子 函 数OSTaskSwHook() 来完成扩展功能。接着更新全局变 量OSTCBHighRdy、 OSTCBCur、OSPrioHighRdy、 OSPrioCur将当前任务的指针指向新任务。最后取出新任务的堆栈指针 从新任务的堆栈中恢复寄存器的值,开始新任务的执行。OSCtxSw; Save current task contextSTMFDSP!, R0, LRMRS R0, CPSRORR R0, R0, #I_BIT:OR:F_BIT MSR CPSR_c, R0STMFDSTMFDSP!, R14SP!, R0-R12, R14; Save task PC; Save LR and other registers; Save current CPSRLDMFDSP!, R0, PCMRS R0, CPSRSTMFDSP!, R0 CmnCtxSw用类似的方法可以实现开中断。4.2 堆栈的初始化 堆栈的 初始化函数用 于定义当创建任 务时,任务堆栈中上下文(context)的内容, 实际上也定义了上下文的保存结构。上下文 的保存结构可如图所示。在堆栈的上下文中,PC 应该存放任务 执行的第 1 条指令。R14( LR )中存放 的是任务的返回地址,它可存放任务结 束函数的地址,也可存放零地址(复位; Store stack ptr of task (lives in OSTCBCur-OSTCBStkPtr)LDRLDR STRR1,=OSTCBCurR1,R1 SP,R1,#0; OSTCBStkPtr is at +0; Call user definable OSTaskSwHook()BLOSTaskSwHook; Set current task to new task图 1 上下文的保存结构LDRLDR LDR LDR LDR LDRBR2,=OSTCBHighRdyR3,=OSTCBCur地址)等,这取决于具体的应用环境。R0 寄存器存放的是传递给任务的参数。CPSR 存放的是任务运行时处理器的初始 状态。任务堆栈的上下文保存结构与任务切换的实现密切相 关,所以,在设计堆栈的上下文结构的时候,必须把能方便 和快速地实现任务切换作为一个重要因素来考虑。4.3 OSStartHighRdy 的实现 操作系统初始化后,开始执行系统内第 1 个最高优先级的任务。对于第 1 个执行的任务,不需要进行上下文保存, 只需恢复任务上下文即可。第 1 个任务的执行是通过调用汇 编子程序 OSStartHighRdy 实现的。此子程序首先调用钩子函 数 OSTaskSwHook(),完成用户扩展的操作系统功能,然后将 OSRunning 的值置为真,表示开始任务的执行,从而保证任 务切换操作的正确执行。紧接着从具有最高优先级的任务控 制块中取得任务的堆栈指针,初始化堆栈指针寄存器 SP。然 后恢复 CPSR,恢复其它的寄存器,开始执行最高优先级的R4,=OSPrioHighRdyR5,=OSPrioCurR0,R2 R1,R4STR R0,R3STRB R1,R5;Getstackptrfortasktoresume(livesOSTCBHighRdy-OSTCBStkPtr)inLDR SP,R0,#0; Restore saved context & return to task; OSTCBStkPtr is at +0LDMFDSP!,R0MSR CPSR_cxsf, R0LDMFDSP!,R0-R12, R14, PC4.5 时钟中断服务程序的实现当时钟中断(IRQ)到来时,处理器跳转到时钟中断服务程序,时钟中断服务程序主要调用函数 OSTimeTick,这个PCLR R12 R0 CPSR减 1 、更新系统时间等。时钟中断服务程序由汇编子程序 OSTickISR 实现。包括以下步骤:(1)保存被中断程序的上下 文环境;(2)执行标识中断结束的指令;(3)切换到系统模式并 允许 IRQ 和 FIQ 中断;(4)保存系统模式下相关的寄存器;(5) 在调用 OSTimeTick 函数之 前,先调用操 作系统提供的 OSIntEnter 函数,以使操作系统对中断程序进行跟踪。调用 OSTimeTick 之后,再调用函数 OSIntExit,通知操作系统中断完成。4.6 中断级上下文切换的实现ARM 处理器在跳到中断服务程序时,自动关闭 IRQ 中断。在程序设计中要保证 IRQ 中断的可重入性,即一个 IRQ 中断程序能被另一个 IRQ 中断。为了能够跟踪中断服务程序, 操作系统提供了两个函数:一个是 OSIntEnter,在开始运行实际的中断服务之前调用;另一个是 OSIntExit,在退出中断服务时调用。由于中断服务程序可能会激活一个更高优先级 的任务,因此 OSIntExit 对就绪任务队列进行检查,如果有更 高优先级的任务且任务调度允许,则调用中断级的上下文切 换例程,保存被中断的任务,运行高优先级的任务。 OSIntCtxSw 过程 用于 实现 中断 级的 上下 文切 换, 它 由OSIntExit 调用。OSIntCtxSw 的主要功能是将被中断任务的执行环境保存到其堆栈中,而被中断任务堆栈指针的保存、 高优先级任务执行环境的恢复与执行,由例程 CmnCtxSw 完 成。因此,实现 OSIntCtxSw 的关键在于如何收集被中断任务 的上下文。下面的代码段实现了中断级任务上下文的保存:OSIntCtxSwSYS mode with IRQ disabledADD SP, SP, #8; AdjustOSIntExitstack because of stacking ofLDMFDLDMDBof system mode STMFD STMFDSP!, R14R12!, R0; Pop LR_SYS; R12 contains the initial addressSP!, R0SP!, R14; Store return address PC; Store LR_SYS; Transfer stack pointer of IRQMOV R14, R12LDMDBSTMFD LDMDB STMFDR14!, R0-R12SP!, R0-R12 R14!, R0 SP!, R0; Store R0-R12; Store SPSRB5 结论CmnCtxSw移植程序在普天慧讯和北京微芯力联合推出的 WS-903嵌入式教学实验箱上实现,经该环境的多任务运行结果表明,系统稳定可靠。同时,移植的方法在同类 ARM 架构处理器上具有较强的通用性,移植程序在不同处理器上运行时,主 要修改的地方在中断级任务切换部分程序和定时中断程序,工作量非常小,作者已在另外两款处理器( S3C4510B 和AT9140800)上移植得到验证。 参考文献1 Labrosse J J. 邵贝贝译. UC/OS-II源码公开的实时嵌入式操作 系统M(第 1 版). 北京:北京航空航天大学出版社, 20032 李驹光, 聂雪媛, 江泽明等. ARM 应用系统开发详解基于S3C4510B 的系统设计M. 北京:清华大学出版社, 20033 ARM Developer Suite (Version 1.2).Developer Guide. ARM Limited, 19994 MC9328MX1 Reference Manual. Motorola Corporation, 2002-04MSR CPSR_c, #ARM_MODE_IRQ:OR:I_BITIRQ mode with IRQ disabled; SwitchtoADD SP, SP, #4*15; Adjust stack pointer of IRQ modeMOV R12, SP; Save the SP to transfer it to SYS modeMSR CPSR_c, #ARM_MODE_SYS:OR:I_BIT; Switchto(上接第 145 页)3.2.5 数据库安全 将数据库建立在裸设备上,这样不易被非法删除和修改。建立单独的应用库,同系统库 Master 独立开来,将数据库的 用户管理放在 Master 库中,严格管理数据库超级用户 sa 的 密码,而且数字和字母以及大小写字母要混合使用,规定一 定时间间隔必须变换。3.2.6 备份和恢复备份和恢复是非常有效的安全措施。系统每天日终时自 动做数据库的 Dump 备份和表数据的 Bcp 备份。同时将备份 出来的数据放在远程,实现了远程备份工作。通过这些措施 以备系统出现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能化养殖设备故障预警系统创新创业项目商业计划书
- 2025安全试题库及答案解析
- 庭院苗木创新创业项目商业计划书
- 江苏省安全知识竟赛题库及答案解析
- 防雷安全测试题及答案解析
- 工厂安全知识培训考试题及答案解析
- 三美岗前资格考试题及答案解析
- 2025年防冻液行业研究报告及未来行业发展趋势预测
- 2025年磁悬浮空调行业研究报告及未来行业发展趋势预测
- 2025年多用蒸锅行业研究报告及未来行业发展趋势预测
- 现状调查培训课件
- 初级社会工作实务全本课件
- PS考试试题及答案
- 新都区文化产业发展建议报告
- 时代邻里4度°服务美学品质关怀体系
- 养老机构行政值班查房记录表格
- EPC合同条件(银皮书)-1999
- 外研版五年级上册英语(全册)单元教材分析
- 华为-计划、预算和核算
- 细胞凋亡和细胞自噬(课堂PPT)
- 第一章光的电磁理论ppt课件
评论
0/150
提交评论