所谓移植,就是使选用的实时内核能在某个特定的微处理器上运行。为了方便移植,大部分的实时操作系统代码是用C语言编写的,但仍需要用C和汇编语言编写一些与微处理器相关的代码,这是因为有一些操作只能通过汇编语言来实现。由于所有的实时操作系统在设计时就已经充分考虑了可移植性,所以移植相对来说是比较容易的。以UCOSII为例来说明移植的过程。
要是UCOSII正常运行,为处理器必须满足如下要求:
1.为处理器的C编译器能产生可重入代码;
2. 用C语言就可以打开和关闭中断;
3.微处理器支持中断,并且能产生定时中断(通常为10-100HZ);
4.微处理器支持能够容纳一定量数据的硬件堆栈(一般是几千字节);
5.微处理器有将堆栈指针和其他CPU寄存器读出并存储到堆栈或内存中的指令。
在所选用的微处理器和编译器能够满足所选的实时操作系统后,就可以动手编写移植代码了。
一般移植工作包括以下几个内容:
1.用#define设置一个常量的值(OS_CPU.H);
2.声明10个数据类型(OS_CPU.H);
3.用#define声明3个宏(OS_CPU.H);
4.用C语言编写6个简单的函数(OS_CPU_C.C);
5.编写4个汇编语言函数(OS_CPU_A.ASM);
因此相关的编写文件有三个:OS_CPU.H,OS_CPU_C.C和OS_CPU_A.ASM。当使用编译器为ADS1.2时,将ASM改为S。