μCOSⅡ在X86保护模式下的移植与开发
uC/OS—Ⅱ在80x86上的移植
在调用 O Sat  ̄前 。 户已经至少创建 了 0 1 。 9) 个 任 务 。 S tr ih d0 认 指 针 O T B ih d O Sat g R y 默 H S C H gR y指 向优 先级 最 高 4处 理 器 支 持 能 够 容 纳 一 定 量 数 据 ( 能 是 几 千 字 节 ) 硬 件 堆 . 可 的 就 绪 任 务 的 任 务 控 制 块 ( S T B) 在 这 之 前 O T B gR y已 由 O _C ( S C Hi d h 栈。 S tr 0 。 5 理 器 有 将 堆 栈 指 针 和其 它 C U 寄 存 器 读 出 和 存 储 到 堆 栈 或 O Sat设 置 好 了 ) 函数 原 型 为 : .处 P V i S tr g R yvl1 odO Sa Hi d(od t h 内存 中 的指 令
优 点 , 合 于 小 型 控 制 系 统 。其 内 核提 供 任 务 调 度 与 管 理 、 问 管 理 、 适 时 8 x6处 理 器 的堆 栈 是 由高 地 址 向低 地 址 方 向增 长 的 , 以常 量 o8 所 : 任 务 间 同 步 与通 信 、 内存 管 理 和 中 断 服 务 等 功 能 . 小 可 编 译 至 2 B, 0 T R WT 必 须设 置 为 1 最 K SS K G 0 H # e n OS S df e i TK G O R WT 1 / 堆 栈 由 高 地 址 向低 地 址 增 H 包 含全 部 功能 ( 号 量 、 息 邮 箱 、 息 队 列 以 及 相 关 函 数 )编 译 后 的 信 消 消 , 长 / 。  ̄ /S I CO —I内核 仅 有 6 1KB ~0 。 3.. 14 OS T K s AS 本 文 介绍 了 如何 将 I /S I 植 到 ltl o8 x O —I移 C ne x6系 列 C U上 。 8 P 实 wo 在 I /S I 中 。 x O —I C 就绪 任 务 的 堆 栈 初 始 化 应 该 模 拟 一 次 中断 发 生 际 上 , 移植 过程 同样 适 用 于 A 其 MD,yi,E (一 系 列) C U。 C r N Cv x 等 P 后 的样 子 .堆 栈 中 应 该 按 进栈 次序 设 置 好 各 个 寄存 器 的内 容 。 2 移 植 的 条 件 . A K_W 函 在 移 植 。就 是 使 一 个 实 时 内核 能 在 某 个 微 处 理 器 或 微 控 制 器 上 运 OS T S s 0 数 模 拟 一 次 中断 过 程 , 中断 返 回 的 时 候 进 行 任 务 08 5 中断 服 务程 序 的 入 E l 行 。 移 植 的 时候 内核 是 不变 的 . 发 者 根 据 自 己应 用 系统 的需 要来 选 切 换 。 8 x6提 供 了 2 6个 软 中断 源 可 供 选 用 , 开 S t 0。 S 择 实 时 操 作 系 统 内核 【。 由 于在 设 计 时就 已 经 充 分 考 虑 了 可 移 植 性 , 点 必 须 指 向 汇 编 函数 O Cxw l 】
uC_OS-II实验指导书
µC_OS-II实验指导书电子科技大学嵌入式软件工程中心北京科银京成技术有限公司目录第一部分实验系统简介及入门 (5)1 实验系统的目的 (5)2 实验系统的构成 (5)3 操作系统简介 (5)3.1 µC/OS-II概述 (5)3.2 µC/OS-II的特点 (6)3.3 µC/OS-II主要源代码文件介绍 (7)4 LambdaTOOL集成开发环境简介 (7)5 µC/OS-II实验内容简介 (8)5.1 任务管理实验 (8)5.2 优先级反转实验 (8)5.3 优先级继承实验 (9)5.4 哲学家就餐实验 (9)5.5 内存管理实验 (9)5.6 时钟中断实验 (9)5.7 消息队列实验 (9)6 预备实验:嵌入式开发环境的建立 (9)6.1 目的 (9)6.2 实验步骤及说明 (10)第二部分µC/OS-II实验 (24)实验1 任务的基本管理 (24)1 实验目的 (24)2 实验原理及程序结构 (24)2.1 实验设计 (24)2.2 操作系统配置 (25)2.3 源程序说明 (27)3 运行及观察应用输出信息 (29)4 本实验中所用到的µC/OS-II相关函数 (31)4.1 OSTaskCreate() (31)4.2 OSTaskSuspend() (31)4.3 OSTaskResume() (32)实验2 优先级反转 (33)1 实验目的 (33)2 原理及程序结构 (33)2.1 实验设计 (33)2.2 操作系统配置 (35)2.3 源程序说明 (36)3 运行及观察应用输出信息 (39)4 本实验中所用到的µC/OS-II相关函数 (39)4.1 OSSemCreate() (39)4.2 OSSemPend() (40)4.3 OSemPost() (40)4.4 OSTimeDly() (41)实验3 优先级继承 (42)1 实验目的 (42)2 原理及程序结构 (42)2.1 实验设计 (42)2.2 操作系统配置 (45)3 运行及观察应用输出信息 (46)4 本实验中所用到的µC/OS-II相关函数 (47)4.1 OSMutexCreate() (47)4.2 OSMutexPend() (47)4.3 OSMutexPost() (48)5 应用调试过程 (49)实验4 信号量:哲学家就餐问题的实现 (51)1 实验目的 (51)2 原理及程序结构 (51)2.1 实验设计 (51)2.2 操作系统配置 (52)3运行及观察应用输出信息 (53)4 本实验中所用到的µC/OS-II相关函数 (55)实验5 µC/OS-II的内存管理 (56)1 实验目的 (56)2 原理及程序结构 (56)2.1实验设计 (56)2.2 操作系统配置 (62)3 本实验中所用到的µC/OS-II相关函数 (63)3.1 OSMemCreate() (63)3.2 OSMemGet() (64)3.3 OSMemPut() (64)3.4 OSMemQuery() (65)实验6 时钟中断 (66)1 实验目的 (66)2 原理及程序结构 (66)2.1 实验设计 (66)2.2 操作系统配置 (68)3 运行及观察应用输出信息 (70)4 本实验中所用到的µC/OS-II相关函数 (71)实验7 消息队列 (72)1 实验目的 (72)2 原理及程序结构 (72)2.1 实验设计 (72)2.2 源程序说明 (72)2.3 操作系统配置 (77)3 运行及观察应用输出信息 (78)4 本实验中所用到的µC/OS-II相关函数 (82)4.1 OSQCreate() (82)4.2 OSQPend() (82)4.3 OSQPostFront() (83)4.4 OSQPost() (83)4.5 OSQFlush () (84)4.6 OSQQuery() (84)4.7 OSQDel() (85)4.8 OSTimeDlyHMSM() (85)第一部分实验系统简介及入门1 实验系统的目的通过此实验系统,读者可以了解嵌入式实时操作系统µC_OS-II的内核机制和运行原理。
嵌入式操作系统μCoS-Ⅱ的移植
2 I S Ⅱ的 移 植 分 析  ̄ CO -
2. 移 植 概 述 1
Байду номын сангаас
1 C 一 oS Ⅱ简 介
/ O 一  ̄ S Ⅱ是 一 个 基 于 优 先 级 的抢 占式 实 时 多 C
所谓 移植 , 就是 使一 个实 时 内核能 在其 他 的微 处理 器或 微控 制器 上运 行 。为 了方便 移植 , 大部 分
任务 操作 系统 , 它包含 了实时 内核 、 任务 管理 、 间 时
C S Ⅱ是 用 C语 言编写 的 , O一 但与 硬 件 有关 的 代码
仍需要 用 汇 便 语 言 编 写 。t O — 在 设 计 之 初 已  ̄ SI C I
管理 、 信号 量 、 内存管 理等 , 用 于 8位 1 可 6位 和 3 2
维普资讯
第2 卷 第1 3 期
金 陵 科 技 学 院 学 报
Vo12 N o. . 3. 1
27 月 0 年3 0
JU N LO N IGIS I E O R A F LN T1 T 里 J I N =
Q
Ma.2 0 r ,0 7
随着 现代化 技术 的发 展 , 入式 系统 的应用 范 嵌 围越来 越广 泛 , 于嵌 入式 技术 的产 品从尖 端 复杂 基
自己 的 需 要 对 C S Ⅱ进 行 裁 剪 。t O —I 代 O  ̄ S I源 C
码 公开 , 部分 是 用 A IC编 写 的 , 有 与 处 理 大 NS 只
T ePo tn fEmb d e e ai gS se p h ri go e d d Op r tn y tm  ̄ COS Ⅱ -
GAO iyig Cu — n
( hnd n e i e nl y C egu 109 C i ) C egu i rt o T c o g, hnd 05 , h a U v sy f h o 6 n
基于ARM的uCosii移植与实现
基于ARM的μC/OS-II移植与实现刘悦(兰州交通大学光电技术与智能控制教育部重点实验室,兰州730070)摘要:本文完成的μC/OS-II操作系统的移植是基于S3C2410开发板,概要介绍μC/OS-II操作系统,然后研究和编写了三个移植文件,最后给出应用程序的测试。
结果表明,移植在S3C2410上的μC/OS-II操作系统可以稳定的运行。
关键词:S3C2410;嵌入式操作系统;μC/OS-II;移植1、µC/OS-II操作系统µC/OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。
µC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。
至今,从8位到64位,µC/OS-II已在超过40种不同架构上的微处理器上运行。
µC/OS-II已经在世界范围内得到广泛应用,包括很多领域,如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。
实际上,µC/OS-II已经通过了非常严格的测试,并且得到了美国航空管理局(Federal Aviation Administration)的认证,可以用在飞行器上。
这说明µC/OS-II是稳定可靠的。
除此以外,µC/OS-II的鲜明特点就是源码公开,便于移植和维护[1]。
在µC/OS-II多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU 时间,并且负责任务之间的通讯。
内核提供的基本服务是任务切换。
µC/OS-II 可以管理多达64个任务。
由于它的作者占用和保留了8个任务,所以留给用户应用程序最多可有56个任务。
赋予各个任务的优先级必须是不相同的。
µC/OS-II 为每个任务设置独立的堆栈空间,可以快速实现任务切换。
µC/OS-II近似地每时每刻总是让优先级最高的就绪任务处于运行状态,为了保证这一点,它在调用系统API函数、中断结束、定时中断结束时总是执行调度算法,µC/OS-II通过事先计算好数据简化了运算量,通过精心设计就绪表结构使得延时可预知。
基于X86体系μCOS-Ⅱ在VC6.0下的移植
I t e VC + 6 0 c mp l n i n n a e n x 6 c mp tr ami gt r vd e c i ga d la i g I ot h + . o i e vr me tb s d o 8 o u e . i n p o i et a hn n e r n e o o n
DS O 下面那么容易, 直接通过一个 函数调用就能够 修改中断。wno s下要修 改 中断涉及 到驱 动程 i w d 序, 这样就加大了移植的困难度与复杂度 。因此 , 考 虑到本 移植 只是 为 了教 学 和 学 习 , 并没 有 应 用 到对
Ab t a t T e o ii a CO —I e a l s ae c mp ld o o ln / + , ih i n tfmi a sr c : h r n lt S g x I x mp e r o i n B r d C C + wh c s o a l r e a i frmo tla n r ,S h y h v o a a tt t e c mp l n i n n eo e la i g C o s e r e s O t e a e t d p h o i e v r me tb fr e r n OS—I. a e n o e o n I B sd o
第 5期 21年 1 0 1 O月
微
处
理
机
N . o5
第6章 μCOS-II操作系统基础及其移植开发初步
第六章μC O S-I I操作系统基础及其移植开发初步μCOS-II内核作为一种代码公开的嵌入式实时操作系统内核非常有特色,在规模不大的代码内实现了抢占式任务调度和多任务间通信等功能,任务调度算法也很有独特。
该内核裁剪到最小状态后编译出来只有8K左右,全部内核功能(添加LWIP网络协议栈等)也就100K 左右,资源消耗非常小。
市面上一些ARM微处理器片上所带内存就已经足够一个裁剪合适的内核的简单应用,非常方便产品的开发设计。
当前,μCOS-II是一个基本完整的嵌入式操作系统解决方案套件,包括μC/TCP-IP(IP 网络协议栈)、μC/FS(文件系统)、μC/GUI(图形界面)、μC/USB(USB驱动)、μC/FL(Flash加载器)等部件。
但是这些部件不是公开代码的。
还有一些比较重要的可能在嵌入式环境中发挥重要重要作用的部件,包括嵌入式数据库、POSIX兼容性接口、常用设备的驱动模块等。
将来这个行业还会产生更多的重要部件需求,在互联网上的开源社区通常能够找到相应的开源代码包,并且可以进行移植。
6.1 实时操作系统基本原理与技术本节将主要讲述实时操作系统的基本原理和技术,通过对本章的学习读者可以了解掌握RTOS(Real Time operation System,实时操作系统)的基本特征、结构体系、重要指标、性能参数等重要理论,为全面掌握RTOS打下基础。
6.1.1 实时操作系统基本特征根据IEEE实时UNIX分委会对实时操作系统的定义,实时操作系统的基本特征应表现为以下几个方面:∙实时性:对外部事件作出反应的时间必须在限定的时间内,在某些情况下还需要是确定的,可重复实现的,不管当时系统内部状态如何,都是可预测的;∙异步并发事件响应能力:异步事件是指无一定时序关键随机发生的事件。
如外部设备完成数据传输,实时控制设备出现异常情况等。
实际环境中,嵌入式实时系统处理的外部事件往往不是单一的,这些事件往往同时出现,而且发生的时刻也是随机的,即异步的。
μCOS-II移植
图标按钮(或者选择 (6)单击 )单击Context Variable图标按钮 或者选择 图标按钮 【Processor Views】->【Variables】)打开变量观 】 【 】 打开变量观 察窗口, 察窗口,通过此窗口可以观察局部变量和全局变 量。 取消断点, (7)可以单步运行程序,可以设置 取消断点, )可以单步运行程序,可以设置/取消断点 或者全速运行程序,停止程序运行, 或者全速运行程序,停止程序运行,观察变量的 判断蜂鸣器及LED1~LED4的控制是否正 值,判断蜂鸣器及 ~ 的控制是否正 确。
步骤 仿真器和MagicARM2410 (1)连接 )连接EasyJTAG-H仿真器和 仿真器和 实验箱,然后安装EasyJTAG-H仿真器 若已经安 实验箱,然后安装 仿真器(若已经安 仿真器 装过,此步省略),短接蜂鸣器跳线JP9。 装过,此步省略 ,短接蜂鸣器跳线 。 (2)启动 )启动ADS 1.2,打开实验工程文件 , Demo_uCOSII。(本范例在ADS文件夹中操作 Demo_uCOSII。(本范例在ADS文件夹中操作) 。(本范例在 文件夹中操作) (3)Make ug (4)Debug (5)全速运行程序,程序将会在 )全速运行程序,程序将会在main.c的主函 的主函 数中停止(因为 因为main函数起始处默认设置有断点。 函数起始处默认设置有断点。 数中停止 因为 函数起始处默认设置有断点
/************************************ ** Function name: DelayNS *************************************/ void DelayNS(uint32 dly) { uint32 i; for(; dly>0; dly--) for(i=0; i<50000; i++); }
μCOS-II在ARM Cortex-M3处理器上的移植
μCOS-II在ARM Cortex-M3处理器上的移植Cortex-M3是ARM公司最新推出的基于ARMv7-M架构的低功耗处理器。
在深入了解μCOS-II工作原理和Cortex-M3特性的基础上,给出了在STWl32F103ZE 处理器上的详细移植过程。
将移植后的μC/OS-Ⅱ操作系统应用于移动多媒体直放站CMMB项目中,验证了移植的成功。
这对于管理硬件资源,缩短开发周期和提高系统稳定性方面有着重要的意义。
0 引言嵌入式系统已经广泛渗透到了人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%,其中ARM的应用最为广泛。
基于ARM内核的处理器以其诸多优异性能而成为各类产品中选用较多的处理器之一。
当系统越来越大,应用越来越多时,就出现了如何管理众多的硬件资源,以及如何满足系统的实时控制要求和如何提高系统软件开发效率等不可回避的问题。
这时,使用嵌入式操作系统很有必要。
操作系统的主要作用有:统一管理系统资源;为用户提供访问硬件的接口;调度多个应用程序和管理文件系统等。
1 概述μC/OS-II是著名的、源码公开的实时内核,是专为嵌入式应用设计的,可用于各类8位、16位和32位处理器。
μC/OS-II已经在世界范围内得到广泛使用,包括诸多领域,如手机、飞行器、医疗设备及工业控制等。
实际上,μC /OS-II已经通过了非常严格的测试,并且得到了美国航空管理局的认证,可以用在飞行器上。
这说明μC/OS-II是稳定可靠的。
Cortex-M3是一款低功耗处理器,具有门数目少,中断延迟短,调试成本低的特点,是为要求有快速中断响应能力的深度嵌入式应用而设计的。
该处理器采用最新的ARMv7-M架构。
还具有如下特性:(1)采用Thumb-2指令集。
在Thumb-2中,16位指令首次与32位指令并存,代码密度得到很大改善。
(2)Cortex-M3处理器可配置为具有SW-DP或JTAG-DP调试端口。
(3)使用可选的MPU对处理器提供存储器保护。
μCOS-II实时嵌入式操作系统在AVR mega系列MCU上的移植
μC/OS-II实时嵌入式操作系统在AVR mega系列MCU上的移植摘要:本文以AVR mega系列单片机为平台详细介绍了源代码公开的实时嵌入式操作系统μC/OS-II的内核代码及移植方法,并对系统的相关性能进行了测试,为在8位单片机上进行嵌入式系统开发提供了参考。
关键词:μC/OS-II; AVR mega; 移植; 系统测试1 简介随着技术的发展,在近几年中,嵌入式系统的设计及应用对人们生活产生了很大的影响,并将逐渐改变人们未来的生活方式。
在特定的操作系统之上开发应用程序,可以使得开发人员忽略掉很多底层硬件细节,使得应用程序调试更方便,易于维护,同时开发周期也缩短,降低了开发成本,因而嵌入式实时操作系统深得开发人员的青睐。
μC/OS-II是一种专门为微处理器设计的抢占式实时多任务操作系统,具有源代码公开、可移植性、可裁减、稳定性和可靠性高等特点。
其内核主要提供进程管理、时间管理、内存管理等服务,系统最多支持56个任务,每个任务均有自己单独的优先级。
由于其内核为抢占式,所以总是运行优先级最高的任务。
系统提供了丰富的API函数,便于实现进程间的通信及进程状态的转化。
由于μC/O S-II是为嵌入式应用编写的通用软件,故在具体应用时需根据不同单片机的特点进行移植,其大部分代码是用标准C语言所写,只有与处理器相关的一部分代码用汇编语言写成,因而具有很强的移植性,能在多数8位、16位、32位单片机及数字信号处理器上实现运行。
AVR mega系列单片机是基于AVR RISC的,低功耗的8位单片机,内部有32个通用寄存器。
通过在一个时钟周期内执行一条指令,运行速度可以达到1MIPS/MHz的性能。
AVR单片机内核有丰富的指令集,通过32个通用寄存器直接与逻辑运算单元相连接,允许在一个时钟周期内一条单一的指令访问两个独立的寄存器。
这样的结构使得代码的执行效率比传统的复杂指令集的微处理器快近10倍。
AVR mega128是mega系列里功能最强大、资源最丰富的一款单片机,有128k的在系统可编程flash,4k字节的SRAM和EEPROM,为系统的移植提供了一个良好的平台。
μCOS-II操作系统在各种处理器上的移植
μC/OS-Ⅱ操作系统在各种处理器上的移植长江大学杨青胜徐爱钧摘要介绍μC/OS-II操作系统的应用和移植条件;阐述μC/OS-Ⅱ操作系统在普通的51单片机,NXP公司的LPC2210,ALTERA公司的Nios II 三种处理器上的移植。
关键字μC/OS-II移植51单片机LPC2210 Nios IIPortingμC/ OS - Ⅱto Various processorYangtze University Yang Qingsheng Xu Aijun Abstract :Introduced the μC/OS-II operating system applicationand transplant conditions;Explained the μC/OS-II operating system on 51 common microprocessor ,NXP's LPC2210, ALTERA's Nios II three processors transplant.Key Words:μC/OS-II port 51 microprocessor LPC2210 Nios II μC/OS-II操作系统是一种抢占式多任务、单内存空间、微小内核的嵌入式操作系统,具有高效、紧凑的特点。
它具有执行效率高、占用空间小、可移植性强、实时性能良好和可扩展性强等特点。
采用μc/os-ii实时操作系统可以有效地对任务进行调度;对各任务赋予不同的优先级可以保证任务及时响应,而且采用实时操作系统,降低了程序的复杂度,方便程序的开发和维护。
非常适合应用在一些小型的嵌入式产品应用场合,在家用电器,机器人,工业控制,航空航天,军事科技等领域有着广泛的应用。
单片机ARM, FPGA与μC/OS-II操作系统的结合,实现一些具体功能是目前嵌入式应用中比较常见。
在这些应用中基础性的工作就是操作系统的移植,故而本文选取使用较多的51单片机,LPC2210, NiosII三种处理器做介绍必定有一定的意义。
μCOS-II移植实验
昆明理工大学信息工程与自动化学院学生实验报告(2011 —2012 学年第 2 学期)课程名称:嵌入式系统设计开课实验室:信自楼机房444 2012 年5月31日了解μC/OS-II移植条件和内核基本结构。
掌握将μC/OS-II内核移植到ARM7处理器上的方法和步骤。
二、实验原理1.μC/OS-II文件体系μC/OS-II的文件体系结构见图1,其中应用软件层是基于μC/OS-II上的代码。
μC/OS-II包括3个部分:1)核心代码部分:这部分代码与处理器无关,包括7个源代码文件和1个头文件。
它们负责的功能是内核管理、事件管理、消息队列管理、存储管理、消息管理、信号量处理、任务调度和定时管理。
2)设置代码部分:包括2个头文件,用来配置事件控制块的数目以及是否包含消息管理相关代码等。
3)处理器相关的移植代码部分:包括1个头文件、1个汇编文件和1个C代码文件。
在μC/OS-II的移植过程中,用户所需关注的就是这部分文件。
图1 μC/OS-II文件体系结构2.μC/OS-II移植条件1)处理器的C编译器能产生可重入代码。
可重入代码指的是可以被多个任务同时调用,而不会破坏数据的一段代码;或者说代码具有在执行过程中打断后再次被调用的能力。
2)用C语言就可以打开和关闭中断。
ARM处理器核包含一个CPSR寄存器。
该寄存器包括一个全局中断禁止位,控制它打开和关闭中断。
3)处理器支持中断并且能产生定时中断。
ARM处理器都支持中断并能产生定时中断。
4)处理器支持容纳一定量数据的硬件堆栈。
对于一些只有10根地址线的8位控制器,芯片最多可访问1KB存储单元。
在这样的条件下移植是比较困难的。
5)处理器有将堆栈指针和其他CPU寄存器读出和存储到堆栈或内存中的指令。
ARM处理器中汇编指令STMFD可以将所有寄存器压栈,对应也有一个出栈的指令LDMFD。
三、实验内容移植μC/OS-II内核到ARM处理器S3C44B0,在IDE中观察其运行状况。
嵌入式实时操作系统μcos_Ⅱ的移植探讨
计算机应用Computer Application《自动化技术与应用》2003年第22卷第5期嵌入式实时操作系统μc/os-Ⅱ的移植探讨雷必成,吴高标,吴永良(台州学院计算机系 台州 317000)摘要:介绍一种嵌入实时操作系统———μc/os-Ⅱ的特点和基本组成。
以μc/os-Ⅱ在MCS-51上的移植为例,着重讨论μc/os-Ⅱ在移植过程中必须注意的几个问题。
并讨论其它处理器对同一问题的不同处理方式。
关键词:实时操作系统;嵌入式;移植;MCS-51中图分类号:TP31612 文献标识码:A 文章编号:100327241(2003)0520069203Transplanting of The Embedded Real T ime OperationSystem-μcΠo s-ⅡLEI Bi-cheng,WU G ao-biao,WU Yong-liang(Computer Department o f Taizhou Univer sity,Taizhou317000,China)Abstract:To introduce the characteristics and basic constitution o f the embedded Real Time Operation System-μcΠos-Ⅱ,it puts an emphasis on sever2 al problems on the transplanting process o fμcΠos-Ⅱ,taking“μcΠos-Ⅱtransplanting into MCS-51”for example.And it also involves different approaches to the same issue on other processor s.K ey words:RTOS;Embedded;Transplanting;MCS-511 引言在嵌入式应用系统的设计中,实时操作系统的应用越来越受到重视。
μcos_II之移植篇
/**Author:Callon Huang*Version:1.0*Time:2014/11/5*blog:/u/2451220761*/希望博客也能帮到你~第一步:μcosII源码下载/downloadcenter/STM32固件库stm32f10x_stdperiph_lib.zip的下载第二步:新建文件夹,并准备子目录:其中Software是μcosII源码下载完成后拷贝过来的,其它的都自己新建.App 用来存放应用程序文件,Bsp 用来存放版级驱动文件,Lib 用来存放 STM32 的标准外设库文件,Source 用来存放uCOS 文件第三步:把Software里的uCOS-II、uC-LIB和uC-CPU文件夹到Source里并把后两者拷贝到uCOS-II文件夹里,最后如下:第四步:找到Software\EvalBoards\ST\STM32F103ZE-SK\IAR下的BSP文件夹,复制到Source文件夹下第五步:找到Software\EvalBoards\ST\STM32F103ZE-SK\IAR下的OS-Probe-LCD文件夹,复制到Source文件夹下并改名为APP第六步:解压下载好的stm32f10x_stdperiph_lib.zip固件库:找到stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.5.0\Librari es\STM32F10x_StdPeriph_Driver下的inc和src文件夹并复制到Lib 文件夹下第七步:复制stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.5.0\Librari es\CMSIS下的CM3文件夹到Lib文件夹下第八步:删除一些不需要的文件:APP文件夹只需要:BSP文件夹只需要:在Software\CPU\ST\STM32里也有inc和src文件夹,但是比STM32固件库的要多两个文件stm32f10x_systick.c和stm32f10x_systick.h把这两个文件拷贝到SysTick文件夹下.第九步:建立工程my_ucosII,把所有的.c文件和.asm文件都加进来:‘第十步:对工程进行一些设置:Device就不用说了;Target不变;Output勾选上Create HEX File,并在里选择Obj文件夹;C/C++中添加头文件所在路径,否则会出现大量如下编译错误:头文件路径:Libraries文件夹是这三个最后这部分全部设置好后,如下:最后总体设置完如下:Debug里最后下载程序的时候,如果碰到MDK中出现“Error Flash download failed-Cortex-M3”错误,可以通过上面的添加On-chip-Flash来解决。
μCOS-II 在80x86 上的移植
µC/OS-II在80x86上的移植本章将介绍如何将µC/OS-II移植到Intel 80x86系列CPU上,本章所介绍的移植和代码都是针对80x86的实模式的,且编译器在大模式下编译和连接。
本章的内容同样适用于下述CPU:80186802868038680486PentiumPentium II实际上,将要介绍的移植过程适用于所有与80x86兼容的CPU,如AMD,Cyrix,NEC (V-系列) 等等。
以Intel的为例只是一种更典型的情况。
80x86 CPU每年的产量有数百万,大部分用于个人计算机,但用于嵌入式系统的数量也在不断增加。
最快的处理器(Pentium系列)将在2000年达到1G的工作频率。
大部分支持80x86(实模式)的C编译器都提供了不同的内存使用模式,每一种都有不同的内存组织方式,适用于不同规模的应用程序。
在大模式下,应用程序和数据最大寻址空间为1Mb,程序指针为32位。
下一节将介绍为什么32位指针只用到了其中的20位来寻址(1Mb)。
本章所介绍的内容也适用于8086处理器,但由于8086没有PUSHA指令,移植的时候要用几条PUSH指令来代替。
图F9.1显示了工作在实模式下的80x86处理器的编程模式。
所有的寄存器都是16位,在任务切换时需要保存寄存器内容。
图F9.180x86实模式内部寄存器图.80x86提供了一种特殊的机制,使得用16位寄存器可以寻址1Mb地址空间,这就是存储器分段的方法。
内存的物理地址用段地址寄存器和偏移量寄存器共同表示。
计算方法是:段地址寄存器的内容左移4位(乘以16),再加上偏移量寄存器(其他6个寄存器中的一个,AX,BP,SP,SI,DI或IP)的内容,产生可寻址1Mb的20位物理地址。
图F9.2表明了寄存器是如何组合的。
段寄存器可以指向一个内存块,称为一个段。
一个16位的段寄存器可以表示65,536个不同的段,因此可以寻址1,048,576字节。
μCOS-II嵌入式操作系统移植和实时性测量
μC/OS-II嵌入式操作系统移植和实时性测量一、实验目的●通过向Sitsang实验板移植μC/OS-II操作系统,学习它的结构和移植方法,体会操作系统移植与目标机体系结构和编译器的关系;●学习操作系统中的中断概念,分析μC/OS-II的中断处理过程,通过分析和测量μC/OS-II的中断处理时间,理解操作系统的实时性;●学习ARM指令集和汇编语言程序设计,理解ARM处理器的异常处理模式;●学习使用AXD和ARMulator仿真、调试系统程序;●培养查阅硬件手册、调试底层软件的能力。
二、实验内容I.μC/OS-II嵌入式操作系统移植1.μC/OS-II正常运行,需要处理器满足以下条件:●处理器的C编译器能产生可重入代码;●用C语言就可以打开和关闭中断;●处理器支持中断,并且能产生定时中断(通常在10至100Hz之间);●处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈;●处理器有将堆栈指针和其他CPU寄存器读出和存储到堆栈或内存中的指令。
Sitsang和ADS1.2开发环境均满足上面的要求,因此μC/OS-II可以正常运行。
2.需要修改的与处理器相关的三个文件说明:我们选择移植较新的uC/OS-II v2.80版,但移植步骤与v2.52版无别。
●OS_CPU.H在该头文件中定义了操作系统需要的数据类型和在内存中占用的位数、堆栈的增长方向以及开关中断的方法。
针对ARM编译器说明,定义了如下的数据类型和位数描述:typedef unsigned char BOOLEAN;typedef unsigned char INT8U;typedef signed char INT8S;typedef unsigned short INT16U;typedef signed short INT16S;typedef unsigned int INT32U;typedef signed int INT32S;typedef float FP32;typedef double FP64;对于ARM处理器,每一个堆栈的表项都是32位,因此需要将OS_STK定义如下:typedef unsigned int OS_STK;且堆栈的增长方向是高地址向低地址增长,因此定义#define OS_STK_GROWTH 1而ARM处理器上的状态寄存器(CPSR和SPSR)也都是32位,因此typedef unsigned int OS_CPU_SR;我们选择OS_CRITICAL_METHOD #3作为进出临界区的实现方法,即进入时保存CPSR、退出时恢复CPSR。
uCOS-II嵌入式操作系统介绍与移植
OSStartHighRd
1、该函数是在OSStart函数中调用 2、负责从最高优先级任务的TCB中获得该任务的堆
栈指针sp,并依次将cpu现场恢复,这时系统就将 控制权交给用户创建的该任务进程,直到该任务被 阻塞或者被其他更高优先级的任务抢占cpu 3、该函数仅在多任务启动时被执行一次,用来启 动之前创建的第一个,也就是最高优先级的任务执 行
3、可从网站上获 得全部源码及其在各种体系结构平 台上的移植范例。
uC/OS-II特点
1、uC/OS-II内核具有可抢占的实时 多任务调度功能
2、提供了许多系统服务,如信号量、 消息队列、邮箱、内存管理、时间 函数等
3、这些功能可以根据不同的需求进 行裁减。
uC/OS-II的移植
ARM处理器相关宏定义
1、退出临界区
#defineOS_ENTER_CRITICAL() ARMDisableInt()
2、进入临界区
#defineOS_EXIT_CRITICAL() ARMEnableInt()
堆栈增长方向
1、堆栈由高地址向低地址增长,这个也 是和编译器有关的,当进行函数调用时, 入口参数和返回地址一般都会保存在当 前任务的堆栈中,编译器的编译选项和 由此生成的堆栈指令就会决定堆栈的增 长方向。
#define OS_STK_GROWTH 1
OS_CPU.c的移植
1、任务堆栈初始化 2、系统hook函数 3、中断级任务切换函数
任务堆栈初始化OSTaskStkInit
1、由OSTaskCreate或OSTaskCreateExt调用 2、用来初始化任务的堆栈并返回新的堆栈指针stk。
退出/进入临界区函数 ARMDisableInt/ARMEnableInt
μCOS-II在Cortex-M3系列单片机上的移植
描述嵌入式操作系统μC/OSII在LM3S系列单片机上实现移植的过程。
介绍操作系统的移植原理和方法,以LM3S8962单片机为例给出部分移植函数的代码,并通过一个实例的应用验证移植的正确性。
引言μC/OSII是一种简单高效、源代码公开的实时嵌入式操作系统,具有良好的扩展性和可移植性,被广泛应用到各种嵌入式处理器上;对于提高产品的质量,减少开发周期和降低成本有着重要的意义。
本文以μC/OSII为移植对象,以ARM CortexM3内核微处理器为移植目标来讨论其移植过程及应用。
1 μC/OSII及ARM CortexM3简介实时操作系统μC/OSII是一个基于优先级的抢占式实时内核,程序可读性强,移植性好,代码固定,可裁剪,非常灵活。
至今,从8位到64位,μC/OSII 已在超过40种不同架构的微处理器上运行。
μC/OSII的主要特点有:是优先级可剥夺的实时多任务操作系统;可处理和调度56个用户任务,任务的优先级可以动态调整;提供任务间通信、同步使用的信号量、邮箱和消息队列;具有良好的可裁剪性,可尽量减小系统的ROM和RAM大小。
ARM是目前嵌入式领域应用最广泛的RISC微处理器结构,它以低成本、低功耗、高性能等优点占据了嵌入式系统应用领域的领先地位。
当前ARM系列的处理器有ARM7、ARM9、ARM9E、ARM10、ARM11等多个产品。
CortexM3内核是 ARM公司于2006年推出的一款高性能处理器内核,是ARM新型 V7指令集结构系列的微控制器版本,可用于企业应用、汽车系统、家庭网络和无线技术等领域。
其主要特点是:① 功耗低;② 内核的门数少,具有优异的性价比;③ 中断延时短;④ 调试成本低;⑤ 具有嵌套向量中断控制器(NVIC),与处理器内核紧密结合实现低延迟的中断处理;⑥ 具有可裁减的存储器保护单元(MPU),用于对存储器进行保护。
2 移植μC/OSIILuminary Micro公司的LM3S系列微控制器包含运行在 50 MHz频率下的ARM CortexM3MCU内核、嵌入式Flash和SRAM、1个低压降的稳压器、集成的掉电复位和上电复位功能、模拟比较器、10位ADC、SSI、GPIO、看门狗和通用定时器、UART、I2C、运动控制PWM以及正交编码器(quadratureencoder)输入,非常适合楼宇和家庭自动化、工厂自动化和控制、工控电源设备、步进电机、有刷和无刷DC马达、AC感应电动机等方面的应用。
基于Cortex-M3核的μCOS-II移植与应用
基于Cortex-M3核的μCOS-II移植与应用作者:潘丽蕊,袁保社来源:《电脑知识与技术》2010年第18期摘要:在研究了μCOS-II实时操作系统体系结构、运行环境及运行机制基础上,针对Cortex-M3内核的移植需求, 对μCOS-II实时操作系统在Cortex-M3核上的移植进行了实践。
同时分析了μCOS-II在Cortex-M3上的移植条件,编写及修改了移植环境的定制与配置,实现了μCOS-II 在Cortex-M3上的移植,最后给出了一个基于μCOS-II嵌入式实时操作系统的简单应用。
关键词:实时操作系统;μCOS-II;Cortex-M3;移植中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)18-5111-04In the Cortex-M3 of the μCOS-II Transplantation and ApplicationPAN Li-rui, YUAN Bao-she(College of Information Science & Engineering, Xinjiang University, Urumqi 830046, China)Abstract:Based on the study of μCOS-II real time operating system structure、operating environment and operational mechanism,it against the demand for transplant Cortex-M3 kernel, real time operating system in the Cortex-M3 of the μCOS-II transplantation on the practice.It also analyzed the conditions of μCOS-II in the Cortex-M3 of the transplant, edited and modified the customization and configuration of the transplant environment,and achie ved the μCOS-II in the Cortex-M3 of the transplant. Finally, an embedded real time operating system based on μCOS-II simple application was given.Key words: real time operating system; μCOS-II;Cortex-M3; transplantation1 概述基于嵌入式操作系统平台的掌上设备将是未来各种信息设备的主力军。
μCOS-II在80196KC单片机上的移植
μCOS-II在80196KC单片机上的移植μC/OS-II在80196KC单片机上的移植摘要:主要讨论了将μC/OS-II实时操作系统在8019KC单片机上进行移植的原理和方法,给出了一个以Tasking C为编译器、以8019KC为处理器,对μC/OS-II实时操作系统进行移植的具体实例。
关键词:80196KC; uC/OS-II;Tasking C;移植Intel的80196KC系列单片机在中国国内有很大一批用户。
支持80196KC的C编译器生产厂商主要有Tasking和IAR。
但国内使用Tasking公司C编译器的用户较多。
由于μC/OS-Ⅱ系统为源码公开的实时操作系统,因此是当前嵌入式系统开发的主要方法。
但是,在μC/OS-Ⅱ网站上没有现成的移植实例。
因此,有必要进行一次移植以使操作系统成为μC/OS-Ⅱ,这种移植采用的处理器为80196KC,而其编译器为Taskingc196。
1μC/OS-Ⅱ的工作原理μC/OS-Ⅱ是一个源码公开的实时多任务操作系统,其工作流程如图1所示。
图中,任务切换的核心是利用出栈指令将各个任务的工作现场再现,并利用子程序返回指令改变PC指针以完成任务的切换。
移植的关键是如何构造任务堆栈及任务切换时的出栈顺序。
任务区堆栈初始化主要是模拟任务被中断后的堆栈内容。
280196KC的工作状态80196KC是Intel公司的16位单片机,和程序运行密切相关的寄存器有指令计数器PC、堆栈指针sp、程序状态寄存器PSW、中断屏蔽寄存器INTMASK和INTMASK1以及窗口寄存器WSR(以下将程序状态寄存器PSW、中断屏蔽寄存器INTMASK和INTMASK1、窗口寄存器WSR统称为程序状态字)。
它们可在执行子程序调用call指令时自动将pc进栈,并在子程序返回调用RET指令时自动将pc出栈。
由于80196KC有16位的寻址能力,故这一动作有2个字节进(出)栈,其中pusha指令将程序状态字进栈,popa指令将程序状态字出栈。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ex[O T B i R y a, S C Hg d] _ h ap仁a] s,cx
; 指向要运行的最高优先级的任务的T B C
; 将其指针赋给 E P S ; 从堆栈中弹出所有的寄存器
; 回 返
p pd oa
ied rt
() t t i d E P Hg R y D Sa Sr h N
的内核 kre ig e lm 拷贝到软盘根目录。 n .
O S t t i R y O N A Sa Hg d P C R r h R E
I [OS unn] c _ Rnig n a c l l
n】 V O
O S ak w ok T sS H o
; 调用 ( Tak wH o o ) sS ok ; S
; S un g I O R ni 加 n
; 下面是获取处理的堆栈指针
刀 E t pi nr o t y n
/ AX /E / C /E X 刀 E X D / B /E X
/ S 目前 未用 ) /E P(
刀 EP B / S /E I
/ /EDI
" - k 0 t = ; - s
rtr sk eu n ; t
4 扩展I / S I内核, ,O 一 C 使其成为一个R O TS
建立自举系统并对内核进行测试
并利用 3 位的优点, 2 将其 D SWi o s O / n w 支撑下运行, d 没有自主性。为了实现一个可以独立运行的操作系统,
改为可从软盘 自举 的 3 位保护模式下的操作系统.其步骤是: 2
k re. . en lm g
将其转换为引导程序映像文件 Bo ig和内核映像文件 ot m ① 对编好的引导程序和内核分别进行编译 , 使其成为可引导盘, 再将编译好 ②在D S 环境下使用dbg O eu 命令将 Bo ig otm 装载到 A盘的引导扇区, ,
第二篇
软件技术及其应 用
2 7 2
g / S I X6 C O 一 在 8 保护模式下的移植与开发
黄贤英 陈 媛 蒋 鹏
重庆工学院计算机 系, 重庆,000 405
摘 要 首先介绍了将 p / S n在 X 6 模式下的代码移植到 3 位保护模式下, CO - 8实 2 在此基础上进行功能
网卡 驱动
. ,尸二 一 K ]
F 1【 口 * 亘到
YM珊 月 匣11 翁 A 髓剔 R 圃 I R
W
一
.
一
一 一
硬 幽 白 件 A幽
图1 墓于P S O / C
一 进行扩展的R O 的总体结构 I TS
3 将I / 3 I 8 1 位实模式移植到3 位保护模式 C 0 一 从X 6 6 2
③ 修改 O Ts t n (函 Sa Sk i ) 数代码: 0 -P -. 定义的6 k It 在 5C U CC中 - 个与操作系统有关的函数O TsS It Sa tn O k ki ,
OS ak raHo k , Tak cHo k ) O T sS ok )O T sSaH o ( 和 O T sTcH o ( 中只 T sC et o O OS s D I o ( S ak wH o ( , S ak t ok ) , t S ak i ok ) k
② 用 C语言可 以打开和关闭中断 ;
28 2
20 年全国单片抓及嵌入式 系统学术年会论文集( 03 上册)
③ 处理器支持中断 并且能够产生定时中断( 通常在 1 10 之间) 0 0H : ;
④ 处理器能够支持容纳一定量数据 的硬件堆栈 ; ⑤ 处理器有将堆栈指针和其他寄存器读 出和存储到堆栈或 内存中的指令 。 3 位 的 It 0 8 完全满足上述要求 , 以 “ / S ne8 X 6 2 l 所 CO - 颐完全可 以移植到 836以上 的处理器的保护模 08
侈租 i 头 l l }呆 h 便 a } 孩 X ' 傲 埋 器 + i 运 仃 5 k t / i 是 - a } t f } r t T }# 3 r it 1 t c 4 , x t 9 us一u " 是 用 ANS C t . u 4 C I
嵌人式系统包括硬件和软件两部分。通常, 应用系统对软件的基本要求是体积小, 执行速度快, 具有较好 的裁减性和可移植性。嵌人式软件的核心是嵌人式操作系统.与单片机相 比, 嵌人式系统在操作系统之上开 发应用软件 , 可以屏蔽掉很多低层硬件细节, 使得应用程序调试方便 , 移植简单, 易维护 , 同时开发周期也短 多数实时操作系统为用户提供一些标准的 A I P 函数 , 程序开发人员利用这些 A T P 函数进行应用程序的开
式下
3 位保护模式与 1 位实模式相比性能有极大的提高, 2 6 为了增强系统功能, 在移植 p / S H CO - 之前必须理 解原有 工 位实模式下的代码、 6 理解芯片在 3 位保护模式下处理指令的方式, 2 再对部分代码进行修改并增加新 的功能。 在这个过程中. 确定各系统功能模块的分工关系并使它们能协同工作是最重要的。图 2是
第二篇
软件技 术及其应用
2 9 2
有O TsS lt 有代码。 S a tn( k k i) 它由O Ts r t ) ) a Ceex( 用来初始化任务的堆栈结构 S a Cee 和( Ts r t t k a ( S k aE ) 调用,
另外 5 个函数是钩子函数, 只需声明, 内部并没有代码 。移植到 3 位保护模式下, 2 函数代码如下
- t -sk= 0 0 0 0 0 ; - x0022
/ 获取堆栈指针
/ 模拟函数调用中参数传递
刀 若任务存在返回地址
/ fg /El s a
/ S /C
赞 sk= C E E TO 一t 段S L C R;
* t -sk= (N 2 ts , - I T3 U) k a *-sk ; -t = 0 * t = 0 -sk - ; " t = 0 -sk - ; 资一sk= 0 t ; " k= 0 t -s - ; - k= 0 t -s - ; " k t = 0 -s - ;
位保护模式, 只需将 O_p. s,. scuhO_p_ ,
{P S D; L U HF C I {P P D } O F
# i O _ X T C I IA ( df e S E I_ RT C I ) en
② 使用3 位汇编指令修改。 C U A M中定义的4 2 S A S P . 个汇编语言函数O S r i Ry , t w , St Hg dO S x O a h t OC S O Ii tS ( 和 O Tc lR 。O S r i R y) SnC x w ) Si SO k S t t g d( aH h 函数修改后的代码如下( 其余函数的代码略)
p/S U C O - 核心代码很小, 要把它移植到 自己的目 标板中只需做少量的工作 , 只需修改其中与处理器相关 的部分代码。将 X 6 1 位实模式的 p / S l内核代码修改为 3 8上 6 CO - 2
核心代码不变。具体的修改部分如下 ① 在O . U P C - S H中, 修改与处理器有关的代码 p / S Q C O 一 访问临界区代码时, 要先禁止中断, 访问完毕 再允许中断 这是由 O C U H中定义的两个与处理器有关的宏 O S P ( L A I C R T N E - S ) ( _ T 和 ) EI S X
C IIA (来完成的。在 3 位保护模式下为 RTC I ) 2
# f e S E T R C I IAI ) d i O - N E e T C ( en sR
日 s们1 .1.
ss , a m和O一 u . 个文件中与1位处理器有关的 s p c 这3 _c c 6 部分修改为3 位 , 1 位汇编改为 3 位汇编, 2 如 6 2 其余
写的, 因此p / S I的可移植性较好。但是对不同的微处理器, CO - 仍然需要使用c和汇编语言来编写其中与处 理器相关的代码, 寄存器的读、 写只能通过汇编语言的存储和加载指令来实现。要使 P S O / C 一 u能够正常工 作, 处理器必须满足以下要求川:
① 处理器的 c编译器能产生可重人代码 ;
嵌人式系统软件。
应用程序处于整个系统的顶层, 根据具体应用要求, 其功能由多个任务完成, 每个任务可以调用 A T P函 数, 也可以调用P / S f C O - 与处理器无关的代码所提供的系统服务 l
*` A m 用 用序 qz 户 程 围 mV 应
4k内 操 7l作函致 Di{存 ni 1 1 Nl MA t A 9 i g r
P/ C OS一n内核 的结 构
( 应 相关的 6 与 用 代4 )
O C G. S F C
I NCLUDESH
u -1 S f CO / 设置
}
一
一 一
( 处 器 关蜘 与 理 相 O CU S . PH
一
P / - 移植 S Q C O
OS U C CP C.
vi ; S ak tli vi 苦 ak (o .p) vi * t, d pn , T 6 ot o d O T sSkn (o t d( ts) i , d paa vi * s I 1U ) v d d o d o u N p
O S - k S TK s ; t s t k= ( -T OS S K )po ; ts + sk I T 2 p aa - t = (N 3 U) t; d * t - k= (N 3 U T sB ce; - s I T 2 ) k uk t a
. O - 实时内核, C 就是让这个实时内核在自 做完以上工作, 应该测试内核的移植是否正确。测试一个 , / S 1 一旦调试成功就可以在上面 己的目 标板上运行起来.开始时, 可以运行一些简单的任务和时钟节拍中断任务,