BuildRoot FOR BeagleBone

BeagleBone 刚买没两天,里面配的是AngStorm 系统,也是基于Linux 内核的一种嵌入式发行版本,这里就不展开了,另有文章介绍。这里要说的是BuildRoot ,Why BuildRoot? 吸引我的首先是其对BeagleBone 的原生支持,不需要我另行移植了;其次是其大小,相较于Angstrom 与 Ubuntu 的体积来说,BuildRoot 真是非常袖珍,除去大家都一样的bootloader 与 Kernel 不算,根文件系统只有4MB 左右,还包括了uClibc…… 当然我们可以在编译的时候指定第三方的编译环境,比如Ti SDK 或是 cross-N,libc 也可以使用诸如eglibc 和 标准的glibc,这都不是问题。更详细的介绍参见其官方网站 http://buildroot.uclibc.org/ ,此项目到目前为止还在维护中。

image

-1 BuildRoot 组成

下面详细记录一下编译BuildRoot FOR BeagleBone 的过程。
(1) 首先当然是去BuildRoot 官网下载最新版本的BuildRoot 了,这个不细说。

(2) 阅读BuildRoot 介绍文档,总共30来页,认真读,往后会在使用过程中节约不少时间。

(3) 下载BuildRoot 的必备软件,ubuntu 12.04下执行命令“sudo apt-get install git-core bison flex g++ gettext texinfo libncurses5-dev”. 当然了svn 什么的最好也下载下来,因为BuildRoot 会自动下载一些软件源码,git svn 什么的都是必要的;curses 是为了执行make menuconfig 的,要使用xconfig qt 运行时库也是必不可少的。

(4) OK,在BuildRoot 根目录中执行“make *-config”命令,效果是从configs 目录中选取一个默认配置文件对BuildRoot 进行粗配置。这里我们使用“make beaglebone_defconfig”选取针对beaglebone 的配置。其实这一步过后就可以执行“make” 编译整个开发环境与Linux 操作系统与 根文件系统了,但此时我们还可以针对Linux 内核与 根文件系统进行一些配置。我在这里执行“make menuconfig” 添加了GDB-server,配置C 库 对线程和IPv6 的支持。哦,差点忘了说,如果不想生成只读的文件系统的话,要修改图二最后一张图中的选项。

image

image

image
image
图-2 配置BuildRoot

(5) 根据需要使用“make linux-menuconfig | uclibc-menuconfig | busybox-menuconfig”对内核,c库或是busybox 进行配置。

(6) 执行make ,然后喝杯茶,洗个澡,睡一觉,陪女朋友(没女朋友的陪老妈)看场电影(悲惨世界不错),嗯,可能就执行完毕了。此时,可以在output/images 文件夹下看到生成的四个文件,如图-1 所示。

(7) 准备一张MicoSD card,至少将其分两个区(我们使用DOS形式的分区格式,分区为主分区),一个存放bootloader与内核(好吧,内核你也可以存放在第二个分区中,甚至你也可以只要一个分区,这取决于你的人生态度……扯远了),一个存放根文件系统。Linux 中可以使用sfdisk 命令完成。比如使用:

这样分区就完成了。

(8) 将第(6)步中生成的文件拷贝到分区中。

注意MLO一定要是boot分区中的第一个文件,其他的拷贝次序没什么大的关系。 还有,这里我们使用dd 直接将根文件系统写入SD card 的分区中,我不太建议这么做…… 好的办法是先使用分区工具将SD 的第二个分区格式化成ext2 格式,而后解压rootfs.ext2,将解压后的文件全部拷入新分区中,OK,大功告成!将SD CARD 插入BeagleBone ,重启开发板!等等,问题来了……

(9) 配置uEnv.txt 文件。OK,我承认是我错误的将uImage 放到第一个分区中才导致uBoot 加载不了kernel 的,但使用uEnv.txt 可是让我们配置自己想要的启动效果,从NFS 启动也未尝不可。先来看看hardcode 的bootcmd 是什么样子的:

其中bootenv 变量中存储的就是“uEnv.txt”,我们将“uEnv.txt”放在第一个分区中就行了。我们在uEnv.txt 中指定uenvcmd 变量后在稍后就会执行,这里不细说细节,我的uEnv.txt如下:

不知怎么搞的,如果我在uEnv.txt 中覆盖原来已有的变量会导致fatload 执行失败,我这里就直接写fatload 的全部命令了。mmcboot 展开来世这样子的:

嗯,至此BuildRoot 就可以正常启动运行了。至于生成的开发工具,位于“output/host/usr”下,添加一下环境变量就行了。

转载于:https://my.oschina.net/u/614480/blog/105059

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值