嵌入式应用开发环境一般是由目标系统(硬件开发板)和宿主PC 机构成,硬件开发板用于操作系统和目标系统应用软件的运行,而操作系统内核的编译、应用软件的开发和调试,则需要借助宿主PC 机来完成,双方之间一般通过串口建立连接关系。
(1)建立交叉开发环境
在软件开发环境建立方面,由于μCLinux 及相关工具集都是开放源码的项目,所以大多数软件都可以从网络上下载获得。 首先要在宿主机上安装标准Linux 发行版,比如Red-Hat Linux,接下来就可以建立交叉开发环境。
(2)安装交叉编译工具
μClinux 的编译工具中的交叉编译器,可以对源代码包括内核进行编译以适应不同的嵌入式应用场合。 编译工具包中除了交叉编译器以外,还有链接器(ld)、汇编器(as)以及一些为了方便开发的二进制处理工具,包括生成静态库工具(ar、ranlib)、二进制码查看工具(nm、size)、二进制格式转换工具(objcopy)。 这些都要安装在宿主机上。
支持一种新的处理器,必须具备一些编译、汇编工具,使用这些工具可以形成处理器的二进制文件。 对于内核使用的编译工具同应用程序使用的有所不同。 在解释不同点之前,需要对gcc 链接做一些说明:
①.ld(link description):ld 文件是指出链接时内存映象格式的文件。
②crt0.s:应用程序编译链接时需要的启动文件,主要是初始化应用程序栈。
③pic:position independence code,与位置无关的二进制格式文件,在程序段中必须包括reloc 段,从而使代码加载时可以进行重新定位。
内核编译链接时,使用ucsimm.ld 文件,形成可执行文件映象,所形成的代码段既可以使用间接寻址方式(即使用reloc 段进行寻址),也可以使用绝对寻址方式。 这样,可以给编译器更多的优化空间,因为内核可能使用绝对寻址,所以内核加载到的内存地址空间必须与ld 文件中给定的内存空间完全相同。(www.xing528.com)
应用程序的链接与内核链接方式不同。 应用程序由内核加载,由于应用程序的ld 文件给出的内存空间与应用程序实际被加载的内存位置可能不同,这样在应用程序加载的过程中需要一个重新定位的过程,即对reloc 段进行修正,使得程序进行间接寻址时不至于出错。
(3)安装μClinux 内核
利用已安装的交叉编译器编译生成运行于目标机上的μClinux 内核。 与标准Linux 相同的是,μClinux 内核可以配置的方式选择需要安装的模块,而增加系统的灵活性。
(4)安装应用程序库
用交叉编译器编译uC-libc 和uC-libm 源码,生成libc.a 应用程序库和libm.a 数学库。
(5)安装其他工具
用gcc 编译elf2flt 源码,生成格式转换工具elf2flt。 用gcc 编译genromfs 源码,得到生成romfs 的工具genromfs。
经过以上的准备工作之后,下面要针对特定应用所需要的设备编写或改造设备驱动程序。 有一些设备驱动,μCLinux 本身就已经具有。 即便没有,因为μCLinux 开放源码的特性,用户也可以很方便地将自己的驱动程序加入内核。 如果用户对系统实时性,特别是硬实时有特殊的要求,μCLinux 可以加入RT-Linux 的实时模块。 完成这些工作,一个嵌入式应用开发平台就已经搭建好了,在此之上,根据不同需要可以开发不同的嵌入式应用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。