μClinux
μClinux μClinux是一个完全符合GNU/GPL公约的操作系统,完全开放源代码,现在由Line公司支持维护。μClinux的发音是you-see-linux,它的名字来自于希腊字母μ和英文大写字母C结合。μ代表“微小”之意,字母C代表“控制器”,所以从字面上就可以看出它的含义,即“微控制领域中的Linux系统”。
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协议,可以支持各种流行的网络协议,方便用户使用系统访问网络资源,是一个功能丰富、简便易用的网络操作系统。
3.μClinux下的系统开发环境
了解了μClinux操作系统的基本技术细节,对于网管人员在完成基本管理职能的基础上,使用开发环境进一步完善和提高自身的网络管理技能,具有非常重要的指导意义。目前在具有嵌入式开发支持功能的路由器等网络产品方面,经常使用的μClinux开发平台是GNU开发套件。
该开发套件包括:
(1)常规C编译器GCC,可以使用标准C进行系统功能的二次开发。
(2)C++编译器GCC++,可以使用面向对象开发模式完成系统功能的二次开发。
(3)汇编器AS和链接LD,可以使用汇编语言进行系统功能的二次开发。
(4)其它工具软件,包括:二进制转换工具(OBJCOPY,OBJDUMP),软件调试工具(GDB.GD BSERVER,KGDB)和基于不同硬件平台的开发库。
上述开发环境的技术特点如下:
(1)代码效率高。在GNU GCC/GCC++语言环境的支持下,用户可以使用流行的C/C++语言开发应用程序。该开发模式下,网络管理人员可以轻松介入到开发工作中,并可以生成高效率运行代码。
(2)灵活性强。GNU开发工具都是采用命令行的方式,用户掌握起来相对比较困难,不如基于Windows系统的开发工具好用,但是GNU工具的复杂性是由于它更贴近编译器和操作系统的底层,并提供了更大的灵活性。
(3)丰富的网上免费资源。上述工具都是按GPL版权声明发布的,任何人都可以从网上免费获取全部的源代码,无需任何费用的投入,对于一般小型单位的网络质量的提升可以起到投入少、见效快的神奇效果。GNU开发套件作为通用的Linux开放套件,包括一系列的开发调试工具。
(4)易学易用。网络管理人员一般都具有计算机以及相关专业的背景,都经历过软件的初步培训过程,这些技术人员一旦学习和掌握了相关工具后,就可以掌握网络系统设计和二次开发的基础知识。运行于Linux操作系统下的自由软件GNU gcc编译器,不仅可以编译Llnux操作系统下运行的应用程序,还可以编译Linux内核本身,甚至可以作交叉编译,编译运行于其它CPU上的程序。
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协议,可以支持各种流行的网络协议,方便用户使用系统访问网络资源,是一个功能丰富、简便易用的网络操作系统。
3.μClinux下的系统开发环境
了解了μClinux操作系统的基本技术细节,对于网管人员在完成基本管理职能的基础上,使用开发环境进一步完善和提高自身的网络管理技能,具有非常重要的指导意义。目前在具有嵌入式开发支持功能的路由器等网络产品方面,经常使用的μClinux开发平台是GNU开发套件。
该开发套件包括:
(1)常规C编译器GCC,可以使用标准C进行系统功能的二次开发。
(2)C++编译器GCC++,可以使用面向对象开发模式完成系统功能的二次开发。
(3)汇编器AS和链接LD,可以使用汇编语言进行系统功能的二次开发。
(4)其它工具软件,包括:二进制转换工具(OBJCOPY,OBJDUMP),软件调试工具(GDB.GD BSERVER,KGDB)和基于不同硬件平台的开发库。
上述开发环境的技术特点如下:
(1)代码效率高。在GNU GCC/GCC++语言环境的支持下,用户可以使用流行的C/C++语言开发应用程序。该开发模式下,网络管理人员可以轻松介入到开发工作中,并可以生成高效率运行代码。
(2)灵活性强。GNU开发工具都是采用命令行的方式,用户掌握起来相对比较困难,不如基于Windows系统的开发工具好用,但是GNU工具的复杂性是由于它更贴近编译器和操作系统的底层,并提供了更大的灵活性。
(3)丰富的网上免费资源。上述工具都是按GPL版权声明发布的,任何人都可以从网上免费获取全部的源代码,无需任何费用的投入,对于一般小型单位的网络质量的提升可以起到投入少、见效快的神奇效果。GNU开发套件作为通用的Linux开放套件,包括一系列的开发调试工具。
(4)易学易用。网络管理人员一般都具有计算机以及相关专业的背景,都经历过软件的初步培训过程,这些技术人员一旦学习和掌握了相关工具后,就可以掌握网络系统设计和二次开发的基础知识。运行于Linux操作系统下的自由软件GNU gcc编译器,不仅可以编译Llnux操作系统下运行的应用程序,还可以编译Linux内核本身,甚至可以作交叉编译,编译运行于其它CPU上的程序。