一、构建Linux系统(ST Developer Package)

构建Linux系统

[!NOTE]

参考网址:STM32MP1 Developer Package - stm32mpu (stmicroelectronics.cn)

构建方式为STM32MP135的Developer_Package,Developer_Package应是从Yocto构建的系统源码中提取出的

一、构建前提条件

系统环境条件

参考网址:PC prerequisites - stm32mpu (stmicroelectronics.cn)

配置项建议 (最低限度)
LinuxUbuntu22.04(64 位)
内存8 GB
硬盘320G

更新Linux软件包

 sudo apt-get update

必须的软件包

sudo apt-get install gawk wget git diffstat unzip texinfo gcc-multilib  chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm bsdmainutils
sudo apt-get install libssl-dev libgmp-dev libmpc-dev lz4 zstd

建议包

 sudo apt-get install build-essential libncurses-dev libyaml-dev libssl-dev 

其他包

 sudo apt-get install coreutils bsdmainutils sed curl bc lrzsz corkscrew cvs subversion mercurial nfs-common nfs-kernel-server libarchive-zip-perl dos2unix texi2html libxml2-utils
下载使用Start package源码包

start package源码包是stm32mp1系列的官方系统烧录文件,先向板子内烧录一个简单系统,方便后面开发,且里面有些后面需要的相关文件

安装STM32CubeProgrammer烧录工具软件

STM32CubeProgrammer工具下载地址

https://www.st.com/en/development-tools/stm32cubeprog.html#get-software

在这里插入图片描述

创建STM32工作目录

 mkdir $HOME/STM32MPU_workspace

创建STM32工具目录

 mkdir $HOME/STM32MPU_workspace/STM32MPU-Tools

创建烧录工具安装目录

mkdir $HOME/STM32MPU_workspace/STM32MPU-Tools/STM32CubeProgrammer-x.y.z

创建用于存放下载包的临时目录

 mkdir $HOME/STM32MPU_workspace/tmp

将安装包从windows中复制到linux的$HOME/STM32MPU_workspace/tmp目录中,或者直接在linux的浏览器上下载然后移到tmp目录,然后解压安装包

执行安装命令

./SetupSTM32CubeProgrammer-2.16.0.linux

在这里插入图片描述

安装弹窗只需修改软件安装路径为上面建立的即可

在这里插入图片描述

USB串口链路

安装USB库(Ubuntu应该自带有的)

		sudo apt-get install libusb-1.0-0

允许STM32CubeProgrammer通过低级命令访问USB端口

先进入stm32cubeprogrammer安装目录下的rules文件夹

cd $HOME/STM32MPU_workspace/STM32MPU-Tools/STM32CubeProgrammer-x.y.z/Drivers/rules

将rules文件夹下的相关文件复制/etc/udev/rules.d/

sudo cp *.* /etc/udev/rules.d/
安装Linux串口工具

一个linux内使用的串口调试工具,可用于查看开发板系统烧录和启动时的日志信息

安装命令

 sudo apt-get install minicom
下载Start package系统镜像包

windows浏览器去官网下载(建议),下载网址:

https://www.st.com/en/embedded-software/stm32mp1starter.html#get-software

创建STM32源码工作目录

mkdir $HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0

创建Start package源码工作目录

mkdir $HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Starter-Package

将下载的start package源码包复制到工作目录,并进入目录解压

tar xvf en.flash-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz
将系统映像烧录到官方开发板中

没有官方开发板可忽略此步

启动STM32CubeProgrammer工具并将模式设置成USB(在此之前得先将板子通过USB线与Ubuntu虚拟机连接)

在这里插入图片描述

点击open file会弹出新窗口,在解压的系统映像文件夹下选择FlashLayout_sdcard_stm32mp135x-dk-optee.tsv(SD卡烧录专用)

在这里插入图片描述

所处的文件夹路径:stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1/flashlayout_st-image-weston/optee

在这里插入图片描述

选择相关固件文件夹(系统映像解压后的文件夹内)

在这里插入图片描述

具体路径:stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1

在这里插入图片描述

参考ST官方教程 https://wiki.stmicroelectronics.cn/stm32mpu/wiki/Getting_started/STM32MP1_boards/STM32MP135x-DK

在这里插入图片描述

二、下载源码包和SDK

下载网址:STM32MP1Dev - STM32MP1 OpenSTLinux Developer Package - STMicroelectronics

Linux下构建,使用x86那个SDK包即可

在这里插入图片描述

三、安装与使用SDK

安装

解压下载后的SDK资源包,然后进入SDK文件夹内,打开shell终端执行安装脚本,如下图所示,最后等待安装完成即可。

注意:如果安装脚本无法运行,可能是没有执行权限,使用 sudo chmod +x <安装脚本文件全名>

示例:sudo chmod +x st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-4.2.1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.sh

在这里插入图片描述

安装完成后,进入安装目录即可看到如下文件,只需要关注那个带-setup-的文件即可

在这里插入图片描述

使用
短暂使用

每次使用该交叉编译工具链时,都需要source上面那个带-setup-的文件

即:source <SDK安装路径>/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

注意:用此方法后,只能在运行该方法的终端使用交叉编译工具链,新建终端后需要重新运行一遍该方法

示例:source /home/morgic/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

在这里插入图片描述

source交叉编译工具后即可通过下面指令检测SDK是否在当前终端使用

在这里插入图片描述

长期使用

如果经常使用该交叉编译工具链,建议将其添加到Linux的PATH环境中

  • 法一:添加到/etc/profile文件中

在/etc/profile文件的末尾添加:source <SDK安装路径>/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi,然后保存退出,再重启Linux即可在每个新建终端都能使用该SDK了,但是不建议,添加错误会导致Linux崩溃。

vi /etc/profile

在这里插入图片描述

  • 法二:添加到~/.bashrc文件中

在$HOME/.bashrc(等同于~/.bashrc)文件的末尾添加:source <SDK安装路径>/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi,然后保存退出,再新建终端即可,可在每个新建终端都能使用该SDK了,但也不建议,后面使用Yocto方式构建系统的时候会导致构建出错。所以还是每次在新终端source一下SDK更安全。

vi $HOME/.bashrc

在这里插入图片描述

四、解压系统源码包

 tar xvf en.sources-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz

解压后进入源码包可看到如下项目文件夹,红色框中的所有源码都需要构建,而FIP_artifacts文件夹内常用作存放构建的结果

在这里插入图片描述

目前,ST提供的Linux系统都由图中几部分组成

在这里插入图片描述

TF-A

TF-A(Trusted Firmware-A)是一部分ARM基础安全架构(ARM Trusted Firmware)项目的组件之一。TF-A是一款开源的、用于ARM处理器的固件,旨在提供一个可信的启动和运行时环境,以确保系统的安全性和可靠性,TF-A通常用于启动ARM处理器上的操作系统(如Linux)之前。

OPTEE

OP-TEE(Open Portable Trusted Execution Environment)是一个开源的可信执行环境(TEE)实现,旨在为ARM架构的处理器提供安全的执行环境。OP-TEE项目由全球的开发者社区共同维护和支持,其核心目标是为处理器提供一个可信的、隔离的执行环境,以保护敏感数据和应用程序免受恶意软件和攻击的威胁,OP-TEE通常作为Developer_Package中的一个组件,用于提供安全的执行环境,与TF-A等组件配合使用,以构建更安全可信的嵌入式系统。

UBOOT

U-Boot,全称为Universal Boot Loader,是一款开源的引导加载程序(Boot Loader),用于嵌入式系统的通用引导加载程序,被广泛应用于各种嵌入式系统中,包括个人电脑、网络设备、移动设备等。

Linux内核

Linux操作系统的核心部分,负责管理系统资源、提供系统调用接口、调度任务、管理内存和文件系统等核心功能。

System文件系统

提供给用户管理系统数据的方式,主要构建方式有:buildroot、yocto等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值