使用DAP-Link单独下载可执行文件到MM32F5微控制器
suyong_yq,2022年5月
引言
使用Keil MDK或者IAR等使用图形界面的开发环境,可以在图形界面环境下编译源码工程,并下载编译生成的可执行文件到目标微控制器中。但若使用ARMGCC等命令行工具链,需要额外的下载工具,才能将编译生成的可执行文件下载到目标微控制器中。
若使用SEGGER J-Link调试器,可以搭配SEGGER Ozone软件或者J-FLASH、J-FLASH Lite实现单独下载的功能。但J-Link调试器价格昂贵,并且老版本的J-LINK调试器无法支持更新的微控制设备。相比而言,开源的DAP-Link方案更接地气。可以适配DAP-Link的命令行工具有openocd、pyocd等,但这些工具对某些具体微控制器设备的兼容性并不是很好,时不时会出现不识别设备或者连接不上的情况,需要开发者自行调试才能确保它们能够正常工作。同时,基于命令的操作方式,对于已经习惯了在图形界面环境下调试的开发者而言,也不是很友好。不过,若是需要搭建持续集成和自动化测试系统,这些基于命令行的工具仍是不可或缺的。
对于仅专注于微控制器端的软件开发者而言,希望能够以最简单的方式解决单独下载可执行文件的问题。本文将以下载MicroPython固件文件到灵动MM32F5微控制器为例,总结了几种简单易用的方法,专门针对使用DAP-Link调试器的情况,通过常用图形界面工具,实现单独下载可执行文件的功能。
PS:针对MM32F5微控制器,不得不使用本文描述方法的原因,还在于一些主观因素:
- 笔者手头上的J-Link v8不再支持STAR-MC1(Arm Cortex-M33)内核
- 笔者使用pyocd+DAP-Link的组合,经过一段时间的调试,仍无法实现连接到MM32F5微控制器
- 使用DAP-Link在Keil中可以调试MM32F5微控制器
使用这些工具可以识别常用的可执行文件类型,例如bin、hex、axf、elf、s19等。用户可根据需要尝试。
借用Keil工程
Keil IDE实现下载功能的部分,相对于编译过程,在内部应该也是一个独立的小工具,这是笔者得以实现用Keil下载程序的关键。Keil没有将内部的下载工具独立地开放出来,因此,笔者不得不创建一个不包含任何源码的空工程,跳过编译部分,仅使用其中下载程序的功能。具体操作步骤如下:
- 启动Keil IDE,创建新工程,并选定设备类型为目标微控制器设备。
笔者实际在本机的d:\_worksapce\keil\mm32f5目录下,创建了mm32f5.uvprojx工程文件。

- 在
options->Output选项卡中,指定将要下载的可执行文件的路径。
在样例中,笔者在mm32f5目录下,存放了micropython.hex文件。点击Select Folder for Objects...按钮,指定为mm32f5目录,然后在Name of Executable:对应的文本框中输入了micropython.hex文件名。

从字面上看,这里指定的是编译输出的路径和文件名,但实际上,下载过程是同编译过程绑定的,编译过程生成的可执行文件,将被Keil自动作为下载过程的输入文件。
- 在主窗口的工具栏中,单击LOAD按钮,启动下载。

通过 Build Output窗口可以查看到,当前已经擦除、下载并且校验成功。
- 使用Keil IDE也可以实现命令行式的下载操作。
此时,可将使用Keil IDE创建的工程视作uv4.exe程序的配置文件,例如,在之前创建的mm32f5.uvprojx文件中,编辑OutputDirectory和OutputName字段,指定将要下载程序的路径和文件名。

本文介绍使用DAP-Link单独下载可执行文件到MM32F5微控制器的方法。使用ARMGCC等工具需额外下载工具,DAP-Link开源但部分工具兼容性不佳。文中以MicroPython固件文件为例,介绍借用Keil工程和使用Ozone两种简单易用的图形界面下载方法。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



