当前位置: 首页 > news >正文

【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十章 Buildroot制作根文件系统

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


第五篇 文件系统构建

配套资料在网盘资料的“iTOP-i.MX8MM开发板\02-i.MX8MM开发板网盘资料汇总(不含光盘内容)\嵌入式Linux开发指南(iTOP-i.MX8MM)手册配套资料\4.文件系统构建配套资料\4 Buildroot文件系统构建配套资料”路径下。

编译环境 :Ubuntu 16.04

文件系统通常要包含很多第三方软件,比如 busybox,udhcpc,tftp,apache,sqlite,PHP,iptable,DNS 等,为了避免繁杂的移植工作。buildroot 应运而生。这一章节我们来学习通过 Buildroot 构建文件系统。

第七十章 Buildroot制作根文件系统

配套资料在网盘资料的“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\02_buildroot文件系统”路径下。

编译环境 :Ubuntu 18.04

编译器 :gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf

70.1 Buildroot 简介

Buildroot 是一组 Makefile 和 Patch 文件,用来简化和自动化为嵌入式系统建造一个完整和可引导的 Linux 环境的过程,特别是在使用交叉编译来允许在单一的基于 Linux 的开发系统上为多个目标平台进行建 造的时候。Buildroot 可以自动建造所需要的交叉编译工具链,创建根文件系统,编译一个 Linux 内核映像, 并为目标嵌入式系统生成引导装载器,它还可以进行这些独立步骤的任何组合。例如可以独立的使用已经安 装好的交叉编译工具链,而只用 Buildroot 创建根文件系统。 Buildroot 主要意图用于小型或嵌入式系统,它们基于各种计算机体系结构和指令集之上,包括 x86、 ARM、MIPS 和 PowerPC。不仅支持大量的架构及其变体,Buildroot 还随带了针对一些现成的嵌入式开发板 的缺省配置,比如 Cubieboard 页面存档备份,存于互联网档案馆、Raspberry Pi 等。一些第三方项目和产 品使用 Buildroot 作为其建造系统的基础,包括创建了嵌入式操作系统的 OpenWrt 计划,和 Google Fiber 宽带服务所用的用户驻地设备的固件。 支持多个 C 标准库作为工具链的一部分,包括 GNU C 函数库、uClibc 和 musl,当然还有属于各种预配 置的开发环境的 C 标准库,比如 Linaro 所提供的库。Buildroot 的建造配置系统内部使用了 Kconfig,它 提供了一些特征,比如菜单驱动界面,依赖性处理,上下文有关帮助;Kconfig 也被 Linux 内核用于自身的 源代码层面配置。Buildroot 围绕大量自动下载的软件包而进行组织,这包含了各种用户空间应用、系统实用工具和函数库的源代码。作为最终结果的根文件系统映像,可以使用各种文件系统建造,包括 cramfs、 JFFS2、romfs、SquashFS 和 UBIFS。 Buildroot 是自由及开放源代码软件,由 Peter Korsgaard 维护并在 GNU 通用公共许可证(GPL)版本 2 及以后版本下发行。这个项目开始于 2001 年,最初意图用作 uClibc 的测试台。每三个月提供新的发行。

70.2 获取buildroot源码

请使用浏览器打开 buildroot 官方下载页面 https://buildroot.org/download.html ,打开后,选择长期支持发布版 我这里目前是 2021.05 版本,为了保证下述操作一致,我们统一都使用同一个版本。

点击buildroot-2021.05.tar.bz2 进行下载。下载好之后使用samba 上传到ubuntu虚拟机。在用户目录下新建文件夹buildroot。将buildroot-2021.05.tar.bz2拷贝到该目录,如下图所示: 

 

使用以下命令解压

tar -vxf buildroot-2021.05.tar.bz2

 

进入解压后的目录,如下图所示: 

 

70.3 buildroot 编译环境

通过查看官方手册可知构建系统需要的工具有如下图所示,这些工具需要我们在 ubuntu虚拟机上安装。官方手册地址:https://buildroot.org/downloads/manual/manual.html#requirement

 

我们需要安装这些编译必须工具,不然编译过程,会出错。我们可以使用以下命令来安装这些工具,安装过程如下图:

apt install -y sed make binutils build-essential gcc g++ patch gzip bzip2 perl tar cpio unzip rsync file bc wget

由于作者已经安装过了,所以不会出现安装提示,读者第一次安装按提示进行。如果需要使用1.6节以后的第三方工具包,请使用下述命令安装所有可选软件包。这一步的目的是防止编译时报错。

apt install -y wget python libncurses5 bzr cvs git mercurial rsync subversion

 

安装完编译所需的软件包后,就可以开始编译构建 buildroot了。

70.4 使用提供的配置文件进行编译(推荐)

为了大家方便使用,我们提供了配置好以下章节配置功能的源码和配置文件.config,大家可以直接使用。

使用方法:

用户使用配置好的buildroot源码拷贝到ubuntu,解压后执行 “make menuconfig ”可以在此基础上进行配置文件系统。然后再执行  “make”  就能生成文件系统压缩包镜像,放在output目录中。使用配置好的buildroot源码就可以跳过下面的章节,直接烧写测试。

70.5 从零开始编译buildroot

我们可以选择上一小节提供的配置好的源码进行配置文件系统,也可以根据以下章节在buildroot官方源码的基础上从0开始配置。接下来我们就开始学习怎样一步一步配置buildroot,使用命令:

 make menuconfig

 

然后会出现如下图所示的图形界面,我们可以在图形界面上配置文件系统。 

 

70.5.1 配置 Target options 

首先配置 Target options 选项,目标选项。包括处理器体系结构、二进制文件格式、架构系列、ABI、浮点运算、指令集。对应到我这里使用的STM32MP157,它的CPU架构是cortex-A7架构需要配置的项目和其对应的内容如下:

 Target Architecture (ARM (little endian))(小端模式)            Target Binary Format (ELF)(二进制格式是ELF)                             Target Architecture Variant (cortex-A7)(CPU是a7)                                                 Target ABI (EABIhf) (支持EABIhf)                    Floating point strategy (浮点处理采用 NEON/VFPv4)            
ARM instruction set (ARM)采用精简指令集ARM  

配置好如下图:

70.5.2 配置 Toolchain

此配置项用于配置交叉编译工具链,也就是交叉编译器,这里设置为我们自己所使用的交叉编译器即可。buildroot 其实是可以自动下载交叉编译器的,但是都是从国外服务器下载的,鉴于国内的网络环境,强烈推荐大家设置成自己所使用的交叉编译器。需要配置的项目和其对应的内容如下

gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf交叉编译器的压缩包在”iTOP-STM32MP157开发板光盘资料\04_TF-A、uboot和内核源码\交叉编译器”目录下。我们将压缩包拷贝到ubuntu的/usr/local/arm目录下,然后解压缩,如下图所示:

 

make menuconfig的配置如下图所示: 

tolchain -> Toolchain type = External toolchain -> Toolchain = Custom toolchain //用户自己的交叉编译器 -> Toolchain origin = Pre-installed toolchain //预装的编译器 -> Toolchain path =/usr/local/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf-> Toolchain prefix = arm-none-linux-gnueabihf //前缀 -> External toolchain gcc version = 10.x -> External toolchain kernel headers series = 5.4.x -> External toolchain C library = glibc/eglibc -> [*] Toolchain has SSP support? //选中 -> [*]Toolchain has SSP strong support? (NEW) //选中 -> [*] Toolchain has C++ support? //选中 -> [*] Enable MMU support (NEW) //选中

Toolchain:设置为 Custom toolchain,使用用户自己的交叉编译器。 

Toolchain origin:设置为 Pre-installed toolchain,使用预装的交叉编译器。

Toolchain path:交叉编译器绝对路径。 

Toolchain prefix:设置交叉编译器前缀,arm-none-linux-gnueabihf。

配置好如下图:

70.5.3 配置 System configuration

此选项用于设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。需要配置的 项目和其对应的内容如下:

System configuration-> System hostname =iTOP_STM32MP157   //平台名字,自行设置-> System banner = Welcome to iTOP_STM32MP157 //欢迎语-> Init system = BusyBox //使用 busybox-> /dev management = Dynamic using devtmpfs + mdev //使用 mdev-> [*] Enable root login with password (NEW) //使能登录密码-> Root password = topeet //登录密码为 topeet

在 System configuration 选项中可以配置平台名字,登录密码等信息。

配置好如下图:

70.5.4 配置 Filesystem images 

-> Filesystem images -> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4 -> ext2/3/4 variant = ext4 //选择 ext4 格式 

配置好如下图:

70.5.5 禁止编译 Linux 内核和 uboot 

由于从网上下载内核源码和uboot然后编译他们比较耗费时间,而且新下载的内核源码,与uboot没有我们开发板的配置信息,所以需要禁用它们。

禁止 Linux 内核的编译,配置如下:

> Kernel-> [ ] Linux Kernel //不要选择编译 Linux Kernel 选项!

接着禁止编译 Uboot,配置如下:

-> Bootloaders -> [ ] U-Boot //不要选择编译 U-Boot 选项!

70.5.6 配置 Target packages

此选项用于配置要选择的第三方库或软件、比如 alsa-utils、iperf 等工具,但是现在我们先不选择第三方库,先编译一下最基本的根文件系统,如果没有问题的话再重新配置选择第三方库和软件。否则编译出问题的时候都不知道怎么找问题。

接下来重要的一步检查自己的交叉编译,默认支持的内核版本。输入命令:

vim /usr/local/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/include/linux/version.h

如上图所示 LINUX_VERSION_CODE为267277,此值为10进制,转换为16进制为4140D,对应的linux内核版本为4.1.x,在此要把该值改为与buildroot中配置的一致,即为5.4.x,转换为16进制为50400,对应的十进制为328704。(如果Linux_VERSION_CODE与内核版本不一致,会导致编译报错)。修改完成如下图所示: 

70.5.7 编译测试buildroot

使用命令“make”进行编译,等待编译完成,如下图所示:

 

编译完成以后就会在 buildroot-2021.05/output/images 下生成根文件系统。进入到images,可以看见生成的rootfs.ext4,我们新建一个rootfs文件夹。将rootfs.ext4挂载到rootfs,如下图所示: 

使用命令“vim ./etc/profile”为开发板终端这是名称和路径显示功能。

添加以下内容如图所示,修改完保存并退出。

PS1='[$USER@$HOSTNAME]$PWD# '

PATH=$PATH

HOSTNAME=`/bin/hostname`

export USER LOGNAME PS1 PATH

 

保存退出之后,回到image目录下,使用命令“umount rootfs”,取消挂载,如下图所示: 

 

将生成的rootfs.ext4替换image烧写文件夹下的rootfs.ext4,验证其正确性。

70.6 增加基本的软件包

上节中我们使用buildroot编译了一个最基本的文件系统,接下来我们就来为这文件系统添加一些基本软件包,进一步增强文件系统的功能。

70.6.1 支持 linux 磁盘工具

如果读者,想要的文件系统支持FAT32 格式的分区,则需要参考下述操作进行配置 dosfstools 工具包。

依次选择如下配置项:

-> Target packages 
-> Filesystem and flash utilities->dosfstools

配置后如下图所示

如果读者,想要的文件系统支持ext2 ext3 ext4 文件系统分区,请参考下图配置增加 e2fsprogs 工具包。

依次选择如下配置项:

-> Target packages

-> Filesystem and flash utilities

-> e2fsprogs

配置后如下图所示

 

如果读者,想要格式化 spi nandflash norflash 等块设备,就参考下述配置增加 mtd tools。

依次选择如下配置项:

-> Target packages

-> Filesystem and flash utilities

配置后如下图所示:

 

70.6.2 支持 nfs挂载工具

如果读者想要使用nfs挂载工具,依次选择如下配置项:

-> Target packages

-> Filesystem and flash utilities

配置后如下图所示:

 

70.6.3 支持 v4l2 框架工具

如果读者想要使用摄像头等设备,需要查看摄像头数据或者设置摄像头的配置,则需要安装 v4l-utils 工具,请参考如下述配置路径来进行增加相应的包。

-> Target packages

-> Audio and video applications

配置后如下图所示:

 

依次选择如下配置项:

-> Target packages

-> Libraries

-> Hardware handling

配置后如下图所示:

 

70.6.4 支持 can 工具

如果读者,想要测试 can 设备,就参考下述配置进行安装 can-utils 来进行 can 数据的发送和读写,测试can之前还需要安装 iproute2 命令来初始化配置 can 设备。

依次选择如下配置项:

-> Target packages

-> Networking applications

进入后如下图:

 

70.6.5 支持 ssh 访问工具

如果读者,想通过 ssh 工具来远程登录开发板,或者使用开发板远程登录其他ssh,则需要安装 openssh 工具包,配置过程如下:

依次选择如下配置项:

-> Target packages

-> Networking applications

进入后如下图:

 

70.6.6 支持 4G 拨号上网工具

我们的STM32MP157开发板可以直接安装配套的 pcie 接口 4G 上网模块,可以通过 ppp 协议进行拨号上网,如果需要使用 ppp 协议则需要安装 pppd 工具包,配置方式参考下图。

 -> Target packages

 -> Networking applications

 

70.6.7 支持 hci 蓝牙工具 

由于我们的开发板上蓝牙模块,如果使用蓝牙模块功能则要安装对应的工具包才可以,参考下述配置进行配置安装 bluez-utils 5.x 以及 bluez-tools 。 

-> Target packages 
-> Networking applications 

 

70.6.8 支持 alsa 声卡工具

ALSA 是 Advanced Linux Sound Architecture,高级 Linux 声音架构的简称,它在 Linux 操作系统上提供了音频和 MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA 已经成为默认的声音子系统,用来替换2.4系列内核中的 OSS(Open Sound System,开放声音系统)。 

ALSA 的主要特性包括:高效地支持从消费类入门级声卡到专业级音频设备所有类型的音频接口,完全模块化的设计, 支持对称多处理(SMP)和线程安全,对 OSS 的向后兼容,以及提供了用户空间的 alsa-lib 库来简化应用程序的开发。需要使用 aplay等命令,请参考如下配置进行配置。

依次选择如下配置项:

Target packages 
---> Audio and video applications 
---> [*] alsa-utils ---> 

进入后如下图:

 

依次选择如下配置项 

Target packages 
-> Libraries 
-> Audio/Sound 
-> -*- alsa-lib ---> 此配置项下的文件全部选中

 进入后如下图:

 

70.6.9 支持 wpa WIFI 工具 

果需要使用开发板上的wifi模块进行上网等相关测试,则需要安装iw 包来获取无线路由设备信息,

并通过 wpa_supplicant 进行网络链接。 

-> Target packages 
-> Networking applications 

-> Target packages 
-> Networking applications

70.7 支持Qt配置

70.7.1 支持 multimedia

凭借GStreamer,程序员可以很容易地创建各种多媒体功能组件,包括简单的音频回放,音频和频播放,录音,流媒体和音频编辑。基于流水线设计,可以创建诸如视频编辑器、流媒体广播和媒体播放器等等的很多多媒体应用,我们需要参考如下配置目录进行配置

依次选择如下配置项:

-> Target packages

-> Audio and video applications

进入后如下图:

70.7.2 支持 tslib触摸

Tslib是嵌入式经常使用的第三方库,可以优化触摸识别,如果读者需要,可以按下图配置:

依次选择如下配置项:

-> Target packages

-> Libraries

-> Hardware handling

进入后如下图:

 

70.7.3 支持qt5

我们可以直接使用buildroot来制作一个具有qt环境的文件系统,配置如下图:

依次选择如下配置项:

-> Target packages

-> Graphic libraries and applications (graphic/text)

-> Qt5

下面的勾选只是举一个例子请根据个人需求进行配置:

 

支持虚拟键盘:

支持SQLite:

-> Target packages

-> Graphic libraries and applications (graphic/text)

-> Qt5

 ->SQLoite 3 support (QT SQLite) ---->

 

70.8 其他配置

70.8.1 支持 python3

Python 是一种面向对象的解释型语言,读者可以根据自己的需求选择编译安装python的模块,配置过程如下:

依次选择如下配置项:

-> Target packages

-> Interpreter languages and scripting

进入后如下图:

 

70.8.2 支持MQTT库

Mosqitto 是一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单。读者可以根据需求是否需要来选择安装,其配置过程如下:

依次选择如下配置项:

-> Target packages 
-> Networking applications

进入后如下图:

70.8.3 支持opencv3

读者想要支持opencv就依次选择如下配置项:

-> Target packages

   Libraries  --->

   Graphics  --->

          [*] opencv3  --->

进入后如下图:

 

70.9 增加功能后烧写测试

70.9.1 配置烧写

前面三节的功能添加完成后,使用“make”命令编译,编译的时间根据网络状况会有所不同。

编译完成以后就会在 buildroot-2021.05/output/images 下生成根文件系统。进入到images,可以看见生成的不同形式的镜像,如下图所示:

 

这里的rootfs.ext4格式镜像是我们可以直接烧写的镜像,但是我们会进行部分修改,虽然ext4格式的镜像可以通过挂载来进行修改,但较为不方便,所以我们一般情况下,修改的是rootfs.tar压缩文件。

首先我们将rootfs.tar文件拷贝到其他路径下,作者将该文件拷贝到了/home/topeet/work/demo目录下,如下图所示:

 

然后我们使用命令“tar -vxf rootfs.tar”进行文件的解压,解压完成之后如下图所示: 

 

然后使用命令“rm -rf rootfs.tar ”将源文件进行删除,删除完成如下图所示: 

 

之后进行基本配置

添加字库:将“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\02_buildroot文件系统\04_字库”路径下的fonts文件拷贝到文件系统的/usr/share下面,拷贝完成如下图所示:

 

添加环境变量:

回到文件系统根目录下如下图所示:

 

然后我们使用命令

vim ./etc/profile

打开/etc/profile 文件添加以下内容

LOGNAME=$USER
PS1='[$USER@$HOSTNAME]:$PWD# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
EVENT=$(cat /proc/bus/input/devices | grep -E 'TSC2007|ft5x0x_ts|goodix-gt911' -A4 | tail -n1 | awk '{print $NF}')
export TSLIB_TSDEVICE=/dev/input/${EVENT:9}
export TSLIB_TSEVENTTYPE=input
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/${EVENT:9}
export QWS_MOUSE_PROTO=tslib:/dev/input/${EVENT:9}
export QT_QPA_FONTDIR=/usr/share/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms
export QML2_IMPORT_PATH=$QT_ROOT/qml
export QT_QPA_FB_TSLIB=1

保存退出之后,由于我们需要在开机加载一些ko驱动文件,将“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\02_buildroot文件系统\07_ko”路径下的ko目录拷贝到文件系统的/usr目录下,拷贝完成如下图所示: 

 

然后我们把“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\02_buildroot文件系统\08_rc.local”目录下的rc.local文件拷贝到文件系统的etc目录下,拷贝完成如下图所示: 

 

然后进入文件系统的/etc/init.d目录下,如下图所示: 

 

然后使用命令“vim rcS”,对rcS文件进行修改,在最下方添加以下内容

sh /etc/rc.local

添加完成如下图所示:

 

保存退出之后,由于我们之后可能会用到WIFI和蓝牙所以我们将“iTOP-STM32MP157开发板网盘资料汇总\04_测试例程\01_外设功能验证配套资料\06_iTOP-STM32MP157--蓝牙WIFI测试”路径下的firmware固件拷贝到文件系统的lib目录下,拷贝完成如下图所示: 

 

使用命令“du demo”命令来查看system文件大小,可以看到该文件系统的大小为228M(这里的文件大小根据自身实际情况来),如下图: 

 

所以我们镜像大小在这里设置为600M,使用命令如下

dd if=/dev/zero of=rootfs.ext4 bs=1M count=600 

mkfs.ext4 -L rootfs rootfs.ext4

建立一个大小为300M的ext4 磁盘,如下图所示:

 

然后我们使用命令“mkdir rootfs”,rootfs用来挂载之前制作制作出来的 rootfs.ext4如下图所示: 

 

接下来使用 mount 命令将 rootfs.ext4 挂载到rootfs 目录下,如下图所示:

 mount ./rootfs.ext4 rootfs

 

然后拷贝我们制作的文件系统到rootfs 目录下,如下图所示:

cp -r ./demo/* ./rootfs

 

拷贝完成后,使用命令“umount rootfs”,进行解除挂载,如下图所示: 

 

将生成的rootfs.ext4替换image烧写文件夹下的rootfs.ext4,验证其正确性。

70.9.2 qt编译和环境测试

在上一小节我们制作了对应的文件系统镜像,在文件系统中也配置好了对应的QT环境,那我们怎样将我们的QT工程在我们的buildroot构建的环境中运行呢。

 我们本小节的QT测试例程为“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\02_buildroot文件系统\06_QT测试”下的QCalendar.zip。将QCalendar.zip文件拷贝到ubuntu上,并解压,解压完成之后如下图所示:

然后我们使用以下命令运行buildroot构建的qt5.15的qmake,生成对应的makefile文件如下图所示:

/home/topeet/work/buildroot-2021.05/output/build/qt5base-5.15.2/bin/qmake

 

这里需要注意,如果是自己编译出来的qmake,需要找到自己的qmake路径,而如果使用的我们的ubuntu环境,且用了我们编译好的buildroot源码包,需要与我们的路径完全相同。即需要将itop-buildroot.tar.gz编译好的源码在/home/topeet/work  目录下解压。

qmake成功之后,接下来使用我们的“make”命令进行编译,编译完成如下图所示:

 

此处主要测试qt5.15.2的环境,开发板烧写好镜像后,开机。 

 

输入用户名,密码。 

 

进入后使用命令校准屏幕如下:

ts_calibrate

 

重启:“reboot”

重启后接好网线配置网络:

 

例程存放在 “iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\02_buildroot文件系统\06_QT测试”目录下,或者直接用我们刚刚编译完成的QT工程。接下来通过挂载nfs(这里使用何种传输方式,根据自己的习惯来就可以),传输要使用的例程

输入以下命令:

mount -t nfs 192.168.1.9:/home/minilinux /mnt

根据自己实际情况挂载。

进入/mnt目录

 

进入QCalendar 

 

使用命令”./QCalendar” ,运行qt程序。 

 

qt例程测试结束。 

70.9.3 基本工具测试

70.9.3.1 nfs挂载工具测试

接下来我们来测试nfs挂载工具,在超级终端输入“mount”按两下“TAB”键,如下图所示:

 

接下来我们以mount.nfs 命令为例,测试nfs挂载功能。

首先使用 “ifconfig eth0 192.168.1.230”给开发板设置IP,

 

如上图所示,开发板ip成功设置,作者的Ubuntu虚拟机的ip为192.168.1.80 (根据实际情况设置ip)。

接下来,使用命令“ping 192.168.1.9 -c 3”开发板ping 一下ubuntu如下图。 

 

使用命令“mount.nfs 192.168.1.9:/home/minilinux /mnt

进入/mnt目录,“ls”查看:

 

可以看到挂载成功,需要卸载的话只需要退出/mnt文件夹,使用命令“umount.nfs /mnt”即可,如下图。再次进入/mnt ,使用“ls”查看: 

 

卸载成功,其他的命令请自行学习。

70.9.3.2 ssh访问工具测试

紧接着上面,我们可以ping通Ubuntu,然后使用ssh工具控制以下虚拟机,使用命令

“ssh topeet@192.168.1.9”,如下图。

 

如上图可以在开发板上通过ssh控制虚拟机。

70.9.3.3 linux磁盘工具测试

然后我们测试以下磁盘工具,在终端输入”fsck.” ,然后按两下“TAB”键,如下图所示:

 

这些磁盘工具的使用方法,和Ubuntu上的相同。

70.9.3.4 can工具测试

本次测试使用了usbcan调试分析仪作为测试设备,将usbcan调试分析仪通道一的L连到开发板的-,将通道一的H连到开发板的+,如下图所示:

 

在开发板终端输入命令: 

 

关闭can0通道。

然后在开发板终端输入命令:

ip link set can0 type can bitrate 250000

 

设置can0的波特率为250000

然后在开发板终端输入命令:

ip link set can0 up

 

打开can0通道。自此我们开发板的基础配置就完成了,然后是模式的选择。

首先将开发板作为接收端,使用如下命令:

candump can0 &

//can0作为监听端

然后在PC端usbcan的上位机发送数据如下图所示:

 

上位机的数据发送后,开发板的终端会收到相应的数据,如下图所示: 

 

然后将开发板作为发送端,使用如下命令发送相应的数据:

cansend can0 123#DEADBEEF

//can0作为发送端

 

然后在usncan的Windows上位机会返回如下信息: 

 

测试完成,can工具还有好多命令,需要读者自己探索。

70.9.3.5 alsa声卡工具测试

    耳机设置常用命令如下:

设置音量(最大为 127):amixer sset Headphone 127,127

左声道开启设置:amixer sset 'Left Output Mixer PCM' on

右声道开启设置:amixer sset 'Right Output Mixer PCM' on 

播放音频文件:aplay /mnt/nfs/lostyouth.wav &

作者的音频文件是/mnt/nfs 路径下的 lostyouth.wav。

如下图所示,使用命令

amixer sset Headphone 127,127

设置音量大小。

 

如下图所示,使用命令

 amixer sset 'Left Output Mixer PCM' on

开启左声道。

 

如下图所示,使用命令

amixer sset 'Right Output Mixer PCM' on

开启右声道。

 

使用命令播放音乐。

aplay /mnt/1.wav &

 

70.9.4 Python环境测试

在开发板终端输入 “python3” 如下图,输入1+1 ,按回车:

 

显示出结果为2。

Ctrl+D退出。测试完成。

70.9.5 opencv3测试

使用“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\02_buildroot文件系统\opencv 测试”目录下的demo 测试例程,将其拷贝到ubuntu下,并解压进入后如下图:

 

然后使用命令 “vim opencv_pic.pro”打开opencv库路径的配置文件,如下图: 

 

读者更具自己buildroot的路径修改上述路径后保存退出。

执行如下命令(命令中的路径可能不一样换成自己的路径)后使用 “make” 命令进行编译,如下图所示:

/home/topeet/buildroot/buildroot-2021.05/output/build/qt5base-5.15.2/bin/qmake

然后使用编译命令make进行编译,如下图所示:

 

编译完成后将生成的 “opencv_pic”以及’1.bmp’,拷贝到开发板上。 

 

然后在超级终端使用命令 “./ opencv_pic”运行例程,结果如下图: 

 

测试完毕。

70.10 使用制作好的Buildroot文件系统

在网盘目录“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\02_buildroot文件系统\03_buildroot制作好的镜像”下有制作好的文件系统压缩包rootfs.tar.bz2。

rootfs.ext4文件可以直接拷贝到image烧写目录下,替换原来的文件系统镜像,然后直接进行烧写即可。烧写所对应的章节为“第八章STM32MP157烧写系统”。


http://www.mrgr.cn/news/64254.html

相关文章:

  • CPU算法分析LiteAIServer视频智能分析平台视频诊断对比度检测:提升视频监控质量的关键技术
  • Nico,从零开始干掉Appium,移动端自动化测试框架实现
  • vue3学习记录-nextTick
  • 苍穹外卖-day01
  • C# ref和out 有什么区别,分别用在那种场景
  • Python | Leetcode Python题解之第520题检测大写字母
  • 约瑟夫环问题——4个解法总结(C语言)
  • HTMLCSS:旋转的动态卡片
  • LInux系统编程(二)操作系统和进程
  • 锁策略, cas 和 synchronized 优化过程
  • Python爬虫详解:原理、常用库与实战案例
  • 【刷题13】链表专题
  • 使用WebAssembly优化Web应用性能
  • nodejs入门教程20:nodejs文件系统
  • uniapp-vue3比对筛选
  • 软件测试基础三(前端知识)
  • Elastix-基于ITK的医学图像配准库
  • Java中对象的转移(1)——序列化与反序列化
  • 初探Flink的序列化
  • 手撕快排的三种方法:让面试官对你刮目相看
  • 到底要不要用SAP Screen Personas
  • Unity中的屏幕坐标系
  • Matlab车牌识别课程设计报告模板(附源代码)
  • 【OJ题解】C++实现反转字符串中的每个单词
  • Excel函数CUnique连接合并指定区域的唯一值
  • 远程控制时频繁掉线的原因