buildroot的图形解析
toolchain设置
进入Toolchain选项:
Toolchain —>
Toolchain type (External toolchain) —> (设定采用自己定义的交叉编译工具)
Toolchain (Custom toolchain) —>
Toolchain origin (Pre-installed toolchain) —>(预先安装了交叉编译工具)
(/opt/FriendlyARM/toolchain/4.9.3/) Toolchain path (设定自定义交叉编译工具的路径)
($(ARCH)-linux) Toolchain prefix (设置toolchain的前缀)
External toolchain gcc version (4.9.x) —>(设置toolchain的版本)
External toolchain kernel headers series (3.10.x) —> (最好选用与平台所用的linux版本一致的headers,具体还要看交叉编译工具是否支持)
External toolchain C library (glibc/eglibc) —> (选择自定义交叉编译工具所用的C库)
[* ] Toolchain has SSP support? (根据报错选上的)
[* ] Toolchain has RPC support? (根据报错选上的)
[*] Toolchain has C++ support? (支持C++)
我的toolchain版本是4.9.3,Linux header可以自行查看:就在version.h里,199261是十进制,换成十六进制即可发现是3.10版本
Target options设置
Target options —>
Target Architecture (ARM (little endian)) —>(小端模式)
Target Binary Format (ELF) —>(二进制格式是ELF)
Target Architecture Variant (cortex-A7) —>(我的板子CPU是a7)
Target ABI (EABIhf) —> (支持EABIhf)
Floating point strategy (VFPv4-D16) —> (浮点处理采用VFP-v4)
ARM instruction set (Thumb2) —> (采用精简指令集Thumb2)
这部分是按自己的板子来设置的:
System configuration设置
System configuration —>
(buildroot) System hostname (设置主机名)
(Welcome to Buildroot) System banner (输入欢迎语)
Init system (BusyBox) —>
/dev management (Dynamic using devtmpfs + mdev) —>(使用mdev动态加载设备节点的方式,devtmpfs是Linux内核中的一个虚拟文件系统,需要启用内核配置选项: CONFIG_DEVTMPFS和CONFIG_DEVTMPFS_MOUNT)
() Root password(进入linux控制台终端后的密码)
[*] remount root filesystem read-write during boot(可以进行动态的挂载)
Run a getty (login prompt) after boot —>
(console) TTY port(设置成串口登陆的设备节点)
Baudrate (115200) —> (设置波特率)
Filesystem images设置
Filesystem images —>
[*] ext2/3/4 root filesystem
ext2/3/4 variant (ext4) —>
[*] tar the root filesystem
Compression method (no compression) —>
kernel相关设置
Kernel—>
[] Linux Kernel 不选不编译
Target packages设置
Target packages —> : 按自己需求增加或裁剪Target packages,里面包含了一大堆第三方的开源工具和库,包括常用的busybox的选用、音频、网络等。一切都是按自己需求来配置。
在许多程序中,BusyBox具有基本init程序的实现,这对于大多数嵌入式系统来说已经足够了。启用BR2_INIT_BUSYBOX将确保BusyBox将构建和安装其init程序。这是Buildroot中的默认解决方案。BusyBox init程序将/etc/inittab在启动时读取文件以了解如何操作。
配置完所有内容后,配置工具将生成.config包含整个配置的 文件。该文件将由*Makefile读取。
要开始构建过程,只需运行:
make
编译过程中要联网,因为可能需要下载一些packages。
编译后生成的文件夹格式的rootfs在buildroot/output/images/rootfs.tar。先创建一个文件夹作为根文件目录,我们将rootfs.tar解压到这个文件内,得到的就是一个完整的可以工作的文件夹形式的rootfs了
你永远不应该使用make -jN与Buildroot里面:目前不支持*并行make。相反,使用该BR2_JLEVEL选项告诉Buildroot运行每个包的编译make -jN。
Buildroot输出存储在一个目录中output/。该目录包含几个子目录:
images/其中存储了所有images(内核 image,引导加载程序和根文件系统 image)。这些是您需要放在目标系统上的文件。
ibuild//构建所有组件的位置(包括主机上Buildroot所需的工具和为目标编译的包)。该目录包含每个组件的一个子目录。
staging/其中包含类似于根文件系统层次结构的层次结构。此目录包含交叉编译工具链的标头和库以及为目标选择的所有用户空间包。但是,此目录不是目标的根文件系统:它包含许多开发文件,未被剥离的二进制文件和库,这使得它对于嵌入式系统来说太大了。这些开发文件用于编译依赖于其他库的目标库和应用程序。
target/它几乎包含了目标的完整根文件系统:除了/ dev /中的设备文件外,所有需要的东西都存在(Buildroot无法创建它们,因为Buildroot不以root身份运行,也不想以root身份运行)。此外,它没有正确的权限(例如busybox二进制文件的setuid)。因此,不应在目标上使用此目录 。相反,您应该使用images/目录中内置的一个图像。如果需要提取的根文件系统映像以通过NFS引导,则使用生成的tarball映像images/并以root身份提取它。相比staging/,target/ 仅包含运行所选目标应用程序所需的文件和库:开发文件(标题等)不存在,二进制文件被剥离。
host/ 包含为正确执行Buildroot所需的为主机编译的工具的安装,包括交叉编译工具链。
其中每次开机都要登录,太麻烦了,我们修改根文件系统:
vi etc/inittab
将
console::respawn:/sbin/getty -L console 115200 vt100 # GENERIC_SERIAL
这一行注释掉,替换成:
console::respawn:-/bin/sh
保存重启即可。
上一篇: 51单片机第七讲(串口)
下一篇: 走近科学之串口设备驱动 --让我很头痛!