UC/OS与uClinux的比较
节后,uC/OS的移植只需要修改与处理器相关的代码就可以了。具体有如下内容:
*OS_CPU.H中需要设置一个常量来标识堆栈增长方向;
*OS_CPU.H中需要声明几个用于开关中断和任务切换的宏;
*OS_CPU.H中需要针对具体处理器的字长重新定义一系列数据类型;
*OS_CPU_A.ASM需要改写4个汇编语言的函数;
*OS_CPU_C.C需要用C语言编写6个简单函数;
*修改主头文件INCLUDE.H,将上面的三个文件和其它的头文件加入。
(2)uClinux的移植
其实,uClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂;相对uC/OS,uClinux的移植也复杂得多。一般而言,要移植uClinux,目标处理器除了应满足上述uC/OS应满足的条件外,还需要具有足够容量(几百KB以上)外部ROM和RAM。
uClinux的移植大致可以分为3个层次。
*结构层次的移植。如果待移植处理器的结构不同于任何已经支持的处理器结构,则需要修改linux/arch目录下相关处理器结构的文件。虽然uClinux内核代码的大部分是独立于处理器和其体系结构的,但是其最低级的代码也是特定于各个系统的。这主要表现在它们的中断处理上下文、内核映射的维护、任务上下文和初始化过程都是独特的。这些例行程序位于lunux/arch/目录下。由于Linux所支持体系结构的种类繁多,所以对一个新型的体系,其低级例程可以模仿与其相似的体系例程编写。
*平台层次的移植。如果待移植处理器是某种uClinux已支持体系的处理器,则需要在相关体系结构目录下建立相应目录并编写相应代码。如MC68EZ328就是基于无MMU的m68k内核的。此时的移植需要创建的linux/arch/m68knommu/platform/MC68EZ328目录下,并在其下编写跟踪程序(实现用户程序到内核函数的接口等功能)、中断控制调度程序和向量初始化程序等。
*极级移植。如果所用处理器已被uClinux支持,就只需要板级移植了。板级移植需要在linux/arch/?platform/中建立一个相应板的目录,再在其中建立相应的启动代码crt0_rom.s或crt0_ram.s和键接描述文档rom.ld或ram.ld就可以了。板级移植还包括驱动程序的编写和环境变量设置等内容。
4 结语
通过对uC/OS和uClinux的比较可以看出,这两种操作系统在应用方面各有优劣。uC/OS占用空间少、执行效率高、实时性能优良,且针对新处理器的移植相对简单。UClinux则占用空间相对较大,实时性能一般,针对新处理器的移植相对复杂。但是,uClinux具有对多种文件系统的支持能力、内嵌了TCP/IP协议,可以借鉴Linux丰富的资源,对一些复杂的应用,uClinux具有相当优势。例如,CISCO公司的2500/3000/4000路由器就是基于uClinux操作系统开发的。总之,操作系统的选择是由嵌入式系统的需求决定的。简单地说就是,小型控制系统可充分利用uC/OS小巧且实时性强的优势;如果开发PDA和互联网连接终端等较和为复杂的系统,则uClinux是不错的选择。
- 在uclinux下实现拨号(04-21)
- 基于uClinux嵌入式系统的汽车黑匣子的设计(07-08)
- uClinux进程调度器的实现分析(04-13)
- 嵌入式操作系统uCLinux详解(03-19)
- 基于ARM和uClinux的家庭网关系统(09-14)
- 嵌入式操作系统uClinux和eCos的比较(03-01)