ST在之前的宣传中称STM32MP13系列是提供基于STM32Cube 的Bare metal裸机和Azure RTOS开发的软件来满足用户实现硬实时应用场景的需求,这一点对我们习惯于使用MCU开发人员来说是非常友好的,可以让开发者在使用MPU强大性能的同时获得类似MCU的开发体验,现在官方提供的LL/HAL驱动和ThreadX全面支持的软件包已经正式发布了,所以趁着这次测评机会进行初步测试一下。
首先需要将STM32CUBEMX升级为6.10.0版本,
新建一个项目,实验目的:实现UART4串口打印功能。
1.打开STM32CUBEMX,选择MP13 Bare Metal
2.配置一下外部时钟
3.由原理图可知串口4是直接和板载STLink的虚拟串口相连的,所以我们配置一下串口4
4.像单片机一样配置生成工程,此处可以看到目前是只支持STM32CubeIDE的。
5.打开我们新建的工程,注意STM32CubeIDE的版本,只有最新的V1.14.0版本是支持STM32MP13 Bare Metal的。
6.官方的例程中已经给出了UART4串口打印的例子,所以我们简单一直一下,去掉关于led驱动的相关程序,编译一下,没有什么问题。
7.正当我以为能够进行烧录调试的时候问题出现了,由于STM32MP135是支持openocd对MPU进行调试的,所以我对调试器进行了如下配置
但是没有烧录成功,出现如下问题
8.于是我又重新部署了一下openocd
openocd -f interface/stlink-dap.cfg -f board/stm32mp13x_dk.cfg
可以监听到,调试器进行重新配置
Debug后显示无法验证ST设备,查了一些资料更改驱动等操作也没有解决。查阅ST官方资料发现是不能支持直接通过STLINK烧写的。
后来想到可以先试一下官方固件库给的例程,于是我试着烧录SD_Ext_Loader这个文件,这个固件是通过串口烧录镜像并从SD卡启动裸机系统。
通过阅读这个例程的readme.txt发现:
- 此固件只能通过UART连接下载,USB DFU协议是不支持的
- 如果想烧写我们自己的程序替换MP13_BSP_TemplatesA7_DISCO_Signed.bin,但是要注意,原文:This is the test application, which will be programmed in SDCard and then loaded in DDR for execution. This can be replaced with any test application used by customer and has to built and properly signed with CubeProgrammer/signing tool ( or via Postbuild script).This user app must be generated with ddr linker(not sysram linker) for compatibility.DDR linker is kept at Drivers\CMSIS\Device\ST\STM32MP13xx\Source\Templates\gcc\linker\stm32mp13xx_a7_ddr.ld can be easily tailored for any customer needs.
接下来实际操作一下
- 将boot模式选择UART BOOT0/1/2 to OFF,注意不能连接USB烧录接口
- 复位重启,打开STM32CubeProgrammer 配置一下串口,连接STLink虚拟串口
连接成功
- 打开tsv文件,和固件地址
- 下载烧录
- 断开连接,boot模式选择SD卡启动BOOT0 and BOOT2 to ON and BOOT1 to OFF
- 重启,本实验现象应该为蓝灯200ms的频率闪烁,可是当我下载完成重启后并没有实现蓝灯的闪烁,我找了其它的例程重新编译下载也没有成功运行。(下面是我的工程配置)
不清楚是哪的姿势不对,断断续续折腾好几天,也没有实现裸机的运行,后面还是要跟着ST官方直播好好的学习一下。有成功运行官方裸机程序的小伙伴希望可以交流学习一下。