移植规划

所谓“移植”,就是使一个实时内核能在其它的微处理器或微控制器上运行。
尽管大部分μc/os-ii的代码是用c语言编写的,但是在编写与处理器硬件相关的代码时还是不得不使用汇编语言。移植的主要工作就是编写这些与处理器硬件相关的代码。
在移植前针对所使用的微处理器进行规划,主要有以下几个方面的考虑:编译器的选择、任务模式的选择和支持的指令集。
μc/os-ii移植
——μc/os-ii硬件软件体系结构
编译器的选择
目前,针对arm处理器核的c语言编译器有很多,如sdt、ads、iar、tasking和gcc等。据了解,目前在国内最流行的是ads、sdt和gcc。sdt和ads均为arm公司自己开发,ads为sdt的升级版,以后arm公司不再支持sdt,所以不会选择sdt。gcc虽然支持广泛,很多开发套件使用它作为编译器,但是与ads比较其编译效率较低,这对充分发挥芯片性能很不利,所以最终使用ads编译程序和调试。
任务模式的取舍
arm7处理器核具有用户、系统、管理、中止、未定义、中断和快中断七种模式,其中除用户模式外其它均为特权模式。其中管理、中止、未定义、中断和快中断模式与相应异常相联系,任务使用这些模式不太适合。而系统模式除了是特权模式外,其它与用户模式一样,因而可选为任务使用的模式只有用户模式和系统模式。为了尽量减少任务代码错误对整个程序的影响,缺省的任务模式定为用户模式,可选为系统模式,同时提供接口使任务可以在这两种模式间切换。
支持的指令集
带t变量的arm7处理器核具有两个指令集(可以参考第3章 ):标准32位arm指令集和16位thumb指令集,两种指令集有不同的应用范围。为了最大限度地支持芯片的特性,任务应当可以使用任意一个指令集并可以自由切换,而且不同的任务应当可以使用不同的指令集,这次移植的代码已经实现了这一点。