μClinux嵌入式系统移植与开发方法
2013-12-27 来源:eccn
μCLinux是专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。适用于没有虚拟内存或内存管理单元(MMU)的处理器。由于μClinux在标准的Linux基础上进行了适当的裁剪和优化,形成了一个高度优化的、代码紧凑的嵌入式Linux。虽然它的体积很小,但μClinux仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。
嵌入式系统的开发与一般的应用开发最大的差别在于,前者需要建立特殊的硬件环境,而后者一般基于特定的操作系统或分布式平台。后者的平台已经对硬件或网络媒质做了抽象,从而不需要由系统开发者来完成这些工作。而在嵌入式系统开发中,这也由开发者完成。
嵌入式系统开发环境一般分成主机端和目标板两个部分。主机端是开发平台,用于运行开发过程中的各种工具;目标板是运行和测试平台,是嵌入式系统的最终驻留环境。在主机端和目标板之间需要通过某种方式进行通信,通信的目的在于发送控制指令和传输数据,同时获得反馈信息。
在硬件环境建立之后,就需要创建软件开发环境。软件环境主要是指Blackfin体系结构的交叉编译环境。建立交叉编译环境首先要有交叉开发工具。交叉编译工具是指一组运行在某一种处理器上,却可以编译出另一种处理器上执行的指令的工具。它由一套用于编译、汇编和链接内核及应用程序的组件组成,通过编译可以使μClinux内核和应用程序在目标设备上运行。编译μClinux一般使用GNU开发套件作为交叉编译器工具链,它包括一系列的开发和调试工具。作为操作系统的核心,μClinux内核负责管理系统的进程、内存、设备驱动程序、文件系统和网络系统,决定着系统的各种性能。μClinux内核采用模块化的组织结构,通过增减内核模块的方式来增减系统的功能。
虽然μClinux的内核代码大部分独立于处理器和其体系结构,但是最底层的代码还是基于特定系统的。虽然各个系统存在相同之处,但是它们的中断处理上下文、内存映射的维护、任务上下文和初始化过程是独特的。这些例行程序放置在μClinux代码树的arch/目录下。直接由源代码编译生成的内核映像文件一般不会启动成功,需要根据自己的目标板进行配置。μClinux内核有2种可选的运行方式:一种是在FLASH上直接运行;另一种是加载到内存中运行,系统启动时从FLASH中读取压缩的内核代码到内存中解压,然后开始执行,这种方法比第一种的速度更快。