Embedded Linux 技术与概念解析
合Autoconf使用,以产生可以让GNU Make自动编译原始码的”Makefile”档案。 GNU Make GNU Make会根据“Makefile”来自动编译程序,而编译完成的程序为执行文件。GNU Make的重要特点,是没有特定程序语言限制,甚至可以应用在非程序语言编译的环境中,例如:系统维护工作与套件安装,因此GNU Make可以说是系统自动化的好工具。 GNU Make根据“Makefile”档案里所定义的规则,执行Unix命令,简单的Makefile规格,可以利用编辑器手动撰写,但较复杂且与针对不同平台的设定,则建议采用GNU Autoconf/GNU Automake来产生“Makefile”。当我们能够产生使用cross toolchain的Makefile时,就可以将套件编译成ARM9的执行档。 ARM 平台的选择与支持 嵌入式装置的硬件选择当然没有所谓的标准,但若是谈论到嵌入式Linux的应用,在平台的选择上就会有一些考虑。最重要的考虑因素,当然就是处理器对于操作系统的支持,如此一来,没有MMU(内存管理单元)的ARM7平台,就不在主要的选择范围内。以下列出几个目前普遍使用的ARM9应用程序处理器(application processor): 在选择解决方案时,若是决定采用Linux做为嵌入式操作系统,首先当然就是要确定厂商是否提供完整的BSP。不过,由于Linux是由社群所维护发展,因此,选择目前Linux kernel内有支持的平台,将会是较好的选择,这也是为什么有许多大厂,主动贡献并提交BSP给kernel.org的原因。 目前在kernel社群比较活跃的ARM9厂商,或是社群主动积极协助维护的SOC平台,像是ATMEL、Samsung与TI OMAP等,这些都是kernel.org的Linux kernel就有支持的处理器,这表示让Linux支持这些平台的方式也很简单,就是到kernel.org下载官方的Linux kernel即可。 Crosstool 针对ARM9或是其它平台的开发,最重要的工具就是Cross Toolchain。Cross Toolchain的制作一直是Embedded Linux开发者的梦靥,大多数人选择由网络下载现成的开发工具,但经常会遇到缺乏链接库的编译错误。完整的Cross Toolchain包含1套基本的gcc cross compiler以及其它的应用链接库;Cross Toolchain是制作基本gcc cross compiler的工具,透过crosstool即可制作ARM9的基本toolchain。 Root Filesystem概念 Root filesystem的建置,即是在建立1个基本的Linux系统(base system),让kernel在完成开机后,进入user mode执行使用者程序。Root filesystem的建置主要是以Busybox为主,并加入(移植)客制化的开放源码(open source)与自由软件(free software)。 因为嵌入式Linux的root filesystem是依照需求加入套件,与桌面环境的Linux distribution不同,因此都是用从头打造的方式做起。在建立root filesystem时,链接库相依 (library dependencies) 的议题是相当重要的项目。当root filesystem缺少必要的library时,程序当然无法执行,甚至系统也会无法顺利启动。分析应用程序所需的相依链接库,观念如下: (1)先利用Cross Toolchain的objdump指令观察ELF格式里的「NEEDED」项目。 (2)必须再检查这些library是否相依其它library。 1个基本且可开机的root filesystem,也称做bootstrap root filesystem,1个可用的bootstrap root filesystem只需要包含busybox与libc即可。传统的Embedded Linux应用,大多是以NFS的方式来测试目标装置的完整root filesystem(full root filesystem)。以NFS进行Embedded Linux开发测试,主要是针对目标装置的full root filesystem做立即(right now)的系统执行测试(run-time),免除不断打包image file、开机的恶梦。这是1种流行很久的Embedded Linux系统测试与开发方式,其概念如下: (1)将target的完整root filesystem(例如ARM9 root filesystem)建置后,存放于host端的某个目录下,例如/home/rootfs。 (2)为target制作1个NFS root filesystem,也就是bootstrap root filesystem+ NFS功能,并使用NFS root filesystem将目标装置开机。 (3)设定host端为NFS server。 (4)以NFS mount方式将host端上的root filesystem目录mount进来,即可在目标装置上执行full root filesystem里的应用程序。 这种方式不但简单,而且方便,需要的基础建设如下: 1.目标装置使用的kernel必须支持NFS。 2.制作bootstrap root filesystem时,需要加入mount指令,并且开启mount指令的NFS功能。 3.加入NFS functionality至bootstrap root filesystem。 4.设定NFS server。 制作完成的root filesystem必须做打包的动作
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
