使用DAP-Link单独下载可执行文件到MM32F5微控制器

suyong_yq,2022年5月

文章目录

  • 使用DAP-Link单独下载可执行文件到MM32F5微控制器
    • 引言
    • 借用Keil工程
    • 使用Ozone

引言

使用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没有将内部的下载工具独立地开放出来,因此,笔者不得不创建一个不包含任何源码的空工程,跳过编译部分,仅使用其中下载程序的功能。具体操作步骤如下:

  1. 启动Keil IDE,创建新工程,并选定设备类型为目标微控制器设备。

笔者实际在本机的d:\_worksapce\keil\mm32f5目录下,创建了mm32f5.uvprojx工程文件。

图x 在Keil IDE中创建新工程

  1. options -> Output 选项卡中,指定将要下载的可执行文件的路径。

在样例中,笔者在mm32f5目录下,存放了micropython.hex文件。点击Select Folder for Objects...按钮,指定为mm32f5目录,然后在Name of Executable:对应的文本框中输入了micropython.hex文件名。

图x 在Keil工程中指定下载文件的路径及文件名

从字面上看,这里指定的是编译输出的路径和文件名,但实际上,下载过程是同编译过程绑定的,编译过程生成的可执行文件,将被Keil自动作为下载过程的输入文件。

  1. 在主窗口的工具栏中,单击LOAD按钮,启动下载。

图x 在Keil工程中下载可执行文件到微控制器

通过 Build Output窗口可以查看到,当前已经擦除、下载并且校验成功。

  1. 使用Keil IDE也可以实现命令行式的下载操作。

此时,可将使用Keil IDE创建的工程视作uv4.exe程序的配置文件,例如,在之前创建的mm32f5.uvprojx文件中,编辑OutputDirectoryOutputName字段,指定将要下载程序的路径和文件名。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd"><SchemaVersion>2.1</SchemaVersion><Header>### uVision Project, (C) Keil Software</Header><Targets><Target><TargetName>Target 1</TargetName><ToolsetNumber>0x4</ToolsetNumber><ToolsetName>ARM-ADS</ToolsetName><uAC6>1</uAC6><TargetOption><TargetCommonOption><Device>MM32F5277E9P</Device><Vendor>MindMotion</Vendor><PackID>MindMotion.MM32F5277E_DFP.0.0.3</PackID><PackURL>http://www.mindmotion.com.cn/Download/MDK_KEIL/</PackURL><Cpu>IRAM(0x30000000,0x1C000) IROM(0x08000000,0x40000) CPUTYPE("Cortex-M33") CLOCK(12000000) ELITTLE</Cpu><FlashUtilSpec></FlashUtilSpec><StartupFile></StartupFile><FlashDriverDll>UL2V8M(-S0 -C0 -P0 -FD30000000 -FC1000 -FN1 -FF0MM32F5270_256 -FS08000000 -FL040000 -FP0($$Device:MM32F5277E9P$Flash\MM32F5270_256.FLM))</FlashDriverDll>...<OutputDirectory>.\</OutputDirectory><OutputName>micropython.hex</OutputName>...

然后在Windows的命令行界面,输入调用Keil下载代码的命令:

uv4.exe -f "d:\_workspace\keil\mm32f5\mm32f5.uvprojx" -j0 -o "d:\_workspace\keil\mm32f5\download_log.txt"

图x 在命令行中调用Keil下载过程

使用命令行方式有一点不方便,命令行在后台调用Keil执行下载过程没有任何用户交互。命令行触发执行uv4.exe程序不是阻塞式的,所以无法通过程序是否返回判定下载过程已结束。虽然在命令中指定输出log到指定文件中,但Keil并不是在下载结束后才创建输出文件,而是逐条写入输出文件。如果用户在下载过程中打开这个log输出文件,将会看到已经执行的部分操作。因此,也不能通过是否创建log输出文件判定已将下载成功。必须检查log输出文件的内容,待其中包含下载成功并通过验证的记录后,才能最终判定下载情况。

使用Ozone

常用J-Link调试器的开发者对Ozone都不陌生。Ozone和J-Link都是SEGGER公司设计发布的面向调试和下载应用的工具,Ozone是一套具有图形界面的上位机工具,可以适配J-Link调试器,独立下载可执行文件到目标微控制器并进行调试。但实际上,Ozone除了适配自家发售的J-Link调试器外,还提供了对开源CMSIS-DAP(DAP-Link)的支持,即使用Ozone通过DAP-Link连接到目标微控制器,也能够实现独立下载而执行文件并调试的功能。不过,Ozone支持DAP-Link毕竟只是额外的福利,几乎每个步骤都会弹窗提示,“这只是个试用功能,未经过充分测试”。

使用Ozone适配DAP-Link的操作同使用J-Link的情况相同,具体步骤如下:

  1. 启动Ozone软件,选择目标微控制器设备。

刚启动Ozone软件时,Ozone会自动检测到当前电脑上已经接入了DAP-Link调试器,然后提示警告“必须接受如下条款:1. 当前软件仅适用非商业用途或评估;2. SEGGER官方不会提供技术支持”。选择接受“Accpet”。

图x 启动Ozone

  1. 选择目标微控制器设备。

当确认目标微控制器设备后,警告提示对话框会再次弹出。仍然是接受“Accept”。

图x 在Ozone中选择目标设备

  1. 在“连接配置”对话框中,可以看到已经识别出来的DAP-Link了。

Ozone连接调试器的速度,在默认情况下被配置成4MHz。笔者手上的DAP-Link方案中,使用的是低速USB接口,考虑稳妥的情况,将速度改为1MHz。

图x Ozone显示识别出的DAP-Link调试器

  1. 选择将要下载的可执行文件

图x 选择将要下载的可执行文件

  1. 开始下载。

再次弹出提示对话框。选择接受“Accept”。

再次弹出提示对话框。选择接受“Yes”。

图x 启动下载确认第二次警告

  1. 下载成功

图x 使用Ozone下载成功

如果对频繁弹出的警告对话框不喜,可勾选“不要重复弹出”复选框,有一定改善效果。

使用DAP-Link单独下载可执行文件到MM32F5微控制器相关推荐

  1. 手工打造基于MM32F5微控制器的MicroPython开发板

    手工打造基于MM32F5微控制器的MicroPython开发板 苏勇,2022-07-21 文章目录 手工打造基于MM32F5微控制器的MicroPython开发板 引言 MM32F5微控制器简介 制 ...

  2. 在MM32F5微控制器上使用外扩SRAM作为主内存

    在MM32F5微控制器上使用外扩SRAM作为主内存 苏勇,2022年8月 文章目录 在MM32F5微控制器上使用外扩SRAM作为主内存 引言 硬件电路 软件设计 使用bootloader初始化硬件环境 ...

  3. 高翔博士SLAMBOO2十二讲代码库中的三方库没有下载下来 ,需要手动对三方库单独下载的git的命令如下

    高翔博士SLAMBOO2十二讲代码库中的三方库没有下载下来 git clone --recursive https://github.com/gaoxiang12/slambook2.git 需要手动 ...

  4. github单独下载某个文件或文件夹

    首先下载tortoiseSVN,安装好之后打开github项目的地址,例如https://github.com/rbgirshick/fast-rcnn 单独下载某个文件夹: 如果只需要下载tools ...

  5. 〖Linux〗简单的将Shell和一些文件打包成一个单独的“可执行文件”

    有时候给别人分享一个工具的时候,同时需要提供的文件比较多: 如果分享一个压缩包还得教会对方如何解压.执行哪个脚本,感觉需要传输的内容多了就不方便: 把几个Shell脚本和文件打包成一个"单独 ...

  6. FPGA单独下载固化文件的解决方案

    对于FPGA工程师除了日常的调试工作以外,批量生产时候指导生成人员下载我们生成的固化文件也是我们的工作,所以今天讲一讲FPGA单独下载<固化文件>的几种方式. 批量生产-先下载后焊接 批量 ...

  7. outlook单独下载_在单独的Windows中打开不同的Outlook功能以提高生产率

    outlook单独下载 If you work in Outlook for much of the workday, you may find it annoying having to navig ...

  8. 谷歌浏览器单独下载插件文件crx到本地的方法步骤

    描述:谷歌浏览器单独下载插件文件crx到本地的方法步骤 步骤: 打开网站,搜索插件名称 https://www.crx4chrome.com/ 进入详情页,点击Download crx file fr ...

  9. 在线创建GitHub资源下载链 单独下载某个文件夹

    介绍: 本工具可以单独下载某个 GitHub 仓库中的文件夹,而无需将整个仓库下载下来. 使用方法: 打开 Github 仓库,点击进入要下载的文件夹,然后复制浏览器 地址栏的地址,粘贴到上面的输入框 ...

最新文章

  1. 正确debug的TensorFlow的姿势
  2. 数据结构-Hash总结(二)
  3. JS中深浅拷贝 函数封装代码
  4. MySQL2索引优化
  5. linux词语大全,简单词语大全二字学习软件-简单词语大全四字下载v1.5.3-Linux公社...
  6. 【剑指Offer】07变态跳台阶
  7. php练习——打印半金字塔、金字塔、空心金字塔、菱形、空心菱形
  8. dj清风试听云盘地址
  9. 大前研一:聪明人必作的十件事
  10. python实现火车票查询工具_用 Python 写一个命令行火车票查看器
  11. 常用的计算机优化软件有哪些,计算机常用的硬件和软件优化软件和优化方法有哪些,如何提高WindowsXP系统的运行速度和稳定性...
  12. Ensemble Learning中的Bagging和Boosting
  13. 保健文汇杂志保健文汇杂志社保健文汇编辑部2022年第36期目录
  14. 入职一家初创公司第一周的血与泪
  15. Java项目:JSP中华传统美食网站平台管理系统
  16. 装系统计算机丢失msi,msi电脑一键重装系统win10详细步骤
  17. Python数据挖掘项目:构建随机森林算法模型预测分析泰坦尼克号幸存者数据
  18. Mongdb重启后dirty很高,cache打满
  19. [vue2] 图片标记器
  20. [Codewar训练]Conway's Game of Life - Unlimited Edition(康威生命游戏)

热门文章

  1. Unity游戏开发笔记(一)2D Hippo’s adventure
  2. SqlServer 索引及优化
  3. 将xacro格式文件转换为urdf格式并对其进行检查格式,并生成机器人模型的结构图
  4. docker+kubernets-蔡超-专题视频课程
  5. “餐饮+” 的困境及解决方案
  6. Javascript BOM DOM编程
  7. 小学计算机京剧脸谱教案,小学京剧脸谱美术教案.doc
  8. 写个微信小程序过中秋
  9. 逻辑思维不好能学java吗_没思维能力怎么学java?
  10. 贝玲妃发力“男颜经济”,LVMH旗下五大事业部将齐聚天猫