首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

uC/OS II在S3C2410上的移植 03

uC/OS II在S3C2410上的移植 03

uC/OS II完全可以移植到S3C2410上运行。
3 主体移植过程
3.1 设置与处理器及编译器相关的代码[OS_CPU.H]
不同的编译器会使用不同的字节长度来表示同一数据类型,所以要定义一系列数据类型以确保移植的正确性。下面是uC/OS II定义的一部分数据类型。
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U;/*无符号8位*/
typedef signed char INT16S;/*带符号8位*/
typedef unsigned int INT16U;/*无符号16位*/
typedef signed int INT16S;/*带符号16位*/
typedef unsigned long INT32U;/*无符号32位数*/
typedef signed long INT32S;/*带符号32位数*/
typedef float FP32;/*单精度浮点数*/
typedef double FP64;/*双精度浮点数*/
typedef unsigned int OS_STK;/*堆栈入口宽度*/
typedef unsigned int OS_CPU_SR;/*寄存器宽度*/
uC/OS II需要先关中断再访问临界区的代码,并且在访问完后重新允许中断。uC/OS II定义了两个宏来禁止和允许中断:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(),本移植实现这两个宏的汇编代码。
#define OS_ENTER_CRITICAL()(cpu_sr=OSCPUSaveSR())/*Disable interrupts*/
#define OS_EXIT_CRITICAL()(OSCPURestoreSR(cpu_sr))/*Enable interrupts*/
EXPORT OSCPUSaveSR
OSCPUSaveSR
mrs r1,cpsr
mov r0,r1
orr r1,r1,#0xc0
msr cpsr_cxsf,r1
mov pc,lr
EXPORT OSCPURestoreSR
OSCPURestoreSR
msr cpsr_cxsf,r0
mov pc,lr
返回列表