文件系统构建方式
自己使用过的构建系统方式主要有busybox、yocto、buildroot三种吧,openwrt也可以,目前还没有使用过,公司另个一mesh项目中使用了这种方式。 刚学习嵌入式的时候当然是用busybox构建系统了,这样搭建一个最简的文件系统,但是实际开发工程中可能要移植很多东西,比如项目就要求后续要支持python开发环境,而后边的几种可以通过make menuconfig的方式选配比较适合在框架基础上添加很多软件功能。 大概了解了一下yocto工具,常被车载IC行业选中,一般厂商提供的SDK很大,编译过程复杂些。buildroot,常被低层嵌入式电子设备行业选中,而我也使用的就是这个
buildroot源码包获取
可以从buildroot官网(http://buildroot.uclibc.org/download.html)获取buildroot源码包,我采用了官方资料里的13版,现在都更新到21版了,当然吃了不少亏,后来自己重新移植了20版。
源码包的使用
将源码包复制到XXX目录下,并解压tar -xvf buildroot-2013.02.tar.gz 进入目录,执行配置命令:cd /XXX/buildroot-2013.02 执行:make ARCH=arm menuconfig 配置界面如下:
target options配置
配置CPU参数:ARM (little endian) 指的是小端存储;二进制格式是ELF(和bin不同的是elf依赖于操作系统运行的二进制文件);CPU是Cortex-A8;
toolchain配置
将Toolchain type配置为External toolchain,表示要使用外部的编译器,然后在Toolchain中选择交叉编译工具的版本,如Linaro 2013.03,在Toolchain origin中选择Pre-installed toolchain,后面编译时,buildroot将会根据Toolchain path找到我们的交叉编译工具(我们的交叉编译工具安装到了/opt目录下,这个根据自己的编译器路径修改)。
System configuration
在system hostname一栏中输入开发板的名称,比如EVB335X,在system banner中可输入欢迎语,如welcome to EVB335X。在Init system中选择BusyBox,在/dev management中选择Dynamic using udev,即使用udev设备节点的方式,然后在Path to thepermission tables中选择设备节点的配置表,这里我们一定要选择system/device_table_dev.txt,否则后面在dev目录下将不会生成各 种设备节点。当然我们也可以手动的配置该文件,添加必要的节点或删除不需要的节点。Root password为配置进入linux控制台终端后的密码,为空则登录时不需要密码,默认登录用户名为root。Port to run a getty(login prompt)on 选择ttyo0,因为我们的调试uart就是这个。
Filesystem images
这个根据自己具体的需要生成镜像,我就生成了一个根文件系统的tar归档包,解压就是文件系统
Package Selection for the target
这个选项可以根据自己的需求选择,这些软件包都会在TOP_DIR的dl目录下,如果选配了就会加载到文件系统中,第一次会默认的需要下载源码包到dl目录下。
最后就是make等待啦
|