news 2026/4/18 0:19:04

DAPLink工程中drag-and-drop programming (MSC)功能配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DAPLink工程中drag-and-drop programming (MSC)功能配置

DAPLink工程中drag-and-drop programming (MSC)功能配置



  • 📍相关篇《DAPLink源码固件编译与制作》
  • 🌿DAPLink开源项目地址:https://github.com/ARMmbed/DAPLink
  • DAPLink接口固件为开发者提供:

拖放编程(MSC)
虚拟串行端口(CDC)
基于CMSIS-DAP的调试(HID)

  • USB磁盘拖放编程

DAPLink调试探针在主机上也会显示为一个USB磁盘。二进制(.bin)和十六进制(.hex)格式的程序文件可以复制到该USB磁盘上,然后这些文件会被编程到目标系统的存储器中。这是通过将闪存编程算法嵌入到接口固件中来实现的。因此,为了使拖放编程能够正常工作,所使用的DAPLink固件版本必须是专门为目标MCU型号构建的,这一点非常重要。

  • daplink工程除了后缀_bl:Bootloader程序外,_MCUMODE_if代表所支持拖放编程(MSC)的MCU型号。

📗创建新的拖放编程(MSC)支持型号的MCU工程

  • 🌾参考https://zhuanlan.zhihu.com/p/483819564
  1. 修改根目录下projects.yaml文件内容,补充如下
stm32f103xb_stm32f401rc_if:-*module_if-*module_hic_stm32f103xb-records/board/stm32f401rc.yaml
  • ⚡这里注意,格式一定要对齐,否则执行生成工程脚本时,会报错:
  1. 在daplink项目的records/board文件夹下,增加新MCU型号信息配置文件
stm32f401rc.yaml

  1. 在daplink项目的source/board文件夹下,新建文件stm32f401rc.c,文件内容为
#include"target_family.h"#include"target_board.h"constboard_info_tg_board_info={.info_version=kBoardInfoVersion,.board_id="0720",.family_id=kStub_HWReset_FamilyID,.target_cfg=&target_device,.board_vendor="STMicroelectronics",.board_name="STM32F401RC",};

  1. \source\family\st目录下,创建对应MCU型号的文件夹:

  2. 从daplink项目的根目录下tools文件夹内,拷贝generate_flash_algo.py文件拷贝到上面新建的MCU型号文件夹内

  3. 再从Keil_v5\ARM\Flash内找到对应的下载算法文件也拷贝到上面新建的MCU型号文件夹内

  • 5 - 6步骤结果:
  1. 在新建的MCU型号文件夹内,打开命令提示符窗口或者bash终端都行,执行下面的命令(前提是已经安装了python):
python generate_flash_algo.py STM32F4xx_256.FLM

  1. 将所生成的文件target_blob.c修改名为flash_blob.c,并修改里面的内容。
  • 🌟✨🌟 脚本生成的flash 扇区大小和划分是有问题的,会导致使用MSC功能时出错,具体的修改,查看对应的MCU型号的参考手册Embedded flash memory interface章节。

    参考手册,对于相关型号MCU的扇区描述截图参考:

MCU型号STM32F401RC,flash是256KB为例,前4个扇区是16KB,第五个扇区是64KB,第六个扇区是128KB,总共加起来就是256KB,具体的填写如下:

staticconstsector_info_tsectors_info[]={{0x08000000,0x00004000},//16KB{0x08004000,0x00004000},//16KB{0x08008000,0x00004000},//16KB{0x0800c000,0x00004000},//16KB{0x08010000,0x00010000},//64KB{0x08020000,0x00020000},//128KB};
  1. 手动添加target.c文件,可以参考其它型号的,并补充flash和ram的容量结尾地址内容:
#include"target_config.h"// The file flash_blob.c must only be included in target.c#include"flash_blob.c"// target informationtarget_cfg_ttarget_device={.version=kTargetConfigVersion,.sectors_info=sectors_info,.sector_info_length=(sizeof(sectors_info))/(sizeof(sector_info_t)),.flash_regions[0].start=0x08000000,.flash_regions[0].end=0x08040000,.flash_regions[0].flags=kRegionIsDefault,.flash_regions[0].flash_algo=(program_target_t*)&flash,.ram_regions[0].start=0x20000000,.ram_regions[0].end=0x20010000,.target_vendor="STMicroelectronics",.target_part_number="STM32F401RCTx",};

不知道大小,可以参考Keil工程的Option for Target...标签页:

  1. 以上步骤工作完成之后,即可在daplink根目录下,生成对应的Keil工程了。
    在daplink项目的根目录,命令提示符窗口或bash窗口内执行以下命令,即可生成对应的工程:
progen generate-f projects.yaml-p stm32f103xb_stm32f401rc_if-t uvision

📙MSC编程方式(drag-and-drop programming)实现说明

✨ 将要烧录的.hex或者.bin文件,通过拖拽或者虚拟U盘烧录目标芯片,这个功能是自带的,使用时需要注意,默认是需要使用DAP-link的RESET复位引脚(默认PB0)连接到的目标MCU的NRST复位引脚上,如果没有连接,只能在拖拽或拷入虚拟盘符后,手动去复位目标芯片,才能完成下载烧录工作,另外一种方法是,在daplink源码工程中的复位函数中,使用ID_DAP_SWJ_Pins命令,复位目标MCU,从而实现SWD,在4线模式下,实现真正的MSC编程。

  • 📌函数位置:\source\hic_hal\stm32\stm32f103xb\DAP_config.h中:
externuint8_tswd_write_word(uint32_taddr,uint32_tval);//引入外部函数__STATIC_FORCEINLINEvoidPIN_nRESET_OUT(uint32_tbit){if(bit&1)nRESET_PIN_PORT->BSRR=nRESET_PIN;else{swd_write_word((uint32_t)&SCB->AIRCR,((0x5FA<<SCB_AIRCR_VECTKEY_Pos)|SCB_AIRCR_SYSRESETREQ_Msk));//补充这一句nRESET_PIN_PORT->BRR=nRESET_PIN;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 14:38:21

AI Phone下的各类App该何去何从

一、先给结论&#xff08;避免焦虑&#xff09;AI Phone 不会消灭 App&#xff0c;但会“肢解”App。 App 将从「用户入口」退化为「能力模块」。也就是说&#xff1a; 入口权 → 被 AI 接管能力权 → App 仍然掌握二、AI Phone 改变了什么&#xff1f;&#xff08;核心机制&am…

作者头像 李华
网站建设 2026/4/17 18:38:27

微观交通流仿真软件:AIMSUN_(22).交通仿真项目管理和实施

交通仿真项目管理和实施 在交通仿真项目中&#xff0c;有效的项目管理和实施是确保项目成功的关键。本节将详细介绍如何在AIMSUN中进行项目管理和实施&#xff0c;包括项目结构、数据管理、模型校准、仿真运行和结果分析等方面的内容。 项目结构 1. 项目文件组织 在AIMSUN中&am…

作者头像 李华
网站建设 2026/4/16 13:15:22

谢飞机的互联网大厂Java面试奇遇记

场景描述 在一家知名互联网大厂的面试室内&#xff0c;面试官刘严肃正要对面前的求职者谢飞机进行技术面试。谢飞机神情轻松&#xff0c;因为他听说这位面试官虽然以严厉著称&#xff0c;但只要答对问题&#xff0c;还是会给予鼓励。 第一轮提问 刘严肃&#xff1a; 我们先从基…

作者头像 李华
网站建设 2026/4/6 23:19:11

Docker 入门指南:从 “容器小白” 到快速上手

1. Docker发展与简介1.1 云服务与虚拟化基础1.1.1 云服务模型介绍云计算 是通过网络为用户提供可伸缩的计算资源。云服务通常分为以下几种类型&#xff1a;IaaS&#xff08;基础设施即服务&#xff09;提供虚拟化计算资源&#xff08;如虚拟机、存储、网络等&#xff09;。用户…

作者头像 李华
网站建设 2026/4/17 12:12:02

【小白笔记】图论(Graph Theory),“二维数组”或“矩阵”

简单来说&#xff0c;**图论&#xff08;Graph Theory&#xff09;**是数学的一个分支&#xff0c;专门研究“点”和“连接点的线”所组成的图形。 在图论中&#xff0c;这种图形被称为图&#xff08;Graph&#xff09;。它不是我们平常在 Excel 里看到的统计图表&#xff0c;而…

作者头像 李华