build根文件系统制作(附QT移植)
作者:互联网
根文件系统制作
buildroot: https://buildroot.org/ (官方主页 下载地址 和文档手册)
可以根据手册找到所依赖的库
下载后用tar -xvf 解压
#注意 交叉编译工具链的版本一定要和 buildroot匹配
#可以下载正点原子的资料 匹配度很高(本文使用buildroot-2020.02.8.tar.bz2与正点原子配套的交叉编译工具链)
配置buildroot
一. make menuconfig
//根据自己的需求配置 这里列出stm32mp157的配置
1> Target options
-> Target Architecture = ARM (little endian)
-> Target Binary Format = ELF
-> Target Architecture Variant = cortex-A7
-> Target ABI = EABIhf
-> Floating point strategy = NEON/VFPv4
-> ARM instruction set = ARM
2> Toolchain
-> Toolchain type = External toolchain
-> Toolchain = Custom toolchain //用户自己的交叉编译器
-> Toolchain origin = Pre-installed toolchain //预装的编译器
-> Toolchain path = /opt/gcc-arm-9.2-2019.12-x86_64-arm-none-linuxgnueabihf
-> Toolchain prefix = $(ARCH) -none-linux-gnueabihf //前缀
-> External toolchain gcc version = 9.x
-> External toolchain kernel headers series = 4.20.x //交叉编译器的 linux 版本号
-> External toolchain C library = glibc/eglibc
-> [*] Toolchain has SSP support? (NEW) //选中
-> [*] Toolchain has RPC support? (NEW) //选中
-> [*] Toolchain has C++ support? //选中
-> [*] Enable MMU support (NEW) //选中
3> System configuration
-> System hostname = ATK-stm32mp1 //平台名字,自行设置
-> System banner = Welcome to alientek STM32MP157 //欢迎语
-> Init system = BusyBox //使用 busybox
-> /dev management = Dynamic using devtmpfs + mdev //使用 mdev
-> [*] Enable root login with password (NEW) //使能登录密码
-> Root password = 123456 //登录密码为 123456
4> -> Filesystem images
-> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4
-> ext2/3/4 variant = ext4 //选择 ext4 格式
-> exact size =1G //ext4 格式根文件系统 1GB(根据实际情况修改)
-> [*] ubi image containing an ubifs root filesystem //如果使用 NAND 的话就用 ubifs
5> 禁止编译uboot和内核只用来做文件系统
-> Kernel
-> [ ] Linux Kernel //不要选择编译 Linux Kernel 选项
-> Bootloaders
-> [ ] U-Boot //不要选择编译 U-Boot 选项!
6> -> Target packages
-> System tools
-> [*] kmod //使能内核模块相关命令
说明:
1.> Toolchain:
此配置项用于配置交叉编译工具链,也就是交叉编译器,这里设置为我们自己所使用的交叉编译器即可。 buildroot 其实是可以自动下载交叉编译器的,但是都是从国外服务器下载的,鉴于国内的网络环境,强烈推荐大家设置成自己所使用的交叉编译器。
Toolchain 下几个比较重要的选项需要说明一下,如下所示:
Toolchain:设置为 Custom toolchain,表示使用用户自己的交叉编译器。
Toolchain origin:设置为 Pre-installed toolchain,表示使用预装的交叉编译器。
Toolchain path:设置自己安装的交叉编译器绝对路径! buildroot 要用到。
Toolchain prefix:设置交叉编译器前缀,要根据自己实际所使用的交叉编译器来设置,比如我们使用的是 arm-none-linux-gnueabihf-gcc,因此前缀就是$(ARCH)-none-linux-gnueabihf,其中 ARCH 我们前面已经设置为了 arm。
External toolchain kernel headers series:这个设置的是交叉编译器所对应的 linux 内核版本号, gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf 所对应的 linux 内核版本号为 4.20,因此这里需要设置为 4.20.x!大家一定要根据自己所使用的交叉编译器来设置,否则编译的时候会报版本不一致的错误。
2.>Target packages
此选项用于配置要选择的第三方库或软件、比如 alsa-utils、ffmpeg、iperf、QT、tslib等工具,这里我们先只选择内核的模块加载相关软件.
二. 保存并编译
save 保存到 ./configs/stm_defconfig #名字可以自己取(这里用的stm_ 后缀不要改)
make stm_defconfig #刚才的名字
sudo make
生成的文件系统为同级文件夹下 ./output/images/rootfs.tar
扩展内容
在buildroots的源码目录下
sudo make busybox-menuconfig
可以配置busybox
qt和tslib移植
在buildroots的源码目录下 make menuconfig
Target packages --->
Graphic libraries and applications (graphic/text) --->
[*] Qt5 ---> #qt5
-*- qt5base #qt5基础
-*- gui module #图形模块
-*- widgets module #widgets模块
-*- linuxfb support #对linuxfb的支持 (屏幕帧缓冲)
[*] Enable Tslib support #对tslib的支持 (触摸屏)
......
[*] fontconfig support #对font的支持 (字库)
#-------------------------------------------------------------------------
在开发板下 vi (开发板根文件系统)/etc/profile.d/myprofile.sh
#!/bin/sh
PS1=[\u@\h]:\w$
export PS1
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=/usr/share/fonts
保存退出 chmod 777 myprofile.sh
重启一下开发板
qt字库移植
#查看fonts.conf文件
vi /etc/fonts/fonts.conf
#可以看到如下内容 (字库的查找路径为 /usr/share/fonts)
<!-- Font directory list -->
<dir>/usr/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<!-- the following element will be removed in the future -->
<dir>~/.fonts</dir>
#进入到 /usr/share/fonts中(若没有则自己创建文件夹)
#文档中提供的 工具或源码 中的fonts.tar拷贝到当前目录下
tar -xvf fonts.tar
FTP 和 SSH 服务配置
#在buildroot源码目录下
make menuconfig
-> Target packages
-> Networking applications
-> [*] vsftpd //使能 vsftpd
-> Target packages
-> Networking applications
-> [*] openssh //使能 openssh
#保存并编译 将ouput/images/rootfs.tar中内容拷贝到开发板跟文件系统下解压
测试vsftpd
#在开发板跟文件系统下
vi /etc/vsftpd.conf
local_enable=YES #取消掉前面的‘#’
write_enable=YES #取消掉前面的‘#’
#保存退出
chown root:root /etc/vsftpd.conf #修改 vsftpd.conf 文件所属用户
#最后在开发板上使用 adduser 命令新建一个用户要来完成 FTP 登录
adduser username(自己取个用户名)
New password: (这里输入自己的密码)
retype password: (这里重新输入密码)
#------------------------------------------------
创建完成后 /home下就会出现自己的用户名
重启开发板
在命令行输入 ps 查看一下vsftpd启动了没
使用FileZilla来登录开发板
直接在官网(https://www.filezilla.cn/)下载绿色版 或安装版
按下图操作后点击连接 可以看到板子里的文件
测试ssh
chown root:root /var/empty
如果完成了前面的FTP的配置 就可以通过ssh来访问了 例如putty MobaXterm的ssh访问
#如果没有需要自己创建一个登录用户(这个需要自己摸索)
配置qtcreat (能够通过ssh远程调试)
运行qtcreat-->点击工具栏的 工具-->选项-->kits-->编译器-->添加-->GCC 选择gcc添加路径 在选择g++添加路径
gcc的路径为 /opt/buildroot-2020.02.8/output/host/bin/arm-none-linux-gnueabihf-gcc
g++的路径为 /opt/buildroot-2020.02.8/output/host/bin/arm-none-linux-gnueabihf-gcc
根据自己的编译器来
#--------------------------------------------
同理添加 Debuggers 路径为 /opt/buildroot-2020.02.8/output/host/bin/arm-none-linux-gnueabihf-gdb
添加Qt Versions路径为 /optbuildroot-2020.02.8/output/host/bin/qmake
点击设备-->点击添加-->点击GenericLinuxDevice(或linux通用设备)-->点击开启向导-->
改ip为板子的ip 登录名为root-->下一步-->再下一步-->完成
点击kits-->点构建套件(kits)-->点击添加-->编辑名称-->将上面配置好的 设备 编译器 Debugger qmake选上-->
修改Sysroot为交叉编译工具链的bin文件夹 这里为以下路径
图片中/opt/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/bin路径错误
正确路径在/opt/buildroot-2020.02.8/output/arm-none-linux-gnueabihf/sysroot/
修改开发板ssh
vi /etc/ssh/sshd_config
#修改以下几项
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes
参考文档:
1.制作过程 同级目录下相关资料文档[正点原子STM32mp157开发手册]
标签:buildroot,Toolchain,QT,--,文件系统,编译器,build,linux,arm 来源: https://www.cnblogs.com/feige-c/p/16444400.html