理论教育 LPC2138上的ARM嵌入式系统移植6.2μC/OS-II

LPC2138上的ARM嵌入式系统移植6.2μC/OS-II

时间:2023-11-03 理论教育 版权反馈
【摘要】:μC/OS-II可以简单地看作一个实时多任务调度器,在此基础上完善并添加了与多任务操作系统有关的一些服务,如信号量、邮箱和消息队列等。图6-1所示为μC/OS-II的体系结构以及它与系统硬件之间的关系。μC/OS-II大部分代码都是用C语言编写的,因此具有良好的可移植性。在移植μC/OS-II到LPC2138时,必须先把上述知识了解得比较透彻,这不单单是阅读资料就可以实现的,还需要不断地实践。通常μC/OS-II中需要移植的部分如表6-1所列。

LPC2138上的ARM嵌入式系统移植6.2μC/OS-II

μC/OS-II可以简单地看作一个实时多任务调度器,在此基础上完善并添加了与多任务操作系统有关的一些服务,如信号量、邮箱和消息队列等。图6-1所示为μC/OS-II的体系结构以及它与系统硬件之间的关系。

978-7-111-44508-1-Chapter06-1.jpg

图6-1 μC/OS-II的硬件和软件体系结构

其中核心代码文件为OS_CORE.C操作系统内核功能、OS_FLAG.C系统标志、OS_TIME.C时钟、OS_TASK.C多任务、OS_SEM.C信号量、OS_MUTEX.C互斥、OS_Q.C消息队列、OS_MBOX.C消息邮箱、OS_MEM.C内存管理。

还有三个与处理器相关的文件:OS_CPU.H、OS_CPU_C.C、和OS_CPU_ASM,其中的OS_CPU_ASM为汇编语言程序文件,它们也是将μC/OS-II移植到不同的CPU体系结构时需要修改的文件。

μC/OS-II大部分代码都是用C语言编写的,因此具有良好的可移植性。移植工作绝大部分都集中在多任务切换的实现上,这部分代码主要用于保存和恢复与处理器相关寄存器的内容。另外具体移植时还要考虑采用哪一种编译器,针对ARM处理器核的C语言编译器有很多,这里选用的是IAR EWARM编译器。

移植一个操作系统到一个特定的CPU体系结构上并不是一件很容易的事情,它对移植者有以下要求:

●对目标体系结构要有很深的了解。

●对OS原理要有较深入的了解。(www.daowen.com)

●对所使用的编译器要有较深入的了解。

●对需要移植的操作系统要有相当的了解。

●对具体使用的芯片也要有一定的了解。

在移植μC/OS-II到LPC2138时,必须先把上述知识了解得比较透彻,这不单单是阅读资料就可以实现的,还需要不断地实践。其中,对操作系统的了解是最重要的,因为它的影响是全局性的,决定了移植代码的框架和功能。其他部分也很重要,它们在细节上影响代码,并最终影响代码的正确性和可靠性。通常μC/OS-II中需要移植的部分如表6-1所列。

表6-1 μC/OS-II中需要移植的部分

978-7-111-44508-1-Chapter06-2.jpg

实际上,还有一个includes.h文件需要关注,因为每一个应用都包含独特的includes.h文件。μC/OS-II要求所有的C文件都要包含头文件includes.h,这样使得用户项目中的每个C文件不用分别去考虑它实际上需要哪些头文件。使用includes.h的缺点是,它可能会包含一些实际不相关的头文件,这意味着每个文件的编译时间可能会增加,但却增强了代码的可移植性。用户可以按需要修改includes.h头文件,增加自己需要的内容,但必须加在文件末尾。

在本移植中另外增加了一个头文件OS_CFG.H,要求所有用户程序必须包含OS_CFG.H。在OS_CFG.H中包含includes.h和特定的头文件及配置项。而μC/OS-II的系统文件依然只是包含includes.h,即μC/OS-II的系统文件完全不必改动。所有对配置的改变(包括头文件在内)均在OS_CFG.H中进行,而includes.h定下来后不必改动,这样,μC/OS-II的系统文件需要编译的次数大大减少,编译时间也随之缩短。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈