本篇介绍STM32MP157D-DK1开发板如何烧录官方固件。
1 开发板基础硬件介绍
1.1 常用接口
板子上的各种接口功如下,本篇固件烧录,主要用的接口包括:
- CN6:供电接口
- B2:复位按键
- CN11:ST-LINK USB(用作串口查看信息)
- CN9:HDMI显示器接口
- CN7:Type-C数据烧录
1.2 Boot开关
烧录固件时,需要插入MicroSD卡,并切换板子上的BOOT开关。
注:此板子上的"Boot 1"连接GND,始终是0
Boot mode | Boot 0 | Boot 1 | Boot 2 |
---|---|---|---|
USB启动用于烧录固件 | 0 | 0 | 0 |
不支持 | 1 | 0 | 0 |
工程启动 | 0 | 0 | 1 |
microSD卡启动 | 1 | 0 | 1 |
烧录时,使用烧录固件模式,烧录完成后,使用microSD卡启动模式。
2 烧录准备工作
2.1 准备的必要的硬件
- Ubuntu虚拟机:搭建烧录软件环境
- STM32MP157D-DK1开发板
- Micro SD卡:烧录到SD卡中
- 5V/3A Type-C电源:供电
- Typc-C数据线:烧录的数据线
- 安卓数据线:串口查看烧录信息
- HDMI显示器:烧录成功后,查看官方固件的Demo
- 鼠标:查看Demo时的鼠标操作
2.2 安装软件STM32CubeProgrammer工具
有Windows和Linux两种,这里介绍在Ubuntu虚拟机的Linux系统中安装的操作步骤。
下载STM32CubeProgrammer软件:https://www.st.com/en/development-tools/stm32cubeprog.html#get-software
解压并安装,解压后会多出一个jre文件夹和两个文件,然后执行SetupSTM32CubeProgrammer-2.15.0.linux文件进行安装:
unzip en.stm32cubeprg-lin-v2-15-0.zip
ls
./SetupSTM32CubeProgrammer-2.15.0.linux
会有界面形式的安装提示:
安装完成后,设置环境变量(可以在准备烧录到时候再临时设置)
export PATH=/home/xxpcb/myTest/STM32MP157/tool/cubeprog/bin:$PATH
2.3 安装USB serial link for flashing
安装一个驱动用于识别开发板的USB烧录接口。
还是在Ubuntu虚拟机中操作:
sudo apt-get install libusb-1.0-0
然后将一些文件拷贝到/etc/udev/rules.d中:
cd ~/myTest/STM32MP157/tool/cubeprog/Drivers/rules
sudo cp *.* /etc/udev/rules.d/
2.4 下载镜像
下载STM32MP1 Starter Package镜像,地址https://www.st.com/en/embedded-software/stm32mp1starter.html#get-software
下载后名为:en.flash-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz
然后拷贝到Ubuntu中并解压:
cd /home/xxpcb/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0/Starter-Package
tar xvf en.flash-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz
二进制文件和 Flash 布局文件位于stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1/ 目录中:
比如STM32MP157D-DK1开发板需要用的就是FlashLayout_sdcard_stm32mp157d-dk1-optee.tsv这个。
3 烧录
3.1 连接板子与电脑
步骤如下:
- 板子插入SD卡
- BOOT拨码开关都拨到0
- 连接电源线(也可最后上电)
- 连接Type-C数据线、安卓数据线
- 按下复位键
- 安卓数据线本篇是串口功能,连接Windows电脑的串口软件,用于查看信息
- Type-C数据线是烧录线,连接Ubintu虚拟机,注意是DFU这一个,如下图
3.2 命令行烧录
进入到下载的固件目录,到达stm32mp1这一级
cd ~/myTest/STM32MP157/STM32MPU-Ecosystem-v5.0.0/Starter-Package/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1
然后可以线查看烧录工具的版本和板子连接信息是否正常:
STM32_Programmer_CLI --h
STM32_Programmer_CLI -l usb
如下可正常打印出来,即为正常:
然后使用如下命令进行烧录:
STM32_Programmer_CLI -c port=usb1 -w flashlayout_st-image-weston/optee/FlashLayout_sdcard_stm32mp157d-dk1-optee.tsv
第一次烧录出现了错误提示:
查看串口打印,发现是电源供电电流不够(我第一次使用的是一个2A的电源):
换用3A的电源重新烧录,另外注意,在开始烧录的时候,板子会被自动重启(复位),需要在虚拟器的USB设置处重新连接USB download这个,否则还是会报错。
烧录需要几分钟时间,· 最后烧录成功后的打印信息如下:
4 演示
https://www.bilibili.com/video/BV1uN41157F7
5 总结
本篇介绍了STM32MP157D-DK1开发板烧录官方固件的详细过程,记录了烧录过程的实际操作结果和中间遇到的问题及解决方法,最后演示烧录后的效果。