所谓“移植”,就是使一个实时内核能在其它的微处理器或微控制器上运行。 尽管大部分μ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指令集,两种指令集有不同的应用范围。为了最大限度地支持芯片的特性,任务应当可以使用任意一个指令集并可以自由切换,而且不同的任务应当可以使用不同的指令集,这次移植的代码已经实现了这一点。 |
电工学习网 ( )
GMT+8, 2021-12-6 20:44