您的位置 首页 资料

移植μC/OS-Ⅱ

这一章介绍如何将μC/OS-Ⅱ移植到不同的处理器上。所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植,大部分的μC

这一章介绍如何将μC/OS-Ⅱ移植到不同的处理器上。所谓移植,便是使一个实时内核能在某个微处理器或微控制器上运转。为了便利移植,大部分的μC/OS-Ⅱ代码是用C言语写的;但仍需求用C和汇编言语写一些与处理器相关的代码,这是由于μC/OS-Ⅱ在读写处理器寄存器时只能经过汇编言语来完成。由于μC/OS-Ⅱ在规划时就现已充分考虑了可移植性,所以μC/OS-Ⅱ的移植相对来说是比较简略的。假如现已有人在您运用的处理器上成功地移植了μC/OS-Ⅱ,您也得到了相关代码,就不必看本章了。当然,本章介绍的内容将有助于用户了解μC/OS-Ⅱ中与处理器相关的代码。

要使μC/OS-Ⅱ正常运转,处理器有必要满意以下要求:

1.处理器的C编译器能发生可重入代码。

2.用C言语就能够翻开和封闭中止。

3.处理器支撑中止,而且能发生守时中止(通常在10至100Hz之间)。

4.处理器支撑能够包容一定量数据(或许是几千字节)的硬件仓库。

5.处理器有将仓库指针和其它CPU寄存器读出和存储到仓库或内存中的指令。

像Motorola6805系列的处理器不能满意上面的第4条和第5条要求,所以μC/OS-Ⅱ不能在这类处理器上运转。

图8.1说明晰μC/OS-Ⅱ的结构以及它与硬件的联系。由于μC/OS-Ⅱ为自由软件,当用户用到μC/OS-Ⅱ时,有职责揭露应用软件和μC/OS-Ⅱ的装备代码。这本书和磁盘包含了一切与处理器无关的代码和Intel80x86实形式下的与处理器相关的代码(C编译器大形式下编译) 。假如用户计划在其它处理器上运用μC/OS-Ⅱ,最好能找到一个现成的移植实例,假如没有只好自己编写了。用户能够在正式的μC/OS-Ⅱ网站www. μCOS-Ⅱ.com中查找一些移植实例。

图 8.1μC/OS-II 硬件和软件体系结构

假如用户理解了处理器和C编译器的技术细节,移植μC/OS-Ⅱ的作业实践上是十分简略的。条件是您的处理器和编译器满意了μC/OS-Ⅱ的要求,而且现已有了必要东西。移植作业包含以下几个内容:

z 用#define设置一个常量的值(OS_CPU.H)

z 声明10个数据类型(OS_CPU.H)

z 用#define声明三个宏(OS_CPU.H)

z 用C言语编写六个简略的函数(OS_CPU_C.C)

z 编写四个汇编言语函数(OS_CPU_A.ASM)

依据处理器的不同,一个移植实例或许需求编写或改写50至300行的代码,需求的时刻从几个小时到一星期不等。

一旦代码移植完毕,下一步作业便是测验。测验一个象μC/OS-Ⅱ相同的多使命实时内核并不杂乱。 乃至能够在没有应用程序的情况下测验。 换句话说, 便是让内核自己测验自己。这样做有两个优点:榜首,防止使本来就杂乱的工作愈加杂乱;第二,假如出现问题,能够知道问题出在内核代码上而不是应用程序。 刚开始的时分能够运转一些简略的使命和时钟节拍中止服务例程。一旦多使命调度成功地运转了,再添加应用程序的使命便是十分简略的作业了。

8.00 开发东西

如前所述,移植μC/OS-Ⅱ需求一个C编译器,而且是针对用户用的CPU的。由于μC/OS-Ⅱ是一个可掠夺型内核,用户只要经过C编译器来发生可重入代码;C编译器还要支撑汇编言语程序。 绝大部分的C编译器都是为嵌入式体系规划的, 它包含汇编器、 连接器和定位器。

连接器用来将不同的模块(编译过和汇编过的文件)连接成方针文件。 定位器则答应用户将代码和数据放置在方针处理器的指定内存映射空间中。 所用的C编译器还有必要供给一个机制来从C中翻开和封闭中止。一些编译器答应用户在C源代码中刺进汇编言语。这就使得刺进适宜的处理器指令来答应和制止中止变得十分简略了。 还有一些编译器实践上包含了言语扩展功用,能够直接从C中答应和制止中止。

8.01 目录和文件

本书所付的磁盘中供给了μC/OS-Ⅱ的装置程序,可在硬盘上装置μC/OS-Ⅱ和移植实例代码(Intel80x86实形式,大形式编译)。我规划了一个接连的目录结构,使得用户更简略找到方针处理器的文件。假如想添加一个其它处理器的移植实例,您能够考虑采纳相同的办法(包含目录的树立和文件的命名等等) 。

一切的移植实例都应放在用户硬盘的\SOFTWARE\μCOS-Ⅱ目录下。各个微处理器或微控制器的移植源代码有必要在以下两个或三个文件中找到:OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM。汇编言语文件OS_CPU_A.ASM是可选择的,由于某些C编译器答应用户在C言语中刺进汇编言语,所以用户能够将所需的汇编言语代码直接放到OS_CPU_C.C中。放置移植实例的目录决议于用户所用的处理器, 例如鄙人面的表中所示的放置不同移植实例的目录结构。留意,各个目录尽管针对彻底不同的方针处理器,但都包含了相同的文件名。

8.02INCLUDES.H

在榜首章中曾提到过,INCLUDES.H是一个头文件,它在一切.C文件的榜首行被包含。

#includeincludes.h

INCLUDES.H使得用户项目中的每个.C文件不必分别去考虑它实践上需求哪些头文件。运用INCLUDES.H的仅有缺陷是它或许会包含一些实践不相关的头文件。这意味着每个文件的编译时刻或许会添加。 但由于它增强了代码的可移植性, 所以咱们仍是决议运用这一办法。用户能够经过修改INCLUDES.H来添加自己的头文件,可是用户的头文件有必要添加在头文件列表的最终。

8.03OS_CPU.H

OS_CPU.H包含了用#defines界说的与处理器相关的常量,宏和类型界说。OS_CPU.H的

大体结构如程序清单L8.1所示。

程序清单 L8.1 OS_CPU.H.

#ifdefOS_CPU_GLOBALS

#defineOS_CPU_EXT

#else

#defineOS_CPU_EXTextern

#endif

/*

************************************************************************

* 数据类型

*(与编译器相关)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/297969.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部