编译根文件系统 准备工作 编译 Buildroot 对机器的配置的要求: 64 位 CPU 8GB 物理内存+交换内存 30GB 空闲的磁盘空间用于构建,源码树另外占用大约 10GB 建议使用 Ubuntu 64ibt 系统开发,如 Ubuntu 14.04 64ibt、Ubuntu 16.04 64ibt等,避免出现环境问题。 编译环境的初始化 您需要一个 64 位版本的 Ubuntu 。注意:使用老版本 Ubuntu 可能会有兼容性 问题。 Ubuntu 14.04 软件包安装: $ sudo apt-get install git gnupg flex bison gperf build-essential \ zip tar curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 cmake tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 lzop $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gn u/libGL.so 安装 ARM 交叉编译工具链和编译内核相关软件包 $ sudo apt-get install gcc-arm-linux-gnueabihf \ gcc-aarch64-linux-gnu device-tree-compiler lzop libncurses5-dev \ libssl1.0.0 libssl-dev 目前Buildroot默认支持的Qt版本为Qt5.9.1,此版本要求主机的编译工具GCC和 G++的版本必须为4.8以上,所以如果当前编译环境的GCC和G++版本小于4.8,请 先更新GCC和G++版本,再进行编译。 下载 SDK 由于 SDK 比较大,我们提供了一个打包好的.git以供下载: Firefly-PX3-SE_Buildroot_git_180421.7z 下载完成后先验证一下 MD5 码: $ md5sum Firefly-PX3-SE_Buildroot_git_180421.7z 21b8c26d61731ce7bacc9000d39f33ed Firefly-PX3-SE_Buildroot_git_180421.7z 确认无误后,就可以解压: mkdir -p ~/proj/Firefly-PX3-SE cd ~/proj/Firefly-PX3-SE 7zr x Firefly-PX3-SE_Buildroot_git_180421.7z git reset --hard 更新remote地址,解决更新仓库时的权限问题: git remote set-url gitlab https://gitlab.com/TeeFirefly/px3se-buildroot.git 以后就可以直接从 gitlab 处更新: git pull gitlab firefly-px3se:firefly-px3se 也可以到 https://gitlab.com/TeeFirefly/px3se-buildroot 在线浏览源码 编译uboot 编译内核: cd ~/proj/Firefly-PX3-SE/u-boot make px3se_linux_defconfig make -j8 编译内核 编译内核: cd ~/proj/Firefly-PX3-SE/kernel make ARCH=arm px3se_linux_defconfig make ARCH=arm px3se-fireprime.img -j8 编译 rootfs 编译 rootfs: cd ~/proj/Firefly-PX3-SE . envsetup.sh cd ~/proj/Firefly-PX3-SE/buildroot/ make rockchip_px3se_defconfig && cd .. ./build_all.sh && ./mkfirmware.sh 其中,envsetup.sh 是终端环境变量设置脚本。有些模块可通过rk_make.sh单独 编译,此时需要设置终端环境变量。 注意: Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是 由Makefile脚本和Kconfig配置文件构成的。buildroot/dl/目录存在从官网上下 载的开源软件包,第一次下载后,下次就不会再去从官网下载了,而是从dl/目 录下拿开源包。因此由于国内网络限制,第一次编译会很漫长。为了节省时间, 我们提供了基本上会用到的软件包,下载解压,将dl目录拷贝到buildroot/下即 可。 开源软件包:dl.7z firefly脚本编译 firefly提供了便捷的编译脚本工具。 编译uboot: cd ~/proj/Firefly-PX3-SE ./FFTools/make.sh -u 编译内核: cd ~/proj/Firefly-PX3-SE ./FFTools/make.sh -k -d px3se-fireprime 注意:-d dts_file_name,dts默认使用px3se-fireprime.dts 编译根文件系统: cd ~/proj/Firefly-PX3-SE ./FFTools/make.sh -a 以上全部编译: cd ~/proj/Firefly-PX3-SE ./FFTools/make.sh 烧写分区映像 上一步骤的 "./mkimage.sh" 会重新打包 rootfs.img。 并将其它相关的映像文 件拷贝到目录 rockimg/中。以下列出一般固件用到的映像文件: kernel.img :内核映像。 recovery.img :急救模式映像。 resource.img :资源映像,内含开机图片和内核的设备树信息。 rootfs.img:根文件系统,ext4 文件系统格式。 请参照 《升级固件》 一文来烧写分区映像文件。 如果使用的是 Windows 系统,将上述映像文件拷贝AndroidTool (Windows 下 的固件升级工具)的 rockdev\Image 目录中,之后参照升级文档烧写分区映像 即可,这样的好处是使用默认配置即可,不用修改文件的路径。 打包成统一固件 在ubuntu下打包统一固件,编译好SDK后,在SDK根目录执行 ./FFTools/mkupdate/mkupdate.sh。即可生成统一固件例如:Firefly- PX3SE_Buildroot_DEFAULT_xxxxxx.img 在 Windows 下打包统一固件 update.img 很简单,按上一步骤将文件拷贝到 AndroidTool 的 rockdev\Image 目录中,然后运行 rockdev 目录下的 mkupdate.bat 批处理文件即可创建 update.img 并存放到 rockdev\Image 目录 里。 update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区 映像比较方便。