外贸是先做网站还是做阿里巴巴,网站申请备案,很强大的网站运营方案1,莱芜最好的网站建设公司一、Builroot是什么#xff1f;
Buildroot是一组Makefile和补丁#xff0c;可简化并自动化地为嵌入式系统构建完整的、可启动的Linux环境(包括bootloader、Linux内核、包含各种APP的文件系统)。Buildroot运行于Linux平台#xff0c;可以使用交叉编译工具为多个目标板构建嵌…一、Builroot是什么
Buildroot是一组Makefile和补丁可简化并自动化地为嵌入式系统构建完整的、可启动的Linux环境(包括bootloader、Linux内核、包含各种APP的文件系统)。Buildroot运行于Linux平台可以使用交叉编译工具为多个目标板构建嵌入式Linux平台。Buildroot可以自动构建所需的交叉编译工具链创建根文件系统编译Linux内核映像并生成引导加载程序用于目标嵌入式系统或者它可以执行这些步骤的任何独立组合。例如可以单独使用已安装的交叉编译工具链而Buildroot仅创建根文件系统。
二、Buildroot目录架构 三、Buildroot常用操作 四、基于百问网imx6ullPro开发实践 Buildroot 的配置选项简单介绍如下
1.Target options 目标板的配置
目标选项。包括处理器体系结构、二进制文件格式、架构系列、ABI、浮点运算、指令集。
对应到我这里使用的I.MX6ULL它的CPU架构是cortex-A7架构。
你如果用的是I.MX6D那它对应的就是cortex-A9架构。 Target Architecture:目标架构这里选择 ARM(little endian)ARM小端模式 Target Binary Format:二进制格式为 ELFTarget Architecture Variant:架构变体为 arm920t内核类型Target AB1:应用程序二进制接口为EABIFloating point strategy:浮点数的策略选择为 NEON/VFPv4ARM instruction set: arm 汇编指令集选择 ARM
2.Build options
主要是一些编译时用到的选项,比如dl的路径,下载代码包使用的路径,同时运行多个编译的上限,是否使能编译器缓冲区等等,这里按照默认就行了.
3.Toolchain 工具链选项
交叉编译链。选择哪种编译链包括 Buildroot 自身提供的和外部。
内部工具链后端internal toolchain backend, 在配置中称为 Buildroot toolchain外部工具链后端external toolchain backend在配置中称为 External toolchain
1内部工具链后端internal toolchain backend
内部工具链后端是 Buildroot 自己用来编译交叉编译工具链的后端Buildroot 会在开始为目标系统编译东西之前先为自己编译一个交叉编译工具链。
该后端支持多种 C 库uClibc-ng, glibc, musl、修改用来编译工具链的 Linux 内核头文件。编译交叉编译工具链的时候也会编译 C 库C 库会提供从用户空间到内核的接口而内核对外的系统调用、数据结构就写在内核头文件中因此需要用头文件来编译 C 库才能确保接口能够正常工作。因为内核对外的接口是向后兼容的所以用来编译工具链的 Linux 内核头文件也并不是一定要和目标设备上要运行的内核版本完全一致这些头文件的版本比实际使用的内核版本旧一点也没什么问题但反过来就不行了——那样编出来的 C 库可能会用到内核没有提供的接口修改 GCC、binutils、C 库的版本选择一系列的工具链选项仅 uClibc 比如工具链是否要有 RPC 支持主要用于 NFS宽字符wide-char支持、本地化支持、C 以及多线程支持。修改这些选项会影响后续在 Buildroot 中可选的应用和库。还可以使用 make uclibc-menuconfig 来更细粒度地控制 C 库特性。 注意只要上面这些选项中有一个发生变化那么就需要重新构建整个工具链和系统。 此类后端的优点
与 Buildroot 完美集成速度快只编译了必要的部分当进行 make clean 的时候需要重新构建工具链非常耗时。如果想加快速度。建议使用外部工具链后端。
(2)外部工具链后端external toolchain backend 外部工具链后端支持使用预编译好的交叉编译工具链。Buildroot 已经预先配置了一些常见的交叉编译工具链用于 ARM 的 Linaro、用于 ARM 的 Sourcey CodeBench, x86-64, PowerPC, MIPS 等Buildroot 可以自动下载这些与配置好的工具链也可以直接使用已有的定制工具链。
有三种方式来使用外部工具链
让 Buildroot 基于预定义的外部工具链 profile 自动下载、安装。在 Toolchain 中选择已有的 profile 即可。为 Buildroot 手动指定提前安装好的、预定义了 profile 的工具链。在 Toolchain 中选择 profile 后反选掉 Download toolchain automatically 并在 Toolchain path 中填写已有工具链路径即可。使用定制的外部工具链。通常用于使用 crosstool-NG 或 Buildroot 生成的已有定制工具链。选择 Toolchain 列表中的 Custom toolchain 然后填写 Toolchain path, Toolchain prefix, External toolchain C librrary 选项。若外部工具链使用 glibc 库只需要选择工具链是否支持 C 以及是否内建 RPC 支持即可。如果使用 uClibc 库则还有宽字符、本地化、程序 invocation、线程支持等选项可以使用已经很成熟的已有工具链。不用在编译工具链上面再花非常多的时间了。除非是自己编的否则如果工具链有 bug 则会非常难修。
3使用 Buildroot 构建外部工具链 按照下面的步骤可以创建一个外部工具链并打包 新建 Buildroot 配置 为目标 CPU 架构选择对应的 Target options在 Toolchain 菜单中Toolchain type 项选 Buildroot toolchain在 System configuration 菜单中 Init system 项选 None /bin/sh 也选 none在 Target packages 菜单中不要启用 BusyBox在 Filesystem image 菜单中不要启用 tar the root filesystem将 Toolchain type 选为 External toolchain将 Toolchain 选为 Custom toolchain将 Toolchain origin 选择 Toolchain to be downloaded and installed将 Toolchain URL 写为 file:///到sdk的tar包路径.tar.gz
4.配置 System configuration 用于设置一些系统配置比如开发板名字、欢迎语、用户名、密码等。 System configuration - System hostname Jasonangel //平台名字自行设置 - System banner Welcome to xxxxx //欢迎语 - Init system BusyBox //使用 busybox - /dev management Dynamic using devtmpfs mdev //使用 mdev - [*] Enable root login with password (NEW) //使能登录密码 - Root password 123456 //登录密码为 123456 5.配置 Filesystem images
此选项配置我们最终制作的根文件系统为什么格式的配置如下 - Filesystem images - [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4 - ext2/3/4 variant ext4 //选择 ext4 格式 - [*] ubi image containing an ubifs root filesystem //如果使用 NAND 的话就用 ubifs 6、禁止编译 Linux 内核和 uboot buildroot 不仅仅能构建根文件系统也可以编译 linux 内核和 uboot。当配置 buildroot使能 linux 内核和 uboot 以后 buildroot 就会自动下载最新的 linux 内核和 uboot 源码并编译。但是我们一般都不会使用 buildroot 下载的 linux 内核和 uboot因为 buildroot 下载的 linux 和 uboot官方源码里面会缺少很多驱动文件而且最新的 linux 内核和 uboot 会对编译器版本号有要求可能导致编译失败。因此我们需要配置 buildroot关闭 linux 内核和 uboot 的编译只使用buildroot 来构建根文件系统首先是禁止 Linux 内核的编译配置如下 - Kernel - [ ] Linux Kernel //不要选择编译 Linux Kernel 选项 接着禁止编译 Uboot配置如下 - Bootloaders
- [ ] U-Boot //不要选择编译 U-Boot 选项 7.配置 Target packages 此选项用于配置要选择的第三方库或软件、比如 alsa-utils、ffmpeg、iperf、ftp、ssh等工具可以按需选择。
配置完成以后就可以编译 buildroot 了编译完成以后 buildroot 就会生成编译出来的根文件系统压缩包我们可以直接使用。输入如下命令开始编译 sudo make //注意一定要加 sudo而且不能通过-jx 来指定多核编译 buildroot 编译过程会很耗时请耐心等待!编译完成以后就会在 buildroot-2019.02.6/output/images 下生成根文件系统即可使用。
编译过程需要一定的额外内存注意需要留好内存否则会报错如下 g: internal compiler error: Killed (program cc1plus)
Please submit a full bug report 8.buildroot 下的 busybox 配置 buildroot 在构建根文件系统的时候也是要用到 busybox 的既然用到了 busybox 那么就涉及到 busybox 的配置。buildroot 会自动下载 busybox 压缩包buildroot 下载的源码压缩包都存放在/dl 目录下在 dl 目录下就有一个叫做“busybox”的文件夹此目录下保存着 busybox 压缩包。
在 buildroot下打开 busybox 的配置界面输入如下命令 sudo make busybox-menuconfig 输入以后就会打开 buildroot 下的 busybox 配置界面需要什么功能使能即可。可以在busybox中修改文件使其对中文支持这一点可以百度设置。
编译完毕以后会生成 rootfs.tar拷贝出来以后可以对其进行解压然后使用nfs挂载到板子上或者直接使用SD卡烧录。编译出来的文件系统即可使用如果需要什么命令和工具在 make menuconfig 中使能再次编译即可。