uc/OS移植到ARM7上

2019-07-16 09:33发布

急求大神教我如何移植ucos到ARM上,开发环境为iar,求各位大神能帮一下,看了不少资料,但是感觉都是没有说到重点,希望能有人能指导下,非常感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
zhou2sheng
2019-07-16 13:03
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中,每一个任务都有自己的任

一周热门 更多>