2019-07-16 09:33发布
zhou2sheng 发表于 2014-3-21 09:30 C/OS-Ⅱ的移植集中在OS_CPU.h,OS_CPU_A.s,OS_CPU.c这三个文件上 OS_CPU.h的移植 该文件定义了和处理器及编 ...
最多设置5个标签!
OS_CPU.h的移植
该文件定义了和处理器及编译器相关的定义及一些全局函数声明。由于ARM7 处理器字长为32位,半字长为16位,字节为8位,因此在OS_CPU.h文件修改与编译器相关的定义如下:
typedef unsigned CHAR BOOLEAN;
typedef unsigned CHAR INT8U;
typedef signed CHAR INT8S;
typedef unsigned SHORT INT16U; /*某些编译器中int是32位的,故统一用SHORT表示*/
typedef signed SHORT INT16S;
typedef unsigned LONG INT32U;
typedef signed LONG INT32S;
typedef float FP32;
typedef double FP64;
typedef unsigned LONG OS_STK; /*堆栈宽度为32位,即ARM7种的字对齐方式*/
/*下面是与处理器相关的代码*/
#define OS_CRITICAL_METHOD 2 /*使用方式2保护临界代码*/
#define OS_ENTER_CRITICAL() ARMDisableInt() /*临界段代码保护宏定义*/
#define OS_EXIT_CRITICAL() ARMEnableInt()
#define OS_STK_GROWTH 1 /*定义堆栈生长方向为向下生长 */
#define OS_TASK_SW OSCtxSw /*宏定义,用于非中断级的任务切换*/
/*下面开始声明全局函数声明,均是OS_CPU_A.S中需要编写的函数*/
extern void OSCtxSw(void); /*声明任务级任务切换函数*/
extern void OSIntCtxSw(void); /*声明中断级任务切换函数*/
extern void ARMDisableInt(void); /*声明中断禁止函数*/
extern void ARMEnableInt(void); /*声明中断恢复函数*/
extern void OSTickISR(void); /*声明时钟中断服务函数*/
OS_CPU_C.C文件
移植OS_CPU_C.C文件时,需要编写的是任务堆栈初始化函数OSTaskStkInit和时钟节拍中断服务钩子函数OSTimeTickHook。
在ΜC/OS-II中,每一个任务都有自己的任
谢谢你的回答,我知道了
一周热门 更多>