news 2026/2/2 11:38:02

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/1/29 19:34:45

【C2000系列DSP的反向灌电流】为什么热插拔的时候I2C总线电平会被拉低?

【C2000系列DSP的反向灌电流】为什么热插拔的时候I2C总线电平会被拉低? 一、I2C热插拔总线拉低的核心原因 先明确I2C总线的电气特性:I2C是开漏输出总线,依赖外部上拉电阻(通常1k~10kΩ)拉到VCC,MCU管脚仅能主动拉低总线,释放后由上拉电阻拉高。无防倒灌设计时,热插拔导…

作者头像 李华
网站建设 2026/2/2 6:58:15

软件解耦与扩展:插件式开发方式(基于 C++ 与 C# 的实现)

软件解耦与扩展&#xff1a;插件式开发方式&#x1f914; 什么是插件式开发&#xff1f;&#x1f9e9; 为何选择插件式开发&#xff1f;—— 解耦与扩展的艺术1. 高度解耦2. 极致的扩展性3. 增强可维护性4. 支持动态加载与卸载&#x1f3d7;️ 插件系统的核心架构&#x1f4bb;…

作者头像 李华
网站建设 2026/2/2 10:08:28

免费降AI率的工具红黑榜:认准这2个免费降AI率工具,亲测有效!

2个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华
网站建设 2026/1/30 9:26:20

霍华德·马克斯的市场周期定位技巧

霍华德马克斯的市场周期定位技巧 关键词:市场周期、投资心理学、逆向投资、价值投资、风险控制、资产配置、经济周期 摘要:本文深入探讨了著名投资大师霍华德马克斯(Howard Marks)的市场周期定位技巧。文章从市场周期的基本概念出发,详细分析了马克斯的投资哲学和方法论,包…

作者头像 李华
网站建设 2026/1/23 19:38:30

1500字免费降AIGC率的额度,2026年毕业论文查重必备!

3个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华