【北京迅为】《STM32MP157开发板使用手册》-第十六章 Buildroot制作根文件系统

news2024/9/26 1:19:19

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接口等


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

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

编译环境 :Ubuntu 18.04

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

16.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 的测试台。每三个月提供新的发行。

16.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

 

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

 

16.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了。

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

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

使用方法:

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

16.5 从零开始编译buildroot

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

make menuconfig

 

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

 

16.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  

配置好如下图: 

 

16.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。

配置好如下图:

16.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 选项中可以配置平台名字,登录密码等信息。

配置好如下图:

16.5.4 配置 Filesystem images

-> Filesystem images 

    -> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4 

    -> ext2/3/4 variant = ext4 //选择 ext4 格式 

配置好如下图:

 

16.5.5 禁止编译 Linux 内核和 uboot 

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

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

> Kernel

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

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

-> Bootloaders 

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

16.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与内核版本不一致,会导致编译报错)。修改完成如下图所示: 

 

编译完成以后就会在 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,验证其正确性。

16.6 增加基本的软件包

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

16.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

配置后如下图所示:

16.6.2 支持 nfs挂载工具

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

-> Target packages

-> Filesystem and flash utilities

配置后如下图所示:

 

 

16.6.3 支持 v4l2 框架工具

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

-> Target packages

-> Audio and video applications

配置后如下图所示:

依次选择如下配置项:

-> Target packages

-> Libraries

-> Hardware handling

配置后如下图所示: 

16.6.4 支持 can 工具

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

依次选择如下配置项:

-> Target packages 
-> Networking applications

进入后如下图:

16.6.5 支持 ssh 访问工具

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

依次选择如下配置项:

-> Target packages

-> Networking applications

进入后如下图:

16.6.6 支持 4G 拨号上网工具

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

 -> Target packages

 -> Networking applications

 

16.6.7 支持 hci 蓝牙工具 

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

-> Target packages 
-> Networking applications 

 

16.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 ---> 

进入后如下图:

依次选择如下配置项: 

16.6.9 支持 wpa WIFI 工具 

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

并通过 wpa_supplicant 进行网络链接。 

-> Target packages

-> Networking applications

 

-> Target packages

-> Networking applications

 

16.7 支持Qt配置

16.7.1 支持 multimedia

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

依次选择如下配置项:

-> Target packages

-> Audio and video applications

进入后如下图:

16.7.2 支持 tslib触摸

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

依次选择如下配置项:

-> Target packages

-> Libraries

-> Hardware handling

进入后如下图:

 

16.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) ---->

 

16.8 其他配置

16.8.1 支持 python3

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

依次选择如下配置项:

-> Target packages

-> Interpreter languages and scripting

进入后如下图:

16.8.2 支持MQTT库

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

依次选择如下配置项:

-> Target packages 
-> Networking applications

进入后如下图:

16.8.3 支持opencv3

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

-> Target packages

   Libraries  --->

   Graphics  --->

          [*] opencv3  --->

 进入后如下图:

16.9 增加功能后烧写测试

16.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,验证其正确性。

16.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例程测试结束。 

16.9.3 基本工具测试

16.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如下图。 

 

ping通之后就可以测试mount.nfs 命令了。

在终端输入“mount -h”,可以看到此命令的使用方法,如下图:

 

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

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

 

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

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

16.9.3.2 ssh访问工具测试

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

“ssh topeet@192.168.1.9”,如下图。

 

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

16.9.3.3 linux磁盘工具测试

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

 

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

16.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工具还有好多命令,需要读者自己探索。

16.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 &

 

16.9.4 Python环境测试

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

 

显示出结果为2。

Ctrl+D退出。测试完成。

16.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”运行例程,结果如下图: 

 

测试完毕。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

丰巢“闯关”港交所上市

社区中随处可见的智能快递柜,即将捧出一个IPO。 近日,丰巢控股有限公司(下称“丰巢控股”或“丰巢”)正式向港交所递交了招股书,华泰国际担任其独家保荐人。这将是继顺丰控股、顺丰房托、嘉里物流、顺丰同城之后&…

【Qt笔记】QGroupBox控件详解

目录 引言 一、基本属性 二、常用方法 2.1 构造函数 2.2 设置标题 2.3 设置复选框模式 2.4 是否被选中 2.5 设置对齐方式 2.6 设置扁平化样式 三、信号与槽机制 四、样式定制 五、应用示例 5.1 代码 5.2 代码解析 5.3 实现效果 结语 引言 QGroupBox 是 Qt…

检查iOS多语系文件内容检查iOS多语系文件内容

在iOS中,检查多语言文件(如 .strings 文件)内容的命令通常使用 plutil 工具。你可以通过终端执行以下命令来检查 .strings 文件的格式和内容: plutil -lint path/to/your/Localizable.strings 这个命令会验证指定的 .strings 文…

C语言13--结构体

结构体基本概念 C语言提供了众多的基本类型,但现实生活中的对象一般都不是单纯的整型、浮点型或字符串,而是这些基本类型的综合体。比如一个学生,典型地应该拥有学号(整型)、姓名(字符串)、分数…

已配置好的Linux CentOS7虚拟机转换为可视化界面问题

一、发现问题 学习过程中发现可视化界面比较有意思,就想尝试搞一下看看,于是去网站上搜索,看到的一些是在新建虚拟机的时候进行设置的,我尝试跟着步骤去搞,发现其中最关键的一步,软件选择中,没有…

【北京迅为】《STM32MP157开发板使用手册》- 第十五章 制作最小linux系统

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

TikTok内容电商:短视频与直播带货如何重塑消费者购物决策

数字化时代,内容电商已经成为一种重要的商业模式。而TikTok作为全球领先的短视频平台,其内容电商模式正慢慢改变用户的消费习惯。TikTok Shop作为TikTok平台上的电商板块,也凭借其独特的短视频和直播带货模式,影响着消费者的购物决…

百度MEG数据开发治理平台-TDS

导读 百度MEG的上一代大数据产品存在平台分散、质量不均和易用性差等问题,导致开发效率低下、学习成本高,业务需求响应迟缓。为了解决这些问题,百度MEG内部开发了图灵3.0生态系统。图灵3.0覆盖了数据全生命周期,包括Turing Data …

AI在医学领域:HMARL首个多器官诊断AI框架

多器官疾病因其对多个器官系统的同时影响而带来了显著的挑战,这需要复杂和适应性的治疗策略。尽管在人工智能驱动的医疗决策支持系统方面取得了最新进展,但现有的解决方案通常限于单个器官系统。它们往往忽视了器官系统之间复杂的相互依赖性,…

搜维尔科技:SenseGlove触觉反馈数据手套为人形机器人遥操作提供精确的控制和交互方案

SenseGlove触觉反馈数据手套 使用市场上唯一一款结合力反馈、振动触觉反馈和运动捕捉以及紧凑无线设计的触觉手套来收集数据。 遥操作机器人 远程机器人向人类提供触觉反馈,提供更强的真实感和更高的性能,以及安全性和控制力。远程机器人的 SenseGlov…

适用于BLE室内定位系统的自适应路径损耗模型

自适应路径损耗模型(ADAM):提升BLE室内定位精度的创新方法 室内定位系统(IPS)在物联网、智慧城市等领域中扮演着至关重要的角色。然而,由于室内环境的复杂性(如信号多径效应、障碍物等),传统的定位方法往往面临精度不足的问题。本文介绍了一种新颖的模型——ADAM(Ad…

【毕设项目五】基于SpringBoot+VUE的公共卫生教育与宣传系统

基于SpringBootVUE的公共卫生教育与宣传系统 项目介绍 系统有两种角色:管理员和普通用户。 (1)健康教育资源 (2)活动管理 (3)反馈与建议 (4)用户管理 管理员实现功…

快速上手指南:在Windows系统中下载Ollama,一键启动大模型体验!

1. 下载ollama 官网下载安装: ollama.com 2. 拉取大模型 llama 3.1 终端中输入 ollama pull llama3.1,等待安装 3. 运行 llama3.1 ollama run llama3.1接下来就可以和模型对话了 退出 /bye运行 /? 查看更多聊天中命令 其他 ollama github&#x…

150Kg载重履带式无人车底盘技术详解

150Kg载重履带式无人车底盘,作为现代智能移动平台的重要组成部分,专为复杂地形作业设计,如野外勘探、灾难救援、农业自动化及军事侦察等领域。该底盘集成了先进的动力技术、稳定的履带行走系统、精准的遥控与控制系统以及模块化的设计理念&am…

[数据集][目标检测]河道垃圾检测数据集VOC+YOLO格式2274张8类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2274 标注数量(xml文件个数):2274 标注数量(txt文件个数):2274 标注…

【安全知识】访问控制模型DAC、MAC、RBAC、ABAC有什么区别?

不同的公司或软件提供商,设计了无数种控制用户访问功能或资源的方法。但无论哪种设计,都可归到四种经典权限模型里——自主访问控制(DAC, Discretionary Access Control)、强制访问控制(MAC, Mandatory Access Control)、基于角色访问控制(RBAC, Role-ba…

SprinBoot+Vue高校就业管理系统设计与实现的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…

C语言代码练习(第十九天)

今日练习: 52、有一个已经排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中 53、输出"魔方阵"。所谓魔方阵是指它的每一行,每一列和对角线之和均相等。 54、找出一个二维数组中的鞍点,即该位置…

如何判断两个ip地址在同一子网

在电脑网络中,了解如何判断两个IP地址是否位于同一子网是一项基础而重要的技能。这对于网络管理、故障排查以及安全策略的实施都至关重要。下面就一起跟着虎观代理小二了解一下吧。 要判断两个‌IP地址是否在同一子网,可以通过以下步骤进行:‌…

Bootstrap简介

Bootstrap 一.Bootstrap简介 什么是Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。 为什么使用Bootstrap? 快速开发:Bootstrap 提供了一套预设的CSS样式和JavaScript组件,如…