UCOS-Ⅱ在 LPC2131 中的移植.doc
《UCOS-Ⅱ在 LPC2131 中的移植.doc》由会员分享,可在线阅读,更多相关《UCOS-Ⅱ在 LPC2131 中的移植.doc(7页珍藏版)》请在三一文库上搜索。
1、精品论文UC/OS-在 LPC2131 中的移植邓庆田 1,徐群 21 河海大学电气学院,江苏南京,(210098)2 河海大学电气学院,江苏南京,(210098)E-mail:摘要: UC/OS-II 是一个源代码免费、简洁、易用的基于优先级的嵌入式抢占式多任务实 时内核。其内核提供任务间同步与通信、内存管理和中断等功能,适合小型控制系统, 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。正是这些特点近年 来普遍受到人们的关注,本文介绍嵌入式操作系统 UC/OS-的主要特点和基本原理,以LPC2131 为例介绍其在嵌入式开发平台中的移植方法和技巧,重要分析其移植技术,并 详细描述
2、了其移植过程,并分析了一些测试实验。关键字:嵌入式操作系统移植 多任务 uc/os- 中图分类号:TP368.21.引言嵌入式系统是现代网络技术之后,又一个新的技术发展方向,由于嵌入式系统具有体积 小、性能强、功耗低、可靠性高以及面向行业应用广泛的突出特征,目前已经广泛地应用于 军事、消费电子、网络通信、工业控制等各个领域。目前市场上的商用嵌入式操作系统产品,如 Vxwork、PSOS、和 Windows CE 等已经十分 成熟,提供有力的开发和调试工具,但开发成本昂贵,且源代码不公开,并不适用于一些小 系统的开发。而 UC/OS-是一种多任务实时操作系统,内核源码公开,其核心代码短小精 悍,
3、最小只需要几 K 的 ROM,移植性强,具备了实时操作系统的全部性能,特别适用初学者 学习嵌入式技术使用。2.UC/OS-的特点和原理2.1 UC/OS-的主要特点 优先级可剥夺的实时多任务操作系统。 可以处理和调度多大 64 个任务,任务的优先级可在运行中根据需要进行动态调整。 提供很多系统服务,如邮箱机制,队列机制,信号量机制。 具有良好的可裁减性。2.2 UC/OS-的核心工作原理UC/OS-II 的工作核心原理是:近似地让最高优先级的任务就绪任务处于运行状态。首 先,初始化 CPU,再进行操作系统初始化,主要完成任务控制块 TCB 初始化,TCB 优先级表 初始化,TCB 链表初始化,
4、事件控制块(ECB)链表初始化,空任务的创建等等;然后就可以 开始创建新任务,并可在新创建的任务中再创建其他的新任务;最后调用 OSStart()函数启 动多任务调度。在多任务调度开始后,启动时钟节拍源开始计时,此节拍源给系统提供周期 性的时钟中断信号,实现延时和超时确认1。操作系统在下面的情况下进行任务调度:中断(系统占用的时间片中断 OSTimeTick()、 用户使用的中断)和调用 API 函数(用户主动调用)。一种是当时钟中断来临时,系统把当前 正在执行的任务挂起,保护现场,中断断处理,判断有无任务延时到期,若有则使该任务进 入就绪态,并把所有进入就绪态的任务的优先级进行比较,通过任务
5、切换去执行最高优先级- 7 -的就绪任务,若没有别的任务进入就绪态,则恢复现场继续执行原任务。另一种调度方式是任务级的调度即调用 API 函数(由用户主动调用),是通过发软中断命令或依靠处理器在任务 中找出目前处于就绪态的优先级最高的任务去执行。当没有任何任务进入就绪态时,就去执 行空任务。移植,就是使一个实时内核能在某个微处理器或微控制器上运行。为了移植方便,大部 分的 UC/OS-代码是 C 语言编写的,但仍需要用汇编语言写一些与处理器相关的代码,这 是因为 UC/OS-在读写处理器寄存器是只能通过汇编语言实现。由于 UC/OS-仅是一个内 核式操作系统,并且在设计时就已经充分考虑了可移植
6、性。所以 UC/OS-的移植相对来说 是比较容易的。要使 UC/OS-能够运行,处理器要满足以下要求2: 处理器的 C 编译器能产生可重入代码。 用 C 语言就可以打开或关闭中断。 处理器支持中断。并且能产生定时中断。 处理器支持能够容纳一定数量数据的硬件椎栈。 处理器将椎栈指针和其他 CPU 寄存器读出并存储到锥栈或内存中的指令。3. LPC2131 芯片的介绍LPC2131 是飞利浦公司生产的基于一个支持实时 16/32 位 ARM7TDMI-STM CPU 芯片,特 别适用于工业控制和 POS 机等小型应用中,主要有以下特点3:16/32 位 ARM7TDMI-S 核,超小 LQFP64
7、 封装。8 的片内静态 RAM 和 32 的片内 Flash 程序存储器。128 位宽度接口/加速器可实高 达 60MHz 工作频率。1 个(LPC2131/2132)或 2 个(LPC2138)8 路 10 位的 A/D 转换器,共提供 16 路模 拟输入,每个通道的转换时间低至 2.44us。2 个 32 位定时器/计数器(带 4 路捕获和 4 路比较通道)、PWM 单元(6 路输出)。实时时钟具有独立的电源和时钟,可在节电模式中极大地降低功耗。多个串行接口,包括 2 个 16C550 工业标准 UART、2 个高速 I2C 接口(400 kbit/s)、SPITM 和具有缓冲作用和数据长
8、度可变功能的 SSP。向量中断控制器。可配置优先级和向量地址。4. UC/OS-移植过程4.1 移植步骤UC/OS-移植工作包括以下几个内容: 用#define 设置一个常量的值(OS_CPU.H 文件中)。 声明 10 个数据类型(OS_CPU.H 文件中)。 用#define 声明 3 个宏(OS_CPU.H 文件中)。 用 C 语言编写 6 个简单的函数(OS_CPU_C.C 文件中)。 编写 4 个汇编语言函数(OS_CPU_A.ASM 文件中)。应 用 程 序 软 件UC/OS-(与 CPU 无关)OS_CORE.CUCOS_.C OS_MBOX.C OS.C OS_MEM.COS_
9、TASK.C OS_SEM.C OS_TIME.CUC/OS-(应用相关代码)OS_CFG.H INCLUDES.HUC/OS-(与 CPU 相关)OS_CPU.HOS_CPU_A.ASMOS_CPU_C.CUC/OS-全部源代码量大约是 60007000 行,共 15 个文件。移植到 LPC2131 的处理器上。需要修改三个与之相关体系结构的文件,代码量大约是 500 行。以下是介绍三个文件的 移植工作。4.2 OS_CPU.H 文件数据类型的修改与所用的编译器相关,不同的编译器使用不同的字节长度表示同一类 型,比如 int,同样在 x86 平台上,GNU 的 gcc 编译为 4bytes,
10、而在 MS VC+则编译为 2bytes。 本文使用的是 ADS1.2 开发软件编译器。/*数据类型(与编译器相关)*/typedefunsignedcharBOOLEAN; typedefunsignedcharINT8U; typedefsignedcharINT8S; typedefunsignedintINT16U; typedefsignedintINT16S; typedefunsignedlongINT32U; typedefsignedlongINT32S; typedeffloatFP32; typedefdoubleFP64; typedefunsignedintOS_ST
11、K;#defineBYTEINT8S#defineUBYTEINT8U#defineWORDINT16S#defineUWORDINT16U#defineLONGINT32S#defineULONGNT32U/*与处理器相关的代码*/#defineOS_CRITICAL_METHOD2/选择开、关中断的方式 swi(0x00) void OS_TASK_SW(void);/任务切换函数 swi(0x01) void _OSStartHighRdy(void);/运行优先级最高的任务 swi(0x02) void OS_ENTER_CRITICAL(void);/关中断 swi(0x03) vo
12、id OS_EXIT_CRITICAL(void);/开中断 swi(0x40) void *GetOSFunctionAddr(int Index);/获取系统服务函数入口 swi(0x41) void *GetUsrFunctionAddr(int Index); /获取自定义服务函数入口 swi(0x42) void OSISRBegin(void);/中断开始处理 swi(0x43) intOSISRNeedSwap(void);/判断中断是否需要切换 swi(0x80) void ChangeToSYSMode(void);/任务切换到系统模式 swi(0x81) void Chan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UCOS-在 LPC2131 中的移植 UCOS 中的 移植
链接地址:https://www.31doc.com/p-3618737.html