傻大方


首页 > 知识库 > >

移植|移植μCOSII中英文翻译资料


按关键词阅读: 移植 COSII 资料 翻译 中英文

1、移植C/OS-II这篇文章介绍如何将C/OS-II移植到不同的处理器上 。
所谓移植 , 就是使一个实时内核能在其他的微处理器上运行 。
为了方便移植 , 大部分C/OS-II的代码是用C语言编写的:但是 , 仍需要用C语言和汇编语言编写一些与处理器硬件相关的代码 , 这是因为C/OS-II在读/写处理器寄存器时 , 只能通过汇编语言来实现 。
由于C/OS-II在设计前就已经考虑了可移植性 , 所以它的移植相对来说是比较容易的 。
要使C/OS-II正常运行 , 处理器必须满足以下要求:(1) 处理器的C编译器能产生可重入型代码:(2) 处理器支持中断 , 并且能产生定时中断(通常为10-100Hz);(3) 用C语言就可以开关中断;(4 。

2、) 处理器能支持一定数量的数据存储器的硬件堆栈;(5) 处理器有将堆栈指针以及其他CPU寄存器的内容读出、并存储到堆栈或内存中去的指令;如果已经了解处理器和C编译器的技术细节 , 那么移植的工作是非常容易的 , 测试一个像C/OS-II这样的实时内核其实并不复杂 , 甚至可以在没有任何应用程序下测试 , 换句话说 , 就是让内核自己测试自己 。
有两种原因要这样做:第一 , 避免使本来就复杂的事情变的更加复杂化;第二 , 如果出现问题可以知道问题出在内核代码中 , 而不是应用程序中 。
刚开始时 , 可以运行一些简单的任务和时钟节拍中断程序 。
一旦多任务调度成功运行了 , 再添加应用程序的任务就更加容易了 。
1.1 开发工具如前所述移植C/OS 。

3、-II需要标准的C交叉编译器 , 并且是针对所使用的CPU的;因为它是一个可剥夺的内核 , 只能通过C编译器来产生可重入型代码 。
同时C编译器还要支持汇编语言程序 。
绝大部分为嵌入式系统设计的C编译器都包括汇编器、链接器、定位器 。
链接器用来将不同的模块(编译过或汇编过的文件)链接成目标文件;定位器则允许将代码和数据放置在目标处理器的指定内存空间中 。
所用的C编译器还提供另一种机制 , 能在C编译器中开中断和关中断 。
一些编译器允许在C语言源代码中直接插入汇编语句 , 这就使得插入相应的处理器中的指令开中断和关中断变得容易了 。
1.2 文件(1)INCLUDES.H文件INCLUDES.H是一个头文件 , 它出现在每个.C文 。

4、件的第一行 , 如下:# include “ includes.h ”INCLUDES.H文件使得工程项目中的每个.C文件无需分别考虑它实际上需要哪些头文件 。
使用INCLUDES.H文件的唯一缺点就是它可能包含一些与当前要编译的.C文件实际上不相干的头文件 。
这意味着每个文件的编译时间都会增加;但由于他增加了代码的可移植性 , 所以还是决定使用这种方法 。
也可以通过重新编译INCLUDES.H文件来增加头文件 , 但是头文件必须添加在文件列表的最后 。
(2) OS_CPU.H文件OS_CPU.H包含了用#define语句定义的、与处理器相关的常数、宏以及类型 。
OS_CPU.H文件的大体结构如程序清单T1所列:# 。

5、ifdef OS_CPU_GLOBALS#define OS_CPU_EXT#else#define OS_CPU_EXT extern#endiftypedef unsigned char BOOLEAN;
typedef unsigned char INT8U;
/* 无符号8位整数*/typedef signed char INT8S;
/* 有符号8位整数*/typedef unsigned int INT16U;
/* 无符号16位整数*/typedef signed int INT16S;
/* 有符号16位整数*/typedef unsigned long INT32U;
/* 无符号32位 。

6、整数 */typedef signed long INT32S;
/* 有符号32位整数*/typedef float FP32;
/* 单精度浮点数 */typedef double FP64;
/* 双精度浮点数 */typedef unsigned int OS_STK;
/* 堆栈入口宽度为16位*/#define OS_ENTER_CRITICAL() ?/* 关中断*/#define OS_EXIT_CRITICAL() ? /* 开中断s */ #define OS_STK_GROWTH 1 /* 定义堆栈方向:1=向下递减 , 0=向上递增 */#define OS_TASK_SW() ? 。

7、 程序清单 T1 OS_CPU.H , 与编译器相关的数据类型因为不同的微处理器有不同的字长 , 所以C/OS-II的移植包括了一系列的数据类型的定义 , 而确保其可移植性 。
尤其是 , C/OS-II代码从不使用C语言中的 short, int 及long等数据类型 , 因为它们是与编译器相关的 , 是不可移植的 。
相反 , 定义的数据结构等既是可移植的 , 又很直观 。
举例来说 , INT16U数据类型总是代表16位的无符号整型数 。
这样C/OS-II就可以断定 , 声明为该数据类型变量的范围都是065535 。
将C/OS-II移植到32位的处理器上 , 就意味着INT16U实际被声明为无符号短整型数 , 而不是无符号整数 , 但是 , C/OS-II处 。

8、理的仍然是INT16U 。
你必须将任务堆栈的数据类型告诉C/OS-II 。


来源:(未知)

【学习资料】网址:/a/2021/0406/0021864430.html

标题:移植|移植μCOSII中英文翻译资料


上一篇:2021|2021年公司办公室文员办公室实习报告范文

下一篇:农村信用社|某农村信用社信息科技风险管理经验交流