
STM32MP157 微处理器基于灵活的双 Arm® Cortex®-A7 内核(工作频率 800 MHz)和 Cortex®-M4 内核(工作频率 209 MHz)架构,并配一个专用的 3D 图形处理单元(GPU)、MIPI-DSI 显示接口、以及一个 CAN FD 接口。
STM32MP157 3D OpenGL ES 2.0 图形引擎专为在图形用户界面(GUI)、菜单显示或动画等应用中加速 3D 图形而设计,可以配合面向行业标准 API 优化的软件堆栈,支持 Android™ 和 Linux® 嵌入式开发平台。
除了一个 LCD-TFT 显示控制器,STM32MP157 系列还内嵌多达 37 个通信外设,包括 10/100M 或千兆以太网、3 个 USB 2.0 主机/OTG、29 个定时器和高级模拟器件。
除了真随机数生成器(TRNG)、硬件加密和哈希处理器之外,安全选项还包括安全启动、TrustZone® 外设、以及主动篡改检测功能。


Wiki 地址:https://wiki.stmicroelectronics.cn/stm32mpu[4]。
STM32MPU Embedded Software Package 包括以下三种包:

本系列文章中我们主要使用 Developer Package,其中主要内容有:



存储空间建议 100G,我安装完 SDK 之后的空间占用情况如下:

本文中我使用 ubuntu 18.04,阿里源。
(1)安装额外的包:
需要的包:
sudo apt-get update
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 pylint xterm
sudo apt-get install make xsltproc docbook-utils fop dblatex xmlto
sudo apt-get install libmpc-dev libgmp-dev
开发包中需要用到的包:
sudo apt-get install libncurses5 libncurses5-dev libncursesw5-dev libssl-dev linux-headers-generic u-boot-tools device-tree-compiler bison flex g++ libyaml-dev libmpc-dev libgmp-dev
安装 repo:
sudo apt-get install repo
一些有用的工具:
sudo apt-get install coreutils bsdmainutils sed curl bc lrzsz corkscrew cvs subversion mercurial nfs-common nfs-kernel-server libarchive-zip-perl dos2unix texi2html diffstat libxml2-utils
(2)额外的配置
Linux 系统上,默认允许 MMC 上有 8 个分区,修改支持 16 个分区,将以下选项添加到 modprobe 中:
echo 'options mmc_block perdev_minors=16' > /tmp/mmc_block.conf
sudo mv /tmp/mmc_block.conf /etc/modprobe.d/mmc_block.conf
(3)下载 SDK
下载链接[5]
下载后放到 $HOME/STM32MPU_workspace/tmp 路径下,重命名为.tar.xz 格式,解压:
cd $HOME/STM32MPU_workspace/tmp
tar xvf en.SDK-x86_64-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17.tar.xz
(4)安装 SDK
创建 STM32MP15 开发包 SDK 路径:
mkdir -p $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/SDK
给脚本可执行权限:
sudo chmod +x stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1.11-openstlinux-5.10-dunfell-mp1-21-11-17.sh
执行脚本(将命令中的 mculover666 替换为自己的用户名):
./stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1.11-openstlinux-5.10-dunfell-mp1-21-11-17.sh -d /home/mculover666/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/SDK
安装完成后如图:

(5)环境变量生效:
cd $HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package
source SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
(6)检查 SDK 是否可用
① 检查目标架构(arm):
echo $ARCH
② 检查目标工具的工具链二进制前缀(arm-ostl-linux-gnueabi-):
echo $CROSS_COMPILE
③ 检查交叉编译器:
echo $CC
结果:
arm-ostl-linux-gnueabi-gcc -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/home/mculover666/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
④ 检查交叉编译器版本:
$CC --version
结果如下:
arm-ostl-linux-gnueabi-gcc (GCC) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
⑤ 检查 SDK 版本:
echo $OECORE_SDK_VERSION
结果如下:
3.1.11-openstlinux-5.10-dunfell-mp1-21-11-17
至此,SDK 安装完成,STM32MP157 开发环境搭建完成。

下载链接:STM32CubeIDE[6]。

下载之后解压:
unzip en.st-stm32cubeide_1.8.0_11526_20211125_0815_amd64.sh_v1.8.0.zip
赋予可执行权限:
sudo chmod -x st-stm32cubeide_1.8.0_11526_20211125_0815_amd64.sh
sduo ./st-stm32cubeide_1.8.0_11526_20211125_0815_amd64.sh
安装完成后如图:

启动后界面如下:

下载扩展包到$HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package目录,下载链接:en.STM32Cube_FW_MP1_V1-5-0.zip[7]。

解压:
unzip en.STM32Cube_FW_MP1_V1-5-0_v1.5.0.zip

内容说明如下:
STM32Cube_FW_MP1_V1.5.0
├── Drivers
│ ├── BSP BSP drivers for the supported STM32MP1 boards
│ │ └── [...]
│ ├── CMSIS
│ │ └── [...]
│ └── STM32MP1xx_HAL_Driver HAL drivers for the supported STM32MP1 devices
│ └── [...]
├── _htmresc
│ └── [...]
├── License.md
├── Middlewares
│ └── [...]
├── package.xml
├── Projects
│ ├── STM32CubeProjectsList.html List of examples and applications for STM32CubeMP1 package
│ ├── STM32MP157C-DK2 Set of examples and applications → STM32MP15 Discovery kits
│ │ └── [...]
│ └── STM32MP157C-EV1 Set of examples and applications → STM32MP15 Evaluation boards
│ └── [...]
├── Readme.md
├── Release_Notes.html Release note for STM32CubeMP1 package
└── Utilities
└── [...]
(1)关闭欢迎界面,进行工作界面:

(2)导入示例工程
点击【File】-> 【import】,选择导入已经存在的工程:

(3)选择打开 OpenAMP_TTY_echo 示例工程
工程所在位置在$HOME/STM32MPU_workspace/STM32MP15-Ecosystem-v3.1.0/Developer-Package/STM32Cube_FW_MP1_V1.5.0/Projects/STM32MP157C-DK2/Applications/OpenAMP/OpenAMP_TTY_echo/STM32CubeIDE,选择工程根路径:

点击【Finish】后进入工程界面:


编译完成:

必须保证开发板网络和开发机连通。
软件会下载会检测开发板 ip 核状态:

点击建立串口终端:

建立成功后如图:

选择 OpenAMP_TTY_echo_CM4 工程,右键单击,选择 【Debug As】 -> 【Debug configurations... 】,打开调试配置窗口:

配置好后点击【Debug】进入调试:

在串口终端查看 CM4 核的两个串口:

测试 CM4 核的串口是否回传:

M4 核正常运行,LED7 正常闪烁,测试完毕。
[1]官方介绍: https://www.st.com/zh/microcontrollers-microprocessors/stm32mp157.html#overview
[2]参考手册: https://www.st.com/zh/microcontrollers-microprocessors/stm32mp157.html#documentation
[3]规格书: https://www.st.com/zh/microcontrollers-microprocessors/stm32mp157.html#documentation
[4]https://wiki.stmicroelectronics.cn/stm32mpu: https://wiki.stmicroelectronics.cn/stm32mpu
[5]下载链接: [https://st.com/content/ccc/resource/technical/software/sw_development_suite/group0/63/94/71/38/24/c4/4f/7f/stm32mp1dev_yocto_sdk/files/SDK-x86_64-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17.tar.xz/_jcr_content/translations/en.SDK-x86_64-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17.tar.xz
[6]STM32CubeIDE: https://www.st.com/en/development-tools/stm32cubeide.html#getsoftware-scroll
[7]en.STM32Cube_FW_MP1_V1-5-0.zip: https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32cube-mcu-mpu-packages/stm32cubemp1.html