(六)buildroot使用详解
为什么要使用buildroot?
(文件系统搭建,强烈建议直接用buildroot,官网[http://buildroot.uclibc.org/]上有使用教程非常详细)文件系统通常要包含很多第三方软件,比如busybox,udhcpc,tftp,apache,sqlite,PHP,iptable,DNS等,为了避免繁杂的移植工作。buildroot应运而生。通过menuconfig配置我们需要的功能,不需要的功能去掉,再执行make指令编译,buildroot就会自动从指定的服务器上下载源码包,自动编译,自动搭建成我们所需要的嵌入式根文件系统。让我们的工作效率成百倍的提升。
1:获取buildroot
我们可以从buildroot官网(http://buildroot.uclibc.org/download.html)获取buildroot源码包,buildroot基本上三个月更新一次,目前最新是buildroot-2016.11.tar.gz,这里我们实际下载的源码包是 buildroot-2016.02.tar.gz。建议下载最新的版本,因为新的版本包含更多的第三方工具软件。
2:配置buildroot
将源码包复制到XXX目录下,并解压tar -xvf buildroot-2015.02.tar.gz
进入目录,执行配置命令:cd /XXX/buildroot-2015.02
执行:make ARCH=arm menuconfig
配置界面如下:
2.1 :进入target options
配置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等)的文件系统就做好了,真是利器,让很来需要花很多时间和精力的移植工作变得简单而且高效。
最新文章
- java发送内嵌图片邮件
- 企业办公3D指纹考勤系统解决方案
- IsPostback的原理
- oracle 数据库远程导出
- 安卓Design包之NavigationView结合DrawerLayout,toolbar的使用,FloatingActionButton
- include的简单使用
- WPF设置VistualBrush的Visual属性制作图片放大镜效果
- 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)
- POCO系列之——什么是POCO
- Ubuntu apt-get 详解
- C 语言之银行ATM机界面
- ReentrantReadWriteLock读写锁的使用1
- xamarin开发android收集的一些工具
- Spring Bean初始化之后执行指定方法
- Web前端 页面功能——点击按钮返回顶部的实现方法
- 微信小程序实战练习(仿五洲到家微信版)
- 《Java大学教程》--第2章 选择
- Confluence 6 数据中心的 SAML 单点登录最佳实践和故障排除
- C++中全排列算法函数next_permutation的使用方法
- abstract class和interface的异同
热门文章
- DELPHI ClientData使用详解
- 删除ELK的索引
- 实战keras——用CNN实现cifar10图像分类
- 英特尔®oneAPI简介及动手实验研讨会召集令
- DEVOPS ROADMAP
- MariaDB基本知识点总结01--介绍+语句
- PHP7 下安装 memcache 和 memcached 扩展
- 浅析C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别
- 【LOJ】#2983. 「WC2019」数树
- winform中使用TextBox滚动显示日志信息