μCOSⅡ在基于Cortex-M3核的ARM处理器上的移植
基于ARM架构的μCOS-II移植及其实时同步交流采样.
基于ARM架构的μC/OS-II移植及其实时同步交流采样随着微处理器技术与信息技术的不断发展,嵌入式系统的应用也进入到国防、工业、能源、交通以及日常生活中的各个领域。
嵌入式系统的软件核心是嵌入式操作系统。
然而,国内在嵌入式系统软件开发上有很多困难,主要有:国外成熟的RTOS大都价格昂贵并且不公开源代码,用好这些操作系统需对计算机体系结构有深刻理解。
针对以上问题,免费公开源代码的嵌入式操作系统就倍受瞩目了,μC/OS-II就是其中之一。
μC/OS-II是面向中小型应用的、基于优先级的可剥夺嵌入式实时内核,其特点是小巧、性能稳定、可免费获得源代码。
本文在深入研究μC/OS-II内核基础上,将其运用于实际课题,完成了基于ARM架构的μC/OS-II移植及实时同步交流采样的误差补偿研究。
本文主要工作内容和研究成果如下:1.剖析了μC/OS-II操作系统内核,重点研究了μC/OS-II内核的任务管理与调度算法机理,得出了μC/OS-II内核优点:任务调度算法简洁、高效、实时性较好(与Linux相比)。
2.介绍了ARM9体系架构,重点讲叙了MMU(存储管理单元)功能。
为了提高交流采样系统的取指令和读数据速度,成功将MMU功能应用于本嵌入式系统中。
3.完成了μC/OS-II操作系统在目标板上的移植,主要用汇编语言编写了启动代码、开关中断、任务切换和首次任务切换等函数。
4.针对国内外提出的同步交流采样误差补偿算法的局限性,本文从理论上对同步交流采样的准确误差进行了研究,并尝试根据被测信号周期的首尾过零点的三角形相似法,求出误差参数并对误差进行补偿。
此外,考虑到采样周期ΔT不均匀,经多次采样后会产生累积误差,本文也给出了采样周期ΔT的优化算法。
5.完成了系统硬件设计,并根据补偿算法和ΔT优化法则,编写了相应采样驱动和串口驱动。
最后对实验数据进行了分析和比较,得出重要结论:该补偿算法实现简单,计算机工作量小,精度较高。
μC/OS—Ⅱ在Cortex—M3系列单片机上的移植
目标 板 以 建 立 交 叉 开 发 调 试 环 境 。 移植 过程 中,C O u / S— I 核 心 源 代 码 不 用 修 改 , I的 可
以直 接 放 在 u os—I S u c c/ I o r e文 件 夹 中 。u OS—I\ c/ I
器 结构 , 以低 成 本 、 功 耗 、 性 能 等 优 点 占据 了嵌 入 式 它 低 高
…
n
” 一 ’
关键词
⑤ 具 有 嵌 套 向量 中 断 控 制 器 ( NVI , 处 理 器 内核 C) 与
引 言
t/ t OS—I 是 一 种 简 单 高 效 、 代 码 公 开 的 实 时 嵌 入 C I 源
式 操 作 系 统 , 有 良好 的 扩 展 性 和 可 移 植 性 , 广 泛 应 用 具 被
三个 必 要 的 文 件 。Ta g t目 录 中 的 S a tp S文 件 是 单 re tru . 片机 的 启 动 代 码 和 中 断 向 量 表 , r e. Tag t C和 Tag t H 提 r e.
供 单 片 机 初 始 化 函 数 T reIi 和 其 他 简 单 的 外 设 控 ag t t n () 制 A I P 函数 。层 次 结 构 如 图 1 示 。 所
方 法 , L S 9 2单 片 机 为 例 给 出部 分 移植 函 数 的代 码 , 通 过 一 个 实例 的 应 用 验 证 移 植 的 正 确 性 。 以 M3 8 6 并
嵌 入 式 实 时 操 作 系 统 Co tx—M 3 u / re c os—I 移 植 I L 3 8 6 M S 92
系 统应 用 领域 的 领 先 地 位 。 当 前 ARM 系 列 的 处 理 器 有
让新人快速实现μc∕os II在arm上的移植方法
三、移植注意事项
在移植μc/OS II到ARM处理器上时,需要注意以下几个方面:
1.特定处理器的代码优化:根据具体的处理器型号进行代码优化,提高代码执行效率。
2.硬件驱动程序的移植:根据硬件接口规范编写相应的设备驱动程序,保证系统硬件正常工作。
3.中断向量表的更新:根据系统需求重新设置中断向量表,保证中断处理程序能够正确执行。
μc/OS II源代码结构比较清晰,其内核部分包括任务管理、时钟管理、事件管理、内存管理和中断管理等模块。应用程序部分包括文件系统、网络协议、通信协议等。需要注意的是,在移植时应根据具体系统硬件情况进行适当的修改和适配,以保证系统正常运行。
在进行移植时,需要注意以下几个方面:
1.特定处理器的代码优化:根据具体的处理器型号进行代码优化,例如利用ARM处理器特有的指令和指令集,优化代码,提高代码执行效率。
1.硬件平台的选择:不同的硬件平台会对系统的运行环境和性能产生决定性影响。因此,选择合适的硬件平台是成功移植μc/OS II的前提。
2.硬件驱动程序的编写:硬件驱动程序是实现设备与操作系统之间通信的关键部分。因此,编写硬件驱动程序时需要深入了解操作系统的相关接口和硬件规范。
uCOSII在cortexM3上的移植方法和步骤
void void
OS_CPU_SysTickInit(void); OS_CPU_SysTickClkFreq(void);
3. 修改 OS_CPU_C.C: 将以下代码注释掉:
4. 修改 OS_CPU_A.ASM: 由于编译器的原因,将“PUBLIC”关键词改为”EXPORT”. 并将原来的: RESG CODE: CODE:NOROOT(2) 修改为:
二、 建立存放目录:
在选定的逻辑盘上新建一个文件夹,如: LED,在 LED 文件夹下面新建下面 5 个文件夹, 如下图所示:
这些文件夹存放内容分配如下: 1. BSP: 主要用来存放板级支撑程序,如:功能模块初始化程序,端口初始化程序等。 2. Libraries: 用来存放 Stm32 官方库函数文件,这些库文件可以从官方网站下载得到, 本文中使用的版本是 3.5 版,进入 Ligraries 后可以看到下面两个文件夹:
3. Project: 存放工程文件,包括输出文件,列表文件等,具体存放内容再后面会有进 一步的介绍。 4. uCOS-II: 存放操作系统文件, 将前面讲到的文件夹 Ports 和 Sourec 连内容一起复制 到此文件下面,如下图所示:
2 / 12
5. User:存放用户源程序文件。
三、 创建工程:
1. 打开 Keil MDK,新建一个名为”LED”的工程,将工程文件存放在 LEDProject 文件下 面,控制器选 STM32F103RB。 2. 按下图建立 Project Target,Groups。
3 / 12
3. 在相应的 Groups 下面添加或者新建源程序文件和头文件:
4 / 12
ห้องสมุดไป่ตู้
μCOS-II在ARM处理器上的移植要点.
卩COSI在ARM处理器上的移植要点1. 设置OS_CPU.H中与处理器和编译器相关的代码/******************************************************************* **与编译器相关的数据类型******************************************************************** /typedef un sig ned char BOOLEAN;typedef un sig ned char INT8U; 〃8 位无符号整数typedef sig ned char INT8S; 〃8 位有符号整数typedef un sig ned int INT16U; 〃16 位无符号整数typedef sig ned int INT16S; 〃16 位有符号整数typedef un sig ned long INT32U; 〃32 位无符号整数typedef sig ned long INT32S; 〃32 位有符号整数typedef float FP32; /单精度浮点数typedef double FP64; /双精度浮点数typedef un sig ned int OS_STK; //堆栈入口宽度为16 位#defi ne BYTE INT8S // 字节型#define UBYTE INT8U // 为了与uC/OS V1.xx.兼容#define WORD INT16S // ... uC/OS-ll.#defi ne UWORD INT16U#defi ne LONG INT32S#defi ne ULONG INT32U/******************************************************************** *与ARM处理器相关的代码********************************************************************/ #define OS_ENTER_CRITICAL( ARMDisablelnt( /* 关闭中断*/#define OS_EXIT_CRITICAL( ARMEnablelnt( /* 开启中断*//*设施堆栈的增长方向*/#define OS_STK_GROWTH 1 /*堆栈由高地址向低地址增长*/2. 用C语言编写六个操作系统相关的函数(OS_CPU_C.Cvoid *OSTaskStklnit (void (*task(void *pd,void *pdata, void *ptos, INT16U opt { un sig ned int *stk;opt = opt; /*因为'opt'变量没有用到,防止编译器产生警告*/stk = (unsigned int *ptos; /*装载堆栈指针*//*为新任务创建上下文*/*--stk = (un sig ned int task; /* pc */--stk = (un sig ned int task; /* Ir */--stk = 0; /* r12 */*--stk = 0; /* r11 */*--stk = 0; /* r10 */*--stk = 0; /* r9 */*--stk = 0; /* r8 */*--stk = 0; /* r7 */*--stk = 0; /* r6 */*--stk = 0; /* r5 */*--stk = 0; /* r4 */*--stk = 0; /* r3 */*--stk = 0; /* r2 */*--stk = 0; /* r1 */*--stk = (unsigned int pdata; /* r0 */*--stk = (SVC32MODE|0x0; /* cpsr IRQ,关闭FIQ */*--stk = (SVC32MODE|0x0; /* spsr IRQ,关闭FIQ */ return ((void *stk;}void OSTaskCreateHook (OS_TCB *ptcbptcb=ptcb;〃防止编译时出现警告}void OSTaskDelHook (OS_TCB *ptcb{ptcb=ptcb;〃防止编译时出现警告}void OSTaskSwHook (voidvoid OSTaskStatHook (voidvoid OSTimeTickHook (void后5个函数为钩子函数,可以不加代码。
μC/OS—Ⅲ在Cortex—M3处理器上的移植
_
2 2 3 编 写 O ~ p C .c .. Sc u
OS
—
c u C C文 件 包 含 了 OS s S k nt ) p —. Ta k t I i 函数 和若 干 (
钩 子 函数 。OS s S k nt ) Ta k t l i 函数 的 作 用 是 在 创 建 任 务 时 ( 初 始 化 任 务 栈 , 返 回 新 的 栈 顶 位 置 。 C OS—II 于 并 / I基 C re o tx—M3的 任 务 栈 结 构 如 图 1所 示 。 其 中 P R、 C、 S P L R1 R R、 、 0五 个 寄 存 器 应 赋 予 正 确 的 初 值 , 其 他 1 而 1个 寄 存 器 的 初 值 无关 重 要 。
_薯t
。 囊 囊
a / c os—II C re I 在 o tx—M3处 理 器 上 的 移 植
李承创 。 陈跃 斌 , 晓丽 , 兵 房 王
( 南 民族 大学 电 气 信 息工 程 学 院 , 明 6 0 3 ) 云 昆 5 0 1
摘 要 :为 了将 u / S—I 移 植 到 C re CO I I otx—M3处 理 器上 , 用 R aViw MDK作 为软件 开发 平 台 , 对 C re —M3处 理 器 选 el e 针 otx 特 性 编 写 了移植 所 需的 C语 言和 汇 编语 言 源代码 , 验 证 了移 植 的 正确 性 。移植 后 的 u / s—II 够稳 定 运行 于 C r x 并 co I能 ot e
控 制 器 作 为 硬 件 实 验 平 台 , 编 译 环 境 采 用 Re l e 而 aViw
μ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对处理器提供存储器保护。
μC/OS-Ⅱ嵌入式实时操作系统面向ARM处理器的移植
1 R A M7微处理器体系结构
9 O年代 ,R 3 A M 2位嵌人式 RS ( I 精简指令集计算 C 机) 处理器扩展到世界范 围, 占据了低功耗、 成本和 低 高性能 的嵌入 式 系统应用 领域 的领先 地位。3 2位 RS I C处理器受到青睐, 领先的是 A M( dacdRS R A vne I C M ci s 嵌入式微处理器系列。A M公司专注于设 ah e) n R 计, 其内核耗电少 、 成本低、 功能强 , 特有 1/ 2 6 3 位双指
李 娜, 夏靖波 , 王 航 , 冯奎胜
( 军工程 大 学电讯工 程 学院 , 西省 西安 市 707 ) 空 陕 10 7 摘 要: 分析 了 A M 体 系结 构特 点 和 t / S I R z O .I内核 结构 , C 讨论 了支持 t / S I移 植 的 处理 器 z O .I C
A M7 D —、 R 70 、 R 7 J 型号 。 R T MI A M 2 T A M E 等 S
嵌入式系统起 源于微型计算机 时代。2 0世纪 7 0
年代 , 微处理器 的出现使计算机发生 了历史 性变化。
以微处理器为核心 的微型计算机深入千家万户 , 人们 称之为 P c时代。嵌入式系统 的全面发展是从 2 0世 纪9 0年代开始 , 主要受分布式控制 、 数字化通信、 信息 家电、 网络应用等强烈的应用需求所牵引。现在 , 人们 可以随处发现嵌 入式 系统 的应用 , 如手机 、 P M 3播放 器、 数码相机 、 C 、 V D 机顶盒、 路由器、 交换机等。嵌入
OS M匝M C OS 0 C
OS E C S M O S 1 K _ AS OS Tl M匝 C
A M 处理器作为内核生产芯片的公司最多。 R7 A M7系列 为低 功耗 3 R 2位核 , 适用 于 对 价位 和 最 功耗敏感的消费类产 品。A M R 7系列 的特点是 : 具有 嵌入式 IER C —T逻辑 ; 非常低 的功耗 ; 能提供 09×1 . 0 条指令/ H 的3级流水线和冯 ・ M z 诺依曼结构。 AM R 7的主要应用领域为 : 因特网设备 、 网络和调
μC/OS-Ⅱ及其在ARM微处理器上的移植与应用
A s a t T e rcs f rnpa t g h e b d e O (z / S l b t c : h poes t s l i te m ed d S t O —I) t n R po esr r o a nn C o A M rcso a ( 3 4 B X)i dsr e e i dy w t a dvlpn o r fu dao o . sah rw r—l — ¥ 4 O C s eci d dt l l- i ee igb ad o C rgn C r A ad aePa b ae h o p t
国学 者 L bos l 自行 编 写 的一 个优 秀 的嵌入 式 实 a rse2 时操 作 系统 , 其代 码绝 大 部 分 用 A S NI C语 言 编 写 ,
结构 比较 简 洁 , 移植性 好 , 可 非常 适 于在小 型系统 中 使用 。本文 在对 t / S l进 行 简 单 介 绍 的基 础 z O —I C 上, 以优 龙公 司推 出 的一 款 开发板 为硬 件平 台 , 阐述
维普资讯
第2 9卷 第 2期
20 0 6年 4月
南 京 气 象 学 院 学 报
Jun l f aj gIstt o t rl y o ra o ni tue f N n n i Mee oo o g
Vo . 9 No 2 12 . Apr 2 0 .0 6
I s Tr n p a t to o a t a s l n a i n t n ARM o e s r Pr c s o
μ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之移植篇
/**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来解决。
_C_OS_在Cortex_M3内核上的移植及优化
μC/OS-II在Cortex-M3内核上的移植及优化①孙顺远秦会斌崔佳冬丁红斌(杭州电子科技大学新型电子器件与应用研究所浙江杭州 310018)摘要:描述了源代码公开的实时操作系统μC/OS-II在以Cortex-M3内核的ARM处理器STM32- F103ZET6上的移植过程。
介绍了ARM的Cortex-M3内核的基本概念,及移植过程,并对移植过程中的任务堆栈做出优化,最后通过建立简单任务,来验证移植的正确性以及系统在STM32F103ZET6上运行的可行性和稳定性。
关键词:μC/OS-II;Cortex-M3;ARM;移植;堆栈;优化Porting µC/OS-II to Cortex-M3 and OptimizationSUN Shun-Yuan, QIN Hui-Bin, CUI Jia-Dong, DING Hong-Bin(School of Electronics Information,Hangzhou Dianzi University, Hangzhou 310018, China) Abstract:This paper introduces the process of porting an open source real time operating system µC/OS-II to the ARM processor STM32F103ZET6. Several basic concepts of the Cortex-M3 and how to optimize the stackof task are briefly introduced. By creating some simple tasks, the grafting process is proved to be successfuland the system running on STM32F103ZET6 is proved to be feasible and stable.Keywords:µC/OS-II; Cortex-M3; ARM; porting; stack; optimization随着嵌入式技术的广泛应用,电子产品设计人员根据产品的可靠性和实时性的要求,在软件开发过程中越来越倾向于基于嵌入式操作系统的开发模式。
_C_OS_在Cortex_M3处理器上的移植
新器件新技术 NEW PRODUCT&TECH42 Microcontrollers &Embedded Systems 2012年第4期www.mesnet.com.cn μC/OS-III在Cortex-M3处理器上的移植李承创,陈跃斌,房晓丽,王兵(云南民族大学电气信息工程学院,昆明650031)摘要:为了将μC/OS-III移植到Cortex-M3处理器上,选用RealView MDK作为软件开发平台,针对Cortex-M3处理器特性编写了移植所需的C语言和汇编语言源代码,并验证了移植的正确性。
移植后的μC/OS-III能够稳定运行于Cortex-M3处理器上。
该移植对大部分Cortex-M3处理器具有通用性,对其他架构处理器的μC/OS-III移植具有参考作用。
关键词:μC/OS-III;嵌入式操作系统;ARM;Cortex-M3;移植中图分类号:TP316.2 文献标识码:APortingμC/OS-III to Cortex-M3ProcessorLi Chengchuang,Chen Yuebin,Fang Xiaoli,Wang bing(School of Electrical and Information Technology,Yunnan University of Nationalities,Kunming 650031,China)Abstract:In order to portμC/OS-III to Cortex-M3processor,it uses RealView MDK as the software development platform.With Cor-tex-M3processor s features,it writes the required C and assembly source code for porting,and verifies the correctness of the porting.After porting,μC/OS-III can run on Cortex-M3processor stably.The porting is universal for most Cortex-M3processor,which is a ref-erence forμC/OS-III porting on processers of other architectures.Key words:μC/OS-III;embedded operating system;ARM;Cortex-M3;porting引 言μC/OS-III是一款基于优先级调度的抢占式实时内核,Micrium公司于2011年8月公开了μC/OS-III的源码,其源码遵循ANSI C标准,因而具有良好的移植性,相信其将会被移植到越来越多的处理器体系上。
μC-OS-II在Cortex-M3系列单片机上的移植
μC/OS-II在Cortex-M3系列单片机上的移植
引言
μ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 指令集结构系列的微控制器版本,可用于企业应用、汽车系统、家庭网络和无线技术等领域。
其主要特点是:
①功耗低;
②内核的门数少,具有优异的性价比;
③中断延时短;
④调试成本低;。
μC/OS—Ⅱ在ARM平台上移植的深入探讨
 ̄ / S I 在 A M 平 台上移 植 的深 入探 讨 C O —I R
王 琨 强 ,赵 志 珩
( 车 管 理 学 院 基 础 部 ,蚌 埠 2 3 1 ) 汽 3 0 1
摘 要 :在 以 ¥ C 4 0处 理 器 的 嵌 入 式 平 台 上 , 把 经 典 的 vv 启 动 代 码 与  ̄ / S I 操 作 系 统 结 321 ii C O —1
T e ta s l n n l s s a d r s a c f IC/ h r n p a t a ay i n e e r h o  ̄ OS-I a e n ARM y t m Ib s d o s se
WA G K n Q a g H O Z iH n N u in ,Z A h e g
汇 编 语 言 编 写 , 量 在 2 0行 左 右 的 汇 编 语 言 被 压 缩 到 总 0 最 低 限 度 , 目 的 是 便 于 移 植 到 任 何 一 种 其 他 的 ‘P 上 CU
程 , 助 于 提 高对 R O 有 T S的 认 识 与 理 解 , 而 提 高 嵌 入 从 式 工 作 者 的 理 论 与 技 术 水 平 。 t / S I ~ 个 小 的 实 x O ~ I是 C 时 内 核 , 代 码 公 开 , 详 尽 的 解 释 。 正 是 因 为 其 内 核 源 有
tm,  ̄C/ e OS- I i n ln k y o n s r aiai n p r a h s r as gv n.T e r n pa t I , s t u e i t i a e ,a d t e r n p a t e p i t , e l t a p o c e a e l i o z o o ie h ta s ln
基于ARM的实时操作系统μC/OS-Ⅱ的内核移植
基于ARM的实时操作系统μC/OS-Ⅱ的内核移植作者:薛鹏李广林赵敏来源:《中国新技术新产品》2008年第23期摘要:本文研究了实时操作系统μC/OS-Ⅱ在ARM微处理器上的内核移植。
首先介绍了实时操作系统μC/OS-Ⅱ和ARM7微处理器,在此基础上,分析了内核移植的条件和主要内容,最后对代码移植的正确性进行测试。
关键词:ARM;μC/OS-Ⅱ;移植1 引言嵌入式系统是一个分散的工业,充满了竞争、机遇与创新,没有哪个系列的处理器和操作系统能够垄断全部市场,因此留给各个公司的创新余地很大。
研究嵌入式系统,一个必不可少的基础工作就是实现嵌入式操作系统在相关处理器平台上的移植。
本文基于目前应用非常广泛的ARM处理器体系结构,对μC/OS-II嵌入式实时操作系统内核的移植工作做了分析和介绍,并对代码移植的正确性进行验证。
2 μC/OS-Ⅱ操作系统简介μC/OS-Ⅱ是一个著名的源代码开放的嵌入式实时操作系统(RTOS),由美国人Jeanbrosse编写出来。
μC/OS-Ⅱ读作"micro controller OS 2",意为"微控制器操作系统版本 2"。
μC/OS-Ⅱ结构小巧,适合小型控制系统,具有执行效率高,占用空间小,实时性能优良和可扩展性能强等特点,具有可剥夺实时内核,提供了实时系统所需的基本功能,其中包括任务的调度与管理,时间管理,任务间同步与通信,内存管理和中断服务等功能。
μC/OS-Ⅱ可用于8位、16位和32位单片机或DSP。
良好的持续发展能力、高性能的内核以及友好的用户开发坏境,使其迅速在嵌入式实时操作系统领域占据一席之地。
3 ARM7微处理器简介ARM(Advanced RISC Machines),是英国Advanced RISC Machines Limited公司设计开发的通用32位RISC微处理器体系结构。
ARM处理器因其卓越的性能和显著优点,已成为高性能、低功耗、低成本嵌入式处理器的代名词,成为32位嵌入式应用领域、全球范围内最广泛使用的处理器。
《ARM嵌入式接口技术应用》第八章 μCOS-Ⅱ嵌入式操作系统的移植
2.OSStartHighRdy() OSStartHighRdy()是由OSStart()调用,它实现任务建 OSStartHighRdy()是由OSStart()调用,它实现任务建
立以后(但还没有任务调度),使最高优先级的任务 取得内核的使用权.
定的时间内执行其功能并对外部的异步事件做出响应的计算机 系统.
实时操作系统主要满足以下两个领域的需要: 实时操作系统主要满足以下两个领域的需要:
1,实时控制: 能实时采集现场数据,对所采集的数据进行处理,进而自动 的控制 相应的执行机构. 2,实时信息处理: ,实时信息处理: 对信息进行实时处理的系统称为实时信息处理系统.
5.OSTickISR()
OSTickISR()函数是时钟中断处理函数,主要任务是负责处理 OSTickISR()函数是时钟中断处理函数,主要任务是负责处理
时钟中断.
在实时操作系统中,时钟节拍一般为10~100HZ.假定,时 在实时操作系统中,时钟节拍一般为10~100HZ.假定,时
OSStart ()调用OSStartHighRdy()的程序清单 void OSStart (void) { 找出在就绪表种进入就绪态的最高优先级任务; 将运行指针指向最高优先级任务; 调用OSStartHighRdy()运行最高优先级任务; }
1.定义可移植性强的数据类型
typedef typedef typedef typedef typedef typedef typedef typedef (32位长度) 32位长度) typedef (64位长度) 64位长度) typedef unsigned char unsigned char signed char unsigned short signed short unsigned int signed int float double INT32U FP64; OS_STK; BOOLEAN; INT8U; INT8S; INT16U; INT16S; INT32U; INT32S; FP32; //布尔类型 //布尔类型 //无符号8位整型 //无符号8 //有符号8位整型 //有符号8 //无符号16位整型 //无符号16位整型 //有符号16位整型 //有符号16位整型 //无符号32位整型 //无符号32位整型 //有符号32位整型 //有符号32位整型 //单精度浮点类型 //单精度浮点类型 //双精度浮点类型 //双精度浮点类型 //堆栈是32位宽度 //堆栈是32位宽度
让新人快速实现μc/osⅡ在arm上的移植方法
ta rtHighRdy()函数的 ,是为了让优 先级状态最高的进入就 列的总数决定。在调用 OSInit()时 ,执行了 OS—InitEvent—
任 务 指 针 及 返 回 地 址 都 指 向 函数 入 口 ,被 调 度 时 从 堆 栈 恢 复
在 上 面 的 移 植 函 数 的 使 用 和 更 改 中 , 我 们 频 繁 提 到
刚 开 始 的 地 方 走 。
TCB、 ECB这 两 个 数 据结 构 ,离 开 了数 据 结 构 ,内 核 什 么 也
—
—
—
—
一 2.1移 植 OS—CPU—C.C,主 要 是 初 始 化 堆 栈 结 构 : 资 源” 。
.
OSTaskStklnit函 数
其 目的是让堆栈处于刚刚发生过中断的状态 ,因为任务 3.注意的2个 要点
不会一被创建就被执行 ,为使后面的调度会一致 ,先要把改 ■ 3.1搞清 TCB、ECB两个数据结 构
绪 状 态任 务运 行 。 OSStart函 数原 型 :
List()函数 ,所 有 ECB被 链 接 成 一 个 单 向链 表 一 空闲 ECB
链表。每 当建立一个信号量、邮箱或者消息 队列 时,就从该
链表中取出一个空闲 ECB,并对它进行初始化。
■ 3.2对 ARM体 系的发生的异常的分析
其 功 能 是 在 当 触 发 了 更 高 的 优 先 级 任 务 以后 , 要 调 用
RO—R12,R14和 PC寄存器 的值恢复到各 自当前处理器 的值
1.为什么要进行pc/os Il在ARM上的移植? 中; (3)上述功能全恢复后就续表中最 高任务优先级的运行。
Cortex-M3的μCoS-Ⅱ任务调度硬件指令实现
Cortex-M3的μCoS-Ⅱ任务调度硬件指令实现
屈召贵;周永强;龚名茂
【期刊名称】《单片机与嵌入式系统应用》
【年(卷),期】2011(11)2
【摘要】@@ 1 μC/OS-Ⅱ的任务调度算法分析rn1.1 μC/OS-Ⅱ任务就绪表的解读rn μC/OS操作系统采用优先级至上的任务调度原则,让进入就绪态任务中优先级最高的那个任务,一进入就绪态就能立即运行.μC/OS操作系统实现了一种巧妙的查表算法,利用这种算法能快速实现任务调度原则.如何从任务就绪表中,查找优先级最高的那个任务?归结起来:两个变量(OSRdyGrp、OSRdyTbl[])和两张表(OSMapTbl []、OSUnMaTbl[]).
【总页数】2页(P70-71)
【作者】屈召贵;周永强;龚名茂
【作者单位】四川师范大学成都学院,成都611745;四川师范大学成都学院,成都611745;四川师范大学成都学院,成都611745
【正文语种】中文
【相关文献】
1.浅谈μC/OS任务调度算法的硬件实现 [J], 邵贝贝
2.WCET可预测的Java指令集硬件实现 [J], 杨帆;高振华;柴志雷
3.实时操作系统任务调度算法的硬件实现 [J], 李岩;王显山
4.基于硬件的动态指令集随机化框架的设计与实现 [J], 杜三;舒辉;康绯
5.基于硬件的动态指令集随机化框架的设计与实现 [J], 杜三;舒辉;康绯;
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章编号1007—7820f2009)Ol一069—06 the
Grafting of rcosn
Cortex-M3
Based
ARM
Processor
Guan Hal,Feng Dazheng
(School of Electronic Engineering,Xidian University,Xi’all 710071,China)
头文件OS—CPU.H中最后一个要修改的地方
stk=(INT32U术)ptos;
木一stk xPSR水/
=
是任务切换宏定义,wCOS—II内核就是通过这个
(INT32U)0x01000000;/宰
・
宏调用来触发任务级的任务切换。任务切换一般
是通过陷阱或软件中断来实现的,在基于Cortex一・ M3核的处理器中支持一条称为超级用户调用的指 令SVC,此指令是ARM软件中断指令SWI的升级 版。此处的宏定义代码修改为如下形式
模式,而处理模式只能通过中断或异常的方式来 进入。处于线程模式中代码可以分别运行在特权 方式下和非特权方式下。处于处理模式中的代码 总是运行在特权方式下。运行在特权方式下的代 码对系统资源具有完全访问权,而运行在非特权 方式下的代码对系统资源的访问权受到一定限 制。处理器可以运行在Thumb状态或Debug状 态。在指令流正常执行期间,处理器处于Thumb 状态。当进行程序调试时,指令流可以暂停执 行,这时处理器处于Debug状态。处理器有两个 独立的堆栈指针,分别称为MSP和PSP。系统复 位时总是处于线程模式的特权方式下,并且默认
wCOSII is also system
given.The differences between the method of developing applications based and the traditional method
proved
to
are
on
an embedded
operating
ILLCOSII在基于Cortex—M3核的ARM处理器上的移植
公司最新的Codex—M3核,并且具有非常丰富的
片上资源。 1.2关于基于Cortex.M3的ARM处理器的介绍 基于Cortex—M3核的ARM处理器支持两种
译器相关的数据类型重定义部分和与处理器相关
的少量代码。由于本移植过程中使用的是RealView
v2.52的源代码按照移植要求分为
堆栈为满递减方式,即堆栈的增长方向是从内存 高地址向低地址方向递减并且堆栈指针总是指向 栈顶的数据。在头文件OS—CPU.H中相应代码只 须修改一条,如下所示
#define OS_STK_GROWTHl
需要修改部分和不需要修改部分。其中需要修改 源代码的文件包括头文件OS—CPU.H、C语言文件
2移植过程详解
2.1
斗COS一¨内核介绍 I山COS—II是一个实时可剥夺型操作系统内核,
该操作系统支持最多64个任务,但每个任务的优 先级必须互不相同,优先级号小的任务比优先级 号大的任务具有更高的优先级,并且该操作系统 总是调度优先级最高的就绪态任务运行。此内核
的代码是美国人Jean J.Labrosse用C语言编写的。
source
briefly introduced,on
or as—
the basis of which all of the
code files necessary
to
modify
are
modified by
use
of the C language
on
sembly language with detailed explanations given.A simple example of the application based
Abstract
on
This paper introduces the process of grafting
an
open
source
real time operating system wCOSII
are
the ARM processor STM32F103 VBT6.Several basic concept8 of the Cortex—M3
以上代码以嵌入汇编的方式定义了一个输入 参数和返回值都为空的c语言函数,嵌入汇编的 格式在RealView编译器的说明文档中有详细的 说明。 2.2.2修改C语言文件OS_CPU.C 根据文献[3]可知文件OS_CPU.C中有10个C 语言函数需要编写,这些函数中唯一必要的函数 是OSTaskStkInit,其他9个函数必须声明,但不一
long INT32S;
float FP32; double FP64;
unsigned
long OS_.STK;
unsigned long OS_CPU_SR;
其中定义的数据类型OS—STK指出了处理器堆 栈中的数据是32位的,OS_CPU—SR指出了处理器 状态寄存器字长也为32位。
头文件中与处理器相关部分代码包括临界区
访问处理、处理器堆栈增长方向及任务切换宏定 义。临界区代码访问涉及到全局中断开关指令, 由文献[1]可以得知关中断和开中断可以分别由指 令CPSID i和CPSIE i实现,文中临界段访问处理 如下:
#define #if #define #define #endff OS_CRITICAL_METHODl OS_CRITICAL_METHOD==1
OS_ENTER_CRITICAL()INT_DIS() OS_EXIT_CRITICAL()INT_EN()
具有很好的可移植性,其2.52版本通过了美国航
天航空管理局的安全认证,可靠性非常高。文中 所述的移植过程使用的就是该版本的源代码。 2.2开始移植
IrCOS—II
其中INT—DIS()和INT—EN()分别对应关中 断和开中断处理过程。 根据文献[2]可知文中所使用的处理器支持的
discussed with the former shown
to
be
a
better
method.The
grafting process is
be successful.
Keywords
v.COSII;embedded
operating system;grafting;ARM;Codex-M3
目前,嵌入式技术已被广泛应用到汽车电子、
OS__CPU.C以及汇编格式文件OS_CPU 2.2.1修改头文件OS__CPU.H
A.ASM。
头文件OS—CPU.H中需要修改的内容有与编
70 Electronic
此定义中的l代表堆栈方向是向下递减的。
Sci.&Tech./Jan.15.2009
pCOSH在基于Codex—M3核的ARM处理器上的移植
#define
掌一stk=(INl32U)'task;/宰PC木/ 母一stk=(INT32U)task;/木LR木/ 幸一stk=(INT32U)0x00000000;/掌r12木/ 乖一stk=(INT32U)0x0000(000;/木r3幸/
OSJIASK_.SW()OS_SVC()
其中os_svc()之中包含了SVC指令,它可 以由嵌入汇编的方式在C语言代码中进行定义, 如下所示
编译器,因此通过查阅此编译器的相关说明文档
可以得到其所支持的基本数据类型,据此修改 OS_CPU.H中与编译器相关的数据类型重定义部
模式,分别称为线程模式和处理模式。程序可以
在系统复位时或中断返回时两种情况下进入线程
分。修改后代码如下所示:
typedef typedef typedef typedef typedef typedef typedef typedef typedef typedef typedef unsigned char BOOLEAN;
使用的堆栈指针是MSP。本移植过程中假设任务 总是运行在线程模式的特权方式下且总是使用堆 栈指针PSP。
unsigned
char INT8 U;
signed char INTSS;
unsigned signed
short INTl 6U;
short INTl 6S; long INT32U;
unsigned signed
性及可靠性,并且在程序开发过程中开始倾向于 从传统超循环开发模式转向基于嵌入式操作系统
的开发模式。
1
无线通信、数码产品等各个领域。嵌入式操作系 统及嵌入式处理器技术发展迅猛,嵌入式操作系
统典型代表有wCOS—II、p.Clinux、Window
CE、
VxWorks等;嵌入式处理器包括ARM、MIPS、
种嵌入式处理器的软件开发工具,该开发套件功
能强大,包括了i山Vision3集成开发环境和Real.
View编译器。使用的硬件平台是深圳英蓓特公司 推出的全功能评估板STMl03V100,其上所采用的 处理器是ST意法半导体公司生产的32位哈佛结构 ARM处理器S,I'M32F103VBT6,该处理器内置ARM
PowerPC等。随着软硬件技术的发展,人们开始意
软硬件开发环境及处理器介绍
1.1软件硬开发环境 本移植过程使用的软件环境是RealView
MDK
识到基于嵌入式操作系统的程序开发模式的便利
开发套件,此产品是ARM公司最新推出的针对各
收稿日期:2008一05.26 基金项目:国家自然科学基金资助项目(60072038) 作者简介:关海(1978一),男,硕士研究生。研究方向: 嵌入式操作系统,信号与信息处理。冯大政(1959一),男, 博士。教授,博士导师。中国电子学会高级会员,美国 巩EE学会会员。研究方向:信号与信息处理。