DAPLink源码固件编译与制作

2023-12-20 20:52

本文主要是介绍DAPLink源码固件编译与制作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DAPLink源码固件编译与制作


  • ✨这里以Air/stm32f103cbt6固件编译为例。
  • 📌DAPLink源码地址:https://github.com/ARMmbed/DAPLink
  • 🔖 如果不想自己生成,可以使用合宙提供的现成的工程以及固件;https://gitee.com/openLuat/daplink/tree/main,但是需要注意,适配的是216MHz主频。🧨现成的固件下载地址:https://gitee.com/openLuat/luatos-soc-air32f103/tree/master/AIR_Jlink_Keil
    在这里插入图片描述
  • 🔖使用合宙提供的源码工程,还需要拷贝DAPLink源码工程中的version_git.h文件,或者修改对应的宏,否则会报错,找不到头文件。
    version_git.h
  • 📓stm32其他型号制作,可以参考DAPLINK源码生成的Keil工程目录型号列表:
  • 在这里插入图片描述

🈯需要使用到的CMD命令集合

python.exe -m pip install --upgrade pip  --升级pip命令pip install virtualenv  安装虚拟环境virtualenv venv	--创建虚拟环境cd D:\STM32\DAPLink-main\venv	-- 进入虚拟环境文件夹venv/Scripts/activate.bat		-- 执行激活虚拟环境cd D:\STM32\DAPLink-main\		-- 返回主目录pip install -r requirements.txt		-- 安装所需组件progen generate -t uvision		-- 生成Keil工程列表venv/Scripts/deactivate.bat		-- 退出虚拟环境

🛠固件编译前的环境搭建

  • 🌿需要安装Python3,并且将Python路径添加到系统环境变量中。
  • 📍Python下载地址:https://www.python.org/getit/
  • 🌿Windows环境下,Python虚拟环境的搭建::pip install virtualenv 安装虚拟环境
    在这里插入图片描述

  • 🌿在cmd命令提示符窗口内,通过cd命令进入到所下载下来的并解压的DAPLink源码文件夹内:cd D:\STM32\DAPLink-main
    在这里插入图片描述

  • 🌿在.\DAPLink-main源码所在文件夹内,创建虚拟环境:virtualenv venv,会随之创建一个名为venv文件夹。

在这里插入图片描述
在这里插入图片描述

  • 🌿通过cd命令进入到venv文件夹内:
    在这里插入图片描述
  • 🌿执行.\Scripts\activate.bat命令.激活虚拟环境
    在这里插入图片描述

✨上面2个步骤可以合并,直接在DAPLink-main源码所在文件位置,执行.venv\Scripts\activate.bat

  • 🌿f返回源目录:cd D:\STM32\DAPLink-main\;执行:pip install -r requirements.txt,安装所需组件。
    在这里插入图片描述
  • 🌿在DAPLink-main目录下,执行progen generate -t uvision;生成Keil工程列表
    在这里插入图片描述
  • 🌿退出虚拟环境
    在这里插入图片描述
  • ✨在DAPLink-main\projectfiles\uvision路径下的得到下面的工程列表,我们只需要保留其中的2个工程:
    在这里插入图片描述
  • ✨工程说明:
stm32f103xb_bl:Bootload固件,支持拖拽升级
stm32f103xb_stm32f103rb_if:实际实现dap功能的工程
  • 📢烧录完成stm32f103xb_bl.Hex固件后,通过USB(P11,PA12)连接电脑,会出现一个64M的U盘,让后将stm32f103xb_stm32f103rb_if工程生成的Hex文件拷贝到U盘中完成DAPLINK功能升级。

🔨工程编译

  • 🔖以stmAir32F103c8t6为例,型号选择:✨选择stm32/Air32F103C8t6作为对象都可以正常编译。

在这里插入图片描述
在这里插入图片描述

  • 📢由于工程中的头文件路径依赖关系,工程目录结构不能随意移动。(如需拷贝,需要将DAPLink-main目录全部拷贝)
    在这里插入图片描述
  • 🌿options for Target选项- User
    在这里插入图片描述
  • 🌿勾选生成Hex文件
    在这里插入图片描述
  • 🌿相关引脚配置都在IO_Config.h文件中:

在这里插入图片描述
在这里插入图片描述

/*** @file    IO_Config.h* @brief** DAPLink Interface Firmware* Copyright (c) 2009-2016, ARM Limited, All Rights Reserved* SPDX-License-Identifier: Apache-2.0** Licensed under the Apache License, Version 2.0 (the "License"); you may* not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/#ifndef __IO_CONFIG_H__
#define __IO_CONFIG_H__#include "stm32f1xx.h"
#include "compiler.h"
#include "daplink.h"COMPILER_ASSERT(DAPLINK_HIC_ID == DAPLINK_HIC_ID_STM32F103XB);//USB control pin
#define USB_CONNECT_PORT_ENABLE()    __HAL_RCC_GPIOA_CLK_ENABLE()
#define USB_CONNECT_PORT_DISABLE()   __HAL_RCC_GPIOA_CLK_DISABLE()
#define USB_CONNECT_PORT             GPIOA
#define USB_CONNECT_PIN              GPIO_PIN_15
#define USB_CONNECT_ON()             (USB_CONNECT_PORT->BSRR = USB_CONNECT_PIN)
#define USB_CONNECT_OFF()            (USB_CONNECT_PORT->BRR  = USB_CONNECT_PIN)//Connected LED
#define CONNECTED_LED_PORT           GPIOB
#define CONNECTED_LED_PIN            GPIO_PIN_11
#define CONNECTED_LED_PIN_Bit        11//When bootloader, disable the target port(not used)
#define POWER_EN_PIN_PORT            GPIOB
#define POWER_EN_PIN                 GPIO_PIN_15
#define POWER_EN_Bit                 15// nRESET OUT Pin
#define nRESET_PIN_PORT              GPIOB
#define nRESET_PIN                   GPIO_PIN_0
#define nRESET_PIN_Bit               0//SWD
#define SWCLK_TCK_PIN_PORT           GPIOB
#define SWCLK_TCK_PIN                GPIO_PIN_13
#define SWCLK_TCK_PIN_Bit            13#define SWDIO_OUT_PIN_PORT           GPIOB
#define SWDIO_OUT_PIN                GPIO_PIN_14
#define SWDIO_OUT_PIN_Bit            14#define SWDIO_IN_PIN_PORT            GPIOB
#define SWDIO_IN_PIN                 GPIO_PIN_12
#define SWDIO_IN_PIN_Bit             12//JTAG
#define TDO_PIN_PORT                 GPIOA
#define TDO_PIN                      GPIO_PIN_10
#define TDO_PIN_Bit                  10#define TDI_PIN_PORT                 GPIOA
#define TDI_PIN                      GPIO_PIN_9
#define TDI_PIN_Bit                  9//LEDs
//USB status LED
#define RUNNING_LED_PORT             GPIOA
#define RUNNING_LED_PIN              GPIO_PIN_2
#define RUNNING_LED_Bit              2#define PIN_HID_LED_PORT             GPIOA
#define PIN_HID_LED                  GPIO_PIN_6
#define PIN_HID_LED_Bit              6#define PIN_CDC_LED_PORT             GPIOA
#define PIN_CDC_LED                  GPIO_PIN_10
#define PIN_CDC_LED_Bit              10#define PIN_MSC_LED_PORT             GPIOA
#define PIN_MSC_LED                  GPIO_PIN_0
#define PIN_MSC_LED_Bit              0#endif

📚72MHz主频STM32F103编译的固件

  • 🏷由于源工程630M太多不方便分享。进提供相关固件。
📢烧录再啰嗦一遍:可通过STM32 ST-LINK Utility或者STM32CubeProgrammer软件烧录stm32f103xb_bl.Hex,Bootload程序。之后,就不需要以上工具了,再通过USB(PA11,PA12)连接电脑,将出现一个64M的U盘,将stm32f103xb_stm32f103rb_if.Hex文件拷贝到U盘中进行升级成DAPLINK。

在这里插入图片描述

链接:https://pan.baidu.com/s/1NDvg_HMIuZ8lElKROrOsEg 
提取码:gqq2
  • 🔖Keil 选择DAPLINK烧录默认选项界面:
    在这里插入图片描述

📘其他说明

  • ✨针对STM32F103制作DAPLINK,一定要注意,USB D+需要上拉一个1.5K的电阻,否则识别不到USB接口,STM32其他较新出的芯片,不需要此上拉电阻,这一点需要注意。
    在这里插入图片描述
  • 🍁ST-LINK原理图:
    在这里插入图片描述

这篇关于DAPLink源码固件编译与制作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/517467

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、