几种Linux下嵌入式开发环境的简单介绍

时间:2009-11-13来源:网络

  uCLinux

  uCLinux与emDebian至少有两个重要的区别,第一是构建方式,前面已经提到过了,uCLinux属于 from scratch 一类的。另一个不同的地方,uCLinux是支持不在emDebian支持的11种CPU的,当然,这个说法不是很恰当,正确的说法是uCLinux支持那些不具备MMU单元的CPU体系。uCLinux的第一个目的是支持MC68328芯片,现在已经能构支持更多的CPU,如Intel i960,ARM等。不过,uCLinux的主体开发团队目前已经不再支持ARM了,还好 Samsung 的 Hyok S. Choi 接过了接励棒,Linux 2.6版本的补丁可以在 uCLinux/ARM2.6 找到。

  uCLinux之前仅是核心的一些补丁,后来发展成为一个包括核心、库、应用程序、工具和编译相关的配置文件的一个集成开发环境。与 buildroot不同的是,uCLinux不编译目标系统的工具集,也就是说,相应的编译工具应该提前安装好。如,对于arm来说,需要先安装ARM交叉编译器。uCLinux的编译器也需要一些补丁,其中比较重要的两个方面主要包括:

  用于生成FLT文件的补丁:由于MMU的关系,uCLinux不支持ELF可执行文件,这个补丁主要包括bin2flt工具包和一个ld的wrapper脚本等,用于(透明于用户)生成FLT文件;

  用于支持XIP(Execute In Place)的补丁:这个补丁需要对gcc进行一些小的修改;支持XIP主要是为了解决小内存环境中运行的问题。

  XIP不一定适用于每种应用环境,对于内在要求特别严格的系统来说(空间第一位,如手机要求使用片内RAM),可以通过将核心和应用程序编译为XIP支持,然后直接在Flash上运行,内存仅用于运行时数据;而对于性能要求为主的系统(如高速网络处理器),则不能因为节省一点空间而使用XIP将程序直接在Flash上运行,这样可能会降低指令的读取速度而影响系统性能(但仍然可以使用 XIP,使程序的多个实例在内存中共享代码空间,以后详细说); + FLT可执行文件支持动态链接库(目前仅m68k支持,参见 uCdot: Shared libraries under uCLinux mini-HOWTO)的补丁;

  uCLinux的编译过程大致是,首先,通过可视配置界面(menuconfig/xconfig)选取Vendor和board(实际上是选择了一些配置文件和产品相关的文件),然后根据选择构造一个适用于target的开发环境,如生成头文件和需要的库文件(uClibc、glibc或uC-libc 以及其它一些库),然后编译核心、库、应用程序,最后将所有的输出安装到romfs目录中,根据需要生成目标平台需要的映像文件(如: romfs.img、Linux.bin、rootfs.gz等)

  由于一些过程细节被隐藏起来,uCLinux现在的编译过程方便到只需要配置一下(make menuconfig),然后 make 就可以直接获得最终输出。不过这反倒成为一些初学者学习的一个麻烦,本文完成后,根据对本文的反馈,将进一步对uCLinux进行详细介绍。

  总的来说,目前的uCLinux是一套主要用于无MMU核(但不限于此)的嵌入式Linux集成环境,也是一个非常好的 Linux from scratch 的示例。抛开其MMU相关的补丁,uCLinux也可以作为一套用于包含MMU系统的集成开发环境,Snapgear 就是一个很好的例子。实际上,我们可以从官方的uCLinux源码就可以直接编译一个支运行于X86的uCLinux。

1 2 3 4 5

关键词: 系统安全 Linux linux安全 uCLinux scratchbox

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版