1.前言
前面在正点原子的出厂系统上部署了目标分类,但是移植编译所需库步骤比较麻烦,这次使用buildroot定制一个根文件系统,图形化界面一键生成。
2.材料准备
2.1硬件
2.1.1 开发板、sd卡、读卡器,开发板底板是我自己画的,核心板用的正点原子的核心板。
2.2软件
2.2.1 Buildroot下载,打开https://buildroot.org/官网,可能会有点慢建议打开梯子。选择buildroot-2025.02.tar.gz下载,将文件拷入虚拟机。使用 tar -xvf buildroot-2025.02.tar.gz 进行解压。
注意:buildroot构建完后空间占用大概10~20个G,记得虚拟机留出空间
3.Buildroot配置
3.1 进入 buildroot目录。输入下面的指令安装显示图形菜单需要的库,若已经安装则
不需要装。
sudo apt-get install libncurses5-dev
3.2 打开配置菜单,输入下面的指令,如下图所示。
make menuconfig
3.3 首先配置 Target options 选项,用回车进行选择,最后配置完如下图
3.4 配置交叉编译工具链,内核头我选的5.4.x可以根据自己需要进行选择,注意Enable compatibility shims to run on older kernels 勾选以兼容旧版本。
3.5 配置 System configuration
-> System hostname = imx6ull //平台名字,自行设置
-> System banner = Welcome to alpha i.mx6ull //欢迎语
-> Init system = BusyBox //使用 busybox
-> /dev management = Dynamic using devtmpfs + mdev //使用 mdev
-> [*] Enable root login with password (NEW) //使能登录密码
-> Root password = 123456 //登录密码为 123456
然后进入Run a getty (login prompt) after boot修改终端设备名和波特率
3.6.Kernel不用选我们已经有内核,如果你需要编译内核的话就选择。
3.7 配置 Target packages
3.7.1 顶部默认不用修改
3.7.2 进入Compressors and decompressors选择支持的压缩包格式, 为了满足常用格式(.zip, .gz, .xz)
3.7.3 进入Graphic libraries and applications,Qt5配置 进入qt5下面是我的选择可以根据自己需求增减
3.7.4 Hardware handling 配置
[] evtest 用于测试输入设备(触摸屏、按键)是否正常
[ *] libuio 用户空间 I/O 驱动,若你用 uio 驱动访问设备
[ ] linuxconsoletools 操作 /dev/input 输入设备的工具集
[ ] linux-serial-test 测试串口通不通的小工具,调试方便
3.7.5 Interpreter languages and scripting 配置
Python3勾选上
Core Python3 modules 配置
[*] unicodedata module必选,很多第三方包依赖 Unicode 处理
[ ] bz2 module Python 解压 .bz2 格式需要
[ ] xz module Python 解压 .xz 格式需要,pip 安装时常用
[ ] zlib module 支持 .zip 格式,安装模块时必需
[ ] decimal module 如果你要做浮点运算,建议开启(某些库可能依赖)
[ ] xml module 若有 XML 配置或接口处理需求
[ ] readline 提升 Python shell 交互体验(箭头键、历史命令)
[ ] ssl若你打算联网并用 HTTPS(如 pip 安装依赖、requests)
External python modules选项你可以选择自己要加入的python库,我这这只加入了py-numpy,你可以根据自己需要进行添加。
3.7.6 libraries配置
Opencv配置
进入Libraries -Graphics,进入然后勾选opecv3或者4我这里选择4
然后进入选择要编译的模型,下面的图是我勾选的,你可以根据自己需要进行增减,以下列出了部分功能其他自己查一下。
imgproc (图像处理)
imgcodecs (图像编解码)
highgui (高级GUI)
videoio (视频输入输出)
video (视频分析)
python (Python绑定)
features2d (特征检测)
dnn (深度学习模块)
flann (快速近似最近邻搜索
Tflite配置
进入other进行Tflite配置,注意这个的前提是你前面的配置交叉编译工具链启用了C++支持才会出现否则你会找不到这个选项的。
3. 8 Filesystem images配置
-> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4
-> ext2/3/4 variant = ext4 //选择 ext4 格式
-> exact size =32G //ext4 格式根文件系统 32GB(根据实际情况修改)
-> [*] ubi image containing an ubifs root filesystem //如果使用 NAND 的话就用这个取消前面ext4的勾选
最后点击save保存
4. 编译
输入 make 进行编译,这个过程有点久耐心等待,以为从网上下载资源包,而且有些还在国外网址会很慢。
但是如果你完全安装我的配置的话,可以使用我已经下载好的资源包进行编译,我放在了百度网盘https://pan.baidu.com/s/1OQiD3c78pdvR0HNr77nQ9w?pwd=2qy6,下载下来然后解压到buildroot根目录。
编译完成后会在这个路径下找到rootfs.tar
5. 移植
接着插入U盘
打开终端输入df命令查看rootfs路径
然后使用sudo rm -rf /media/tian/rootfs/* 删除原来的根文件系统,注意改为自己的路径
将根文件系统解压出来。
将解压的rootfs的所有数据移到sd卡的rootfssudo mv * /media/tian/rootfs/ ,最后在输入sync同步一下
6. 开发板登录
将移植好的卡插入开发板,然后输入root和密码123456,成功登入根文件系统
查看一下内置库
最后再稍微配置一下vi /etc/porfile 修改为以下内容,然后重启开发板
修改完结果就是这种
7. 结语
到这里就已经全部结束了,然后buildroot里面还有很多其他功能我没用过,大家可以根据自己需要进行选择。