uc/OS移植到ARM7上
C/OS-Ⅱ的移植集中在OS_CPU.h,OS_CPU_A.s,OS_CPU.c这三个文件上
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中,每一个任务都有自己的任
顶上面的哥们一个。
谢谢你的回答,我知道了
你可以去群里看看 【电子产品研发交流】:(323764552) 欢迎来群里共同探讨!