在众多的嵌入式网络设备中,许多设备选用了没有内置MMU系统的中央处理器,由于秉承了Linux的众多优点,μClinux已经成为了该类网络设备首选的嵌入式操作系统。μClinux是一个完全符合GNU_GPL公约的操作系统,完全开放源代码,现在由Line公司支持维护,它通常用于具有内存或Flash空间不大的嵌入式系统,比如,具有一定智能性能的路由器、交换机等网络设备通常属于μClinux的应用范畴。一个高水平的企业或事业单位的网管,在熟悉网络设备的安装、调试的基础上,具备一定的网络设备软件系统的驾驭能力,对于提高网络设备的性能、提升日常网络维护工作的技术含量,是非常必要的。本文将通过介绍μClinux网络操作系统的特点以及该系统环境下的二次开发技术,向大家介绍一种网络设备性能提高的新途径。
1、μClinux的发展及特点
1991年,芬兰大学生Linus Torvalds开发了一个自由的操作系统Linux,并通过Internet进行了发布。随后,一大批编程人员加入到基于Linux操作系统开发过程中来,Linux要求所有的源代码必须公开,后来技术的发展转向GPL( GNUG eneral Public Licence),只要遵守GPL的规定,就可以免费获得复制,因此Linux依然可以看做是一个免费软件。随着嵌入式应用的日益普及,人们迫切需要更加小巧的、无需庞大内存运行环境的迷你型的操作系统,于是,GPL组织开发了针对微型控制领域的Linux操作系统,这就是μClinux操作系统。μ表示Micro,即微小的,C表示Control,即控制,整个μClinux的含义可以理解为"适用于微型控制领域的Linux操作系统"。
μClinux的具体特点包括:
(1)适合嵌入式环境开发。一般而言,嵌入式系统自身所具有的简约性,导致对于所选用的操作系统的多任务、大内存管理等方面的功能都没有明确需求。因此,μClinux不支持MMU等内存管理功能。小巧玲珑的特点使得该系统在嵌入式开发领域具有得天独厚的优势。
(2)传承了Linux的优点。Linux 操作系统最突出优点是强大的网络管理功能,基本上所有的网络协议和网络接口都可以在Linux上找到,Linux的内核比标准的UNIX处理网络协议更加高效,系统的网络吞吐性能更好,这也是Linux网络服务器市场上占据较大的市场分额的重要原因。对于小型的SOHO路由器,Linux的网络技术无疑是其开发运行的最佳选择,Linux完全能对给其提供全方位的网络技术支持。μClinux是基于Linux开发的,继承了Linux的强大网络管理功能,许多资料可以在Internet上方便下载。
(3)支持功能扩展。虽然与Linux相比,μClinux经过了大幅度的瘦身,但是这并没有妨碍μClinux提供丰富的功能扩展接口。比如,虽然μClinux多任务支持模式较为简单,但是在必须需要复杂多任务环境的时候,可以进行方便的扩展。
(4)提供强大的系统管理能力。虽然嵌入式系统的应用程序,一般可以在裸板上运行,但为了使系统具有任务管理、存储器管理、设备管理、事件管理、消息管理、队列管理和中断处理等全方位的能力,更好地分配系统资源,用户就需要针对自己的硬件平台和实际应用选择适当的嵌入式操作系统。μClinux就是一种不错的选择。
(5)可以根据不同的应用需求量身定做操作系统。这就是定制μClinux的剪裁技术。要让uClinux支持一个新硬件体系,首先需要收集构建代码的工具,然后开始剪裁和编译内核,使构建的操作系统适合具体的硬件需求。一旦内核支持设计的处理器功能,操作系统就可以正常运行了。在此基础上,还要增加必要的驱动程序的支持,以便各种硬件设备能够高效能地发挥作用。典型的驱动程序集合中包括了诸如控制台终端、基本串、并行设备、包含了根文件系统的块设备的存储设备驱动以及其他特殊设备的驱动程序等。
2、μClinux操作系统的核心技术环节剖析
在GNU通用公共许可证的授权下,μClinux操作系统的用户可以使用几乎所有Linux的API函数,不会因为没有内存管理单元MMU而受到影响;而且,μClinux在标准的Linux基础上进行了适当的裁剪和优化,形成了一个高度优化的、代码紧凑的嵌入式Linux,体积小了,但是仍然保留了Linux的大多数的优点,比如稳定性好、强大的网络功能、良好的可移植性、完备的文件系统支持功能、以及标准丰富的应用程序接口API等,可以支持类似ARM7TDMI等类型多的小巧玲珑的中央处理器。下面对μClinux二此开法过程中涉及到的主要功能部件以及各部分的技术内涵,进行较为深入的分析和讨论,以便网络管理人员在应用μClinux进行系统功能扩展时参考:
(1)系统加载模块,该模块又称BootLoader。它是负责μClinux操作系统内核启动的基本功能模块。具体来说,该功能模块可以完成建立uCLinux内核运行环境和从闪存Flash中装载初始化内核镜象。
(2)系统内核初始化模块,该模块又称SystemInit。启动μClinux内核时,首先受到调用的功能函数是StartKernel()函数。该函数的主要任务是初始化内核的其他部分。具体包括:捕获终端请求IRQ、进程调度、设备驱动程序加载、标定延迟循环,进而调用fork的"init"进程,以启动任务管理环境。
(3)系统调用模块,该模块又称为SystemCall模块。在μClinux系统执行完"init"程序后,内核对程序流不再有直接的控制权,它此后的作用仅限于处理捕获到的中断请求事件(例如硬件中断),并为系统调用提供服务进程。
(4)设备驱动模块,又称为DeviceDriver模块。在几乎所有的操作系统中,设备驱动都占据大部分的系统空间,μClinux也不例外。同其他各类操作系统一样,μClinux的设备驱动程序,为系统连接和控制的硬件设备与操作系统之间提供通讯接口。同时,各设备发出的中断请求由系统调用模块负责安排响应时间,并提供服务程序的入口地址。
(5)文件系统,又称为FileManagement模块。任何一个操作系统,包括μClinux在内,它们最重要的任务之一就是对多种文件系统进行有效的管理。μClinux在文件管理方面具有很强的兼容性,很容易同其他操作系统共存、共享各类常用文件。特别值得推崇的是,μClinux可以透明地支持许多不同类型的文件系统,将各种安装的文件和文件系统以一个完整的虚拟文件系统的形式呈现给用户。同时,μClinux还带有一个完整的TCP/IP协议,可以支持各种流行的网络协议,方便用户使用系统访问网络资源,是一个功能丰富、简便易用的网络操作系统。