为何要使用buildroot?html
(文件系统搭建,强烈建议直接用buildroot,官网[http://buildroot.uclibc.org/]上有使用教程很是详细)文件系统一般要包含不少第三方软件,好比busybox,udhcpc,tftp,apache,sqlite,PHP,iptable,DNS等,为了不繁杂的移植工做。buildroot应运而生。经过menuconfig配置咱们须要的功能,不须要的功能去掉,再执行make指令编译,buildroot就会自动从指定的服务器上下载源码包,自动编译,自动搭建成咱们所须要的嵌入式根文件系统。让咱们的工做效率成百倍的提高。linux
1:获取buildrootsql
咱们能够从buildroot官网(http://buildroot.uclibc.org/download.html)获取buildroot源码包,buildroot基本上三个月更新一次,目前最新是buildroot-2016.11.tar.gz,这里咱们实际下载的源码包是 buildroot-2016.02.tar.gz。建议下载最新的版本,由于新的版本包含更多的第三方工具软件。apache
2:配置buildroot服务器
将源码包复制到XXX目录下,并解压tar -xvf buildroot-2015.02.tar.gz工具
进入目录,执行配置命令:cd /XXX/buildroot-2015.02ui
执行:make ARCH=arm menuconfigorm
配置界面以下:sqlite
2.1 :进入target optionshtm
配置CPU参数:little endian 指的是小端存储;二进制格式是ELF;CPU是Cortex-A5;交叉工具支持eabihf;浮点书处理采用VFP-v4;采用精简指令集Thumb2;
配置以下图所示:
2.2:进入toolchain
将Toolchaintype配置为Externaltoolchain,而后在Toolchain中选择交叉编译工具的版本,如Custom toolchain,在Toolchain origin中选择Pre-installed toolchain,后面编译时,buildroot将会根据Toolchain path找到咱们的交叉编译工具。选中Enable MMU support,退回上一界面;
2.3:进入System configuration
在system hostname一栏中输入开发板的名称,如ZHD-A5,在system banner中可输入欢迎语,如welcome to Hi-Target。在Init system中选择BusyBox,在/dev management中选择Dynamic using mdev,即便用mdev动态加载设备节点的方式,而后在Path to thepermission tables中选择设备节点的配置表,这里咱们必定要选择system/device_table_dev.txt,不然后面在dev目录下将不会生成各 种设备节点。固然咱们也能够手动的配置该文件,添加必要的节点或删除不须要的节点。Root password为配置进入linux控制台终端后的密码,为空则登陆时不须要密码,默认登陆用户名为root。选中Run agetty(login prompt)after boot。Remount root filesystem read-write during boot表示能够进行动态的挂载;
再进入下面的getty options选项:
将TTY port配置为ttyS0,将baudrate配置为115200,对应开发板的打印串口。
2.4:进入Filesystem images
选中ext2/3/4root filesystem,而后在ext2/3/4variant中选择ext4,选中tar the root filesystem,最后保存当前的配置并退出,配置完成。你们也能够根据本身的实际须要进行配置。
2.5:进入target packages
在target packages目录下,有一大堆第三方的开源工具软件,基本上嵌入式上可能会用到得或用不到的,在这里都用,若是你想要把这个工具软件包含进固件里面,很简单,只要在这个软件的名称前面打个*星号,表示要编译这个软件到固件里面,今后和刀耕火种的源代码移植say goodbye,今入工业文明时代。
下面以移植DNS服务器bind为例,作一个简单的说明:
3:编译buildroot
只需在buildroot的根目录下执行make指令便可编译整个buildroot。
编译时,buildroot会自动下载第三方软件的源码,咱们只要等一下,让buildroot本身下载编译。编译完成后,会在output/image目录下面生成固件的镜像包,把这个包拷贝到RTK的platform目录下,而后解压,就可使用了。在output/target下也能够看根文件,包含的内容以下所示:
借助buildroot一个含有各项所须要包(busybox,apache,PHP,bind等)的文件系统就作好了,真是利器,让很来须要花不少时间和精力的移植工做变得简单并且高效。