DAPLINK 之基于 AIR32F103 制作

news/2024/10/15 9:55:25

目录
  • 1 资源
  • 2 生成指定工程
    • 2.1 Setup
    • 2.2 生成工程
  • 3 构建 DAPLink
    • 3.1 构建 stm32f103xb_bl
    • 3.2 编译 stm32f103xb_stm32f103rb_if
  • 4 测试 DAPLINK
  • 参考
  • 附录:STM32 丝印

1 资源

  • 1)官方仓库地址:https://github.com/ARMmbed/DAPLink.git
  • 2)硬件:AIR32F103CBT6

2 生成指定工程

这里以合宙生产的 AIR32F103CBT6 芯片为主。所以可以使用合宙开源仓库:https://gitee.com/openLuat/daplink.git
该仓库当前(2024.9.28)已闭源,但是可以去 github 上搜索别人上传的

2.1 Setup

  • 1)必备工具安装(见官方说明):
    • (1)Python3,并添加 PATH
    • (2)Git,添加 PATH
    • (3)编译器:
        1. GNU Arm Embedded Toolchain(被识别为 gcc_arm)
        1. Arm Compiler 6(被识别为 armclang,且仅支持 Linux 和 Windows)
        1. Keil MDK 或 Arm Compiler 5(被识别为 armcc,且仅支持 Linux 和 Windows)
    • (4)GNU Make,CMake 可以和 ninja 的不同实现一起使用
    • (5)virtualenv

其实,上述的 3~4 步骤中,可使用 CLion + OpenOCD + MinGW/Cygwin 替代(即 CLion 开发 STM32 环境,见其它文章)。

2.2 生成工程

  • 1)由于个人比较习惯 JetBrains CLion,所以这里生成 cmake 工程(在 Windows Terminal 中执行):

    # 1 初始化配置
    git clone https://github.com/ARMmbed/DAPLink.git    
    cd DAPLink
    pip install virtualenv              # 安装 python 虚拟环境
    virtualenv venv                     # 创建虚拟目录# 2 激活 Python 虚拟环境
    venv/Scripts/activate.bat           # 激活虚拟环境(Linux 激活脚本为 activate.bat)
    pip install -r requirements.txt     # 安装 python 依赖# 3 构建
    # 指定开发板类型为 stm32f103xb(否则将生成 DAPLink 支持的所有板子)
    progen generate -t cmake -v -p stm32f103xb_bl                 # bootloader
    progen generate -t cmake -v -p stm32f103xb_stm32f103rb_if     # interface
    # -p,指定项目名,这里可通过 progen list 命令查看支持的项目
    # -t,指定编译工具链,这里可通过 progen generate -t 查看支持的工具链。常用一般就 uvision5, cmake 等# 4 制作完成后,关闭虚拟环境
    venv/Scripts/deactivate.bat# 5 制作完成后,清理工程
    # progen clean -t cmake
    
  • 2)由于生成的项目如下:

if,即 interface,是实现程序烧录的 app,意为 daplink 提供接口,各个 mcu 自己去实现烧录功能;bl,即 bootloader,用来准备工具环境及升级 if。

3.1 构建 stm32f103xb_bl

  • 1)通过 CLion 将 \projectfiles\cmake\stm32f103xb_bl\CMakeLists.txt 文件作为工程打开

arm-none-eabi-gcc 版本为 10.3-2021.10,MinGW 12.0

  • 2)编译:

    • (1)项目打开成功后,编译时如果弹窗要选择打开 .py 文件的程序,则直接选择 python 程序:

    原因:在 stm32f103xb_bl 目录下的 CMakeLists.txt 文件中,在其最下方有两处内容,Windows 下无法直接执行,需要选择可执行程序。

    (2)编译结果:

  • 3)烧录:

    (1)如果使用 ST-LINK,那么选择 OpenOCD 的配置文件选择 st_nucleo_f103rb.cfg 即可(可能需要修改一下 id 号才能正常烧录)

    (2)如果使用 CMSIS-DAP,那么可选择自定义配置文件,内容可如下:

    source [find interface/cmsis-dap.cfg]
    transport select swd
    source [find target/stm32f1x.cfg]
    

    (3)烧录完成后,通过 USB 连接开发板重新上电,“我的电脑” 将出现一个 “MAINTENANCE” 的 U 盘。

备注1:bl 烧录后无法正常启动。
查看 git history 发现,合宙官方在 arm/startup_stm32f103xb.S 文件中添加了一段汇编代码(作用见 luatos-soc-air32f103 项目的 air32f10x_rcc_ex.c)。
将这段代码复制到 gcc/startup_stm32f103xb.S 文件的对应位置即可。

备注2:在烧录 bl 时,最好通过 keil 或 OpenOCD 将 mcu 的 flash 整片擦除掉,否则会因为 bl 无法校验通过而运行失败(原因呢这里先按下不表,算了,还是表了吧,就是因为 bl 运行时会校验 flash 中 app 起始地址的内容,如果不为初始值就不运行 bl)。

3.2 编译 stm32f103xb_stm32f103rb_if

  • 通过同样的方式,将 stm32f103xb_stm32f103rb_if 构建出来

注意:不要直接烧录,而是将 stm32f103xb_stm32f103rb_if.hex “拖拽” 到 “MAINTENANCE” 的 U 盘中,如果 hex 正常的话,该 U 盘名称将变为 “DAPLINK”。

对于 AIR32F103CBT6 来说,bl 烧录完成后,

通过 OpenOCD 手动烧录。

  • 1)连接好 DAPLINK 与 STM32F407 开发板后,以如下方式运行 OpenOCD:
openocd -d2 -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg
  • 2)通过 telnet 127.0.0.1 4444 连接 OpenOCD 服务端,输入以下命令:
> halt
[stm32f4x.cpu] halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x080001e0 msp: 0x2001fff0
>
>
> flash write_image erase "/path/to/jlcsky031_blink.hex"
device id = 0x101f6413
flash size = 512 KiB
auto erase enabled
wrote 16384 bytes from file /path/to/jlcsky031_blink.hex in 0.806117s (19.848 KiB/s)
>
>
> reset

参考

  • 开发者指南:https://github.com/ARMmbed/DAPLink/blob/main/docs/DEVELOPERS-GUIDE.md

  • DAPLink源码生成Keil工程并编译成功:https://blog.csdn.net/Pakin_Wu/article/details/127293806

  • DAPLINK 移植(一):https://blog.csdn.net/m0_37636212/article/details/124980698

  • DAPLINK 移植(二):https://blog.csdn.net/m0_37636212/article/details/124981472

  • DAPLINK 移植(三):https://blog.csdn.net/m0_37636212/article/details/124983124

附录:STM32 丝印

1)手里面有两个 STM32F103RCT6 的板子,烧录时检测 FLASH 大小时有一片总出错(同样由于无法读取,默认 FLASH 为 512 KB),研究一下芯片上的信息:

  • (1)第一行:ARM 代表 ARM 内核。后面的 X 代表 ST 版本:X,最终版;3,表示还要升级版本
  • (2)第二、三行:型号。其中 RCT6 的含义如下表:
字符 含义 取值范围
R Pin count K = 32 pins
C = 48/49 pins
R = 64 pins
M = 80 pins
V = 100 pins
C Code size 6 = 32 KB
8 = 64 KB
B = 128 KB
C = 256 KB
D = 384 KB
E = 512 KB
T Package I = UFBGA
T = LQFP
U = UFQFPN
Y = WLCSP
6 Temperature range 6 = Industrial temperature range, - 40 to 85 °C (105 °C junction)
3 = Industrial temperature range, - 40 to 125 °C (130 °C junction)
  • (3)第四行:出厂编号
  • (4)第五行:产地和生产时间:
    • MYS:马来西亚;CHN:中国 CHINA;
    • 544、539:分别表示 2015 年的 44 周 和 39 周

2)使用 ST-Link Utility 去读取两个芯片信息:前者可以读取到 FLASH 为 256 KB,后者却无法读取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/71728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

DAPLINK 之仿真调试器介绍

目录前言1 协议1.1 JTAG 协议1.2 SWD 协议2 调试仿真器2.1 ST-Link 仿真器2.2 ULink 仿真器2.3 J-Link 仿真器2.4 DAPLINK 仿真器3 LINKer 搭配 CLion 的使用3.1 ST-Link + CLion + STM32F103RCT63.2 DAPLINK + CLion + STM32F103RCT6参考 前言本文算是 DAPLINK 学习的一个引子…

VU9P处理板设计原理图:412-基于单XCVU9P+双DSP C6678的双FMC接口 100G光纤传输加速计算卡

基于单XCVU9P+双DSP C6678的双FMC接口 100G光纤传输加速计算卡一、板卡概述 板卡包括一片Xilinx FPGA XCVU9P,两片 TI 多核DSP TMS320C6678及其控制管理芯片CFPGA.设计芯片满足工业级要求。 FPGA VU9P 需要外接4路QSFP+(100Gbps)及其两个FMC HPC接口。DSP需要外接两路千兆以太…

信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用

在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)作为一个基础概念,在量化概率分布差异方面发挥着关键作用。它常用于衡量当一个概率分布用于近似另一个概率分布时的信息损失。本文将深入探讨KL散度及其他相关的重要散度概念。KL散度 KL散度,也称为相对熵,…

聊聊如何实现一个特别的责任链

前言什么是责任链责任链是一种设计模式,它让多个对象有机会处理同一个请求,这些对象形成一个链。请求从链的一端开始,逐个传递给链上的对象,直到某个对象处理它或者请求未被处理。这样,发送请求者无需知道哪个对象会处理,实现了发送者与接收者的解耦,增加了系统的灵活性…

修改网站源代码的步骤

修改网站源代码通常涉及以下几个步骤:备份现有代码:在进行任何更改之前,确保对当前的源代码进行完整备份。这有助于在出现问题时恢复到修改前的状态。获取源代码:通过FTP/SFTP、Git或其他版本控制系统将网站源代码下载到本地计算机上。分析需求:明确你需要做出哪些具体修改…

宝塔面板添加网站

宝塔面板是一款非常流行的服务器管理软件,它可以帮助用户方便地管理服务器上的网站、数据库、域名等资源。要在宝塔面板上添加一个新的网站,你可以按照以下步骤操作:登录宝塔面板:打开浏览器,输入宝塔面板的IP地址加上端口号(默认为8888)。 输入用户名和密码登录。进入网…

SQLSTATE[HY000] [1045]Access denied for user

遇到 SQLSTATE[HY000] [1045] Access denied for user 这个错误通常表示MySQL拒绝了用户的访问请求,通常是由于用户名或密码不正确导致的。以下是一些解决此问题的步骤:检查用户名和密码确认你使用的用户名和密码是否正确。 尝试在MySQL命令行工具中直接登录以验证。重置密码…

请问公司网站改版方案有哪些?企业网站改版需要注意什么

用户体验优化简化导航结构,使用户更容易找到所需信息。 提升页面加载速度,减少用户等待时间。 优化移动设备访问体验,确保网站在手机和平板上也能良好展示。视觉设计更新采用现代设计风格,提升品牌形象。 调整色彩搭配和字体样式,增强视觉吸引力。 引入高质量图片和视频,…