其他分享
首页 > 其他分享> > build根文件系统制作(附QT移植)

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/)下载绿色版 或安装版
按下图操作后点击连接 可以看到板子里的文件
tfp搭建

测试ssh

chown root:root /var/empty
如果完成了前面的FTP的配置 就可以通过ssh来访问了 例如putty MobaXterm的ssh访问
#如果没有需要自己创建一个登录用户(这个需要自己摸索)

配置qtcreat (能够通过ssh远程调试)

运行qtcreat-->点击工具栏的 工具-->选项-->kits-->编译器-->添加-->GCC 选择gcc添加路径 在选择g++添加路径

qtcreat配置1

qtcreat配置2

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

qtcreat配置3

qtcreat4

点击设备-->点击添加-->点击GenericLinuxDevice(或linux通用设备)-->点击开启向导-->
	改ip为板子的ip 登录名为root-->下一步-->再下一步-->完成

qtcreat配置5

qtcreat配置6

点击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/

qtcreat配置7

修改开发板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