DAPLink也带有虚拟串口 web-usb U盘拖拽下载功能
DAPLink电路 GitHub ARM官方
https://github.com/ARMmbed/mbed-HDK-Eagle-Projects
DAPLink源码 GitHub ARM官方 开发文档
https://github.com/ARMmbed/DAPLink/blob/master/docs/DEVELOPERS-GUIDE.md
淘宝买的Daplink
http://www.eemaker.com/daplink-data.html 资料在这
别人把DAPLink移植到STLink上
https://bh3nvn.github.io/2019/05/DAPLink2STlink/
要 python
git
mdk
这几个软件
git clone https://github.com/mbedmicro/DAPLink // git 克隆官方项目下来 cd DAPLink // 进入这个项目 pip install virtualenv // 安装 virtualenv(假如pythen已经安装了virtualenv这个环境,可以直接跳过这条指令) virtualenv venv git clone https://github.com/mbedmicro/DAPLink cd DAPLink pip install virtualenv virtualenv venv // 运行 venv\Scripts\activate.bat // 安装需要的依赖包 pip install -r requirements.txt 编译输出全部目标版文件 progen generate -t uvision 编译输出局部目标板文件 progen generate -p stm32f103xb_bl -t uvision // bootloader文件 需要编译后烧录到目标板 progen generate -p stm32f103xb_stm32f103rb_if -t uvision // _if_crc.bin文件 需要把nRST引脚接地插入目标板试别成U盘再考进去,再上啦nRST即可 nRst不是单片机的自身复位 |
通过MDK打开目标板的工程文件,记住,换工程的时候不能关闭这个命令打开的MDK,只能在这个MDK中openProject
tools\launch_uvision.bat
这一步可能会报错, 因为每个人的MDK安装路径不一样, 打开这个文件 修改安装路径即可 DAPLink\tools\launch_uvision.bat 文件
编译的过程中。可能也会报错 python3
DAPLink\tools\flash_algo.py 文件中的 StringIO 改为 io 还有 StringIO.StringIO(data) 改为 io.StringIO(data)
DAPLink\tools\post_build_script.py 文件中 0xffffffffL 改为 0xffffffff
编译完 _bl 文件 直接通过MDK烧录到目标板中 拔掉目标板, 将nRST下拉 插入 会试别为U盘
编译 _if 文件 将 _if_crc.bin 结尾的文件考到U盘中 拔掉U盘 nRST上拉 完成
1 | venv\Scripts\deactivate.bat |
遇到问题2 fromelf 路径不正确
由于我安装MDK时,路径不是默认的,路径有修改过,有可能出现fromelf 找不到,最后导致生成不了bin文件
解决方法:路径 找到 ...\tool\post_build_script.bat 文件,按照以下内容修改
@REM add fromelf to PATH
::@set PATH=%KEIL_ARM%\ARMCC\bin;%path% ::原文件路径
@set PATH=D:\Program Files\Keil_v5\ARM\ARMCC\bin;%path% ::修改自己安装的路径
完成
//-----------------------------------------------------------------------------------------------------------------------------
最后整理流程:
1.官方硬件原理图:mbed-HDK-Eagle-Projects
2.官方源码github库:DAPLink
在某个目录运行git bash cmd窗口,复制以下命令,拉取github工程文件并生成工程
##git clone https://github.com/mbedmicro/DAPLink
git clone https://github.com/ARMmbed/DAPLink
cd DAPLink
pip install virtualenv
virtualenv venv
venv/Scripts/activate.bat
pip install -r requirements.txt
progen generate -f projects.yaml -p stm32f103xb_bl -t uvision
progen generate -f projects.yaml -p stm32f103xb_stm32f103rb_if -t uvision
可以在DAP_Config.h 修改自己的硬件参数,官方程序STM32F103C8 运行不了
SWD只使用两根线,不使用nRESET脚,在MDK软件勾选了Reset and Run后,DAPlink的 SWD下载后不能软件复位
手动增加DAPlink 自动软件复位功能,查找 PIN_nRESET_OUT 函数,改成以下(引用博客网址)
extern uint8_t swd_write_word(uint32_t addr, uint32_t val);
__STATIC_FORCEINLINE void PIN_nRESET_OUT(uint32_t bit)
{
if (bit & 1)
nRESET_PIN_PORT->BSRR = nRESET_PIN;
else
nRESET_PIN_PORT->BRR = nRESET_PIN;
if(bit == 0)
{
swd_write_word((uint32_t)&SCB->AIRCR, ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | SCB_AIRCR_SYSRESETREQ_Msk));
}
}
编译stm32f103xb_bl 工程,这个工程是bootloader工程
编译stm32f103xb_stm32f103rb_if 工程,这个是固件工程#1.首先烧写bootloader工程
- 用J-Flash(或者ISP)烧写固件中“stm32f103xb_bl_crc.hex”
#2.确定目标板型号这里以f103为例,更新固件
- 按下DAPLINK上的按键,再插上USB,直到会识别出来一个名字为MAINTENANCE的u盘。
- 然后把固件工程中的“stm32f103xb_stm32f103rb_if_crc.hex”拷贝到U盘中。
- 然后重新插上USB就可以正常使用了- 当出现DAPLINK 盘就代表你DIY成功了
注意:芯片型号一定要选择正确
(如果选择了有crc校验下载的,建议使用两个都是CRC结尾的hex文件)
原版文档(以下都是)
DAPLink 开发人员指南
设置
DAPLink 源代码是使用progen
(来自project-generator)编译的,可以在 Linux、MacOS 和 Windows 上运行。
安装下面列出的必要工具。跳过已经存在兼容工具的任何步骤。
- 安装Python 3。添加到路径。
- 安装Git。添加到路径。
- 安装编译器:
- GNU Arm 嵌入式工具链。此编译器将被标识为
gcc_arm
. - ARM 编译器 6 . 此编译器将被标识为
armclang
. 仅在 Linux 和 Windows 上受支持。 - Keil MDK或Arm 编译器 5。此编译器将被标识为
armcc
. 仅在 Linux 和 Windows 上受支持。
- GNU Arm 嵌入式工具链。此编译器将被标识为
- 安装
make
(使用GNU Make测试)。CMake也可以与 ninja 的不同实现make
结合使用。 - 在全局 Python 安装中安装 virtualenv,例如:
pip install virtualenv
.
步骤 1.初始设置。
获取资源并创建虚拟环境
git clone https://github.com/mbedmicro/DAPLink
cd DAPLink
pip install virtualenv
virtualenv venv
激活虚拟环境
步骤 2.激活虚拟环境并更新要求。当您打开一个新的 shell 时,这是必要的。每次拉取新更改时都应该这样做
$ venv/Scripts/activate (For Linux)
$ venv/Scripts/activate.bat (For Windows)
(venv) $ pip install -r requirements.txt
$(For Windows)
venv/Scripts/activate.bat
pip install -r requirements.txt
建造
每次拉取新更改时都应该这样做
有两种构建 DAPLink 的方法。您可以使用progen
项目生成器中的命令行工具或tools/progen_compile.py
包装器工具。
步骤 3.1。使用progen_compile.py
(venv) $ python tools/progen_compile.py [-t <tool>] [--clean] [-v] [--parallel] [<project> [<project> ...]]
-t <tool>
:选择要构建的工具链。默认值为make_gcc_arm
. 测试的其他选项是make_gcc_arm
,make_armclang
,make_armcc
,cmake_gcc_arm
,cmake_armclang
,cmake_armcc
。--clean
: 将清除现有的编译产品并强制重新编译所有文件。-v
:将使编译过程更加冗长(通常列出所有命令及其参数)--parallel
:启用项目内的并行编译(项目按顺序编译)。<project>
:要编译的目标项目(例如stm32f103xb_bl
,lpc11u35_if
),如果没有指定所有(140到150)项目将被编译。
步骤 3.2。与progen
_make
以下命令结合了生成和编译:
(venv) $ progen generate -t make_gcc_arm -p <project> -b
或者,可以将这些任务分开:
(venv) $ progen generate -t make_gcc_arm -p <project>
(venv) $ make -C projectfiles/make_gcc_arm/<project> [<target>] [VERBOSE=1]
在哪里:
<project>
:要编译的目标项目(例如stm32f103xb_bl
,lpc11u35_if
)。<target>
: 构建目标,可以是all
,clean
或help
。VERBOSE=1
: 显示额外的编译信息。
步骤 3.3。与progen
_cmake
以下命令结合了生成和编译:
(venv) $ progen generate -t cmake_gcc_arm -o generator=<generator> -p <project> -b
<generator>
CMake
:在以下选项中 使用生成器:make
(Unix Makefiles
)mingw-make
(MinGW Makefiles
)msys-make
(MSYS Makefiles
, 未经测试)ninja
(Ninja
)nmake
(NMake Makefiles
)
<project>
:要编译的目标项目(例如stm32f103xb_bl
,lpc11u35_if
)。
步骤 3.4。用于MDKprogen
编译。
该命令在该projectfiles/uvision
目录下生成 MDK 项目文件。
$ progen generate -t uvision
要仅生成一个特定项目,请使用如下命令:
progen generate -f projects.yaml -p stm32f103xb_stm32f746zg_if -t uvision
这些选项用于progen
设置参数:
-f
对于输入项目文件-p
为项目名称-t
指定 IDE 名称
贡献
我们很想得到你的改变!一旦变更集重新基于 main,就应该发出拉取请求。有关贡献的详细要求和指南,请参阅贡献指南。
港口
DAPLink 可以通过三种已定义的方式进行扩展。这些是添加目标支持、添加板支持和添加 HIC 支持。可以在下面找到有关移植其中每一个的详细信息。
测试
DAPLink 有大量用 Python 编写的自动化测试。它们用于回归测试,但您可以使用它们来验证您的 DAPLink 端口。详情在这里
在 uvision 和 mbedcli 构建文件夹中搜索 daplink 固件构建的选项。 python test/run_test.py --project-tool make_gcc_arm ...
或python test/run_test.py --project-tool uvision ...
。
发布
发布使用progen_compile.py
- 使用正确的发布版本创建标签并将其推送到 github
- 通过运行 'git clean -xdf' 然后运行 'git reset --hard' 来清理你将要构建的 repo
progen_compile.py
使用以下参数运行命令(有关-t
标志,请参见上文):
(venv) $ python tools/progen_compile.py [-t <tool>] --clean -v --parallel --release
- 所有发布的可交付成果都将被创建并存储在
firmware_<version>
(<version>
DAPLink 版本在哪里)。将其保存在存储构建的任何位置。
使用 uvision 发布
DAPLink 包含用于自动执行构建版本的大部分步骤的脚本。除了构建版本之外,这些脚本还保存了相关的构建信息,例如 git SHA 和 python 工具版本,因此可以复制相同的构建。创建发布的推荐步骤如下。
- 使用正确的发布版本创建标签并将其推送到 github
- 通过运行 'git clean -xdf' 然后运行 'git reset --hard' 来清理你将要构建的 repo
- 运行脚本
build_release_uvision.bat
以创建所有构建。 - 所有发布的可交付成果都将创建并存储在“uvision_release”中。将其保存在存储构建的任何位置。
注意:可以使用该构建的 复制以前build_requirements.txt
的构建。为此,在步骤 2 中build_requirements.txt
调用时添加附加参数build_release_uvision.bat
。这将使用用于创建该构建的 python 包的确切版本进行安装和构建。
MDK
如果您想使用 MDK (uVision) IDE 来处理 DAPLink 代码,您必须在正确的环境中启动它。否则项目将无法构建。要正确启动 uVision,请使用tools/launch_uvision.bat
这个脚本可以接受参数来覆盖默认的虚拟环境和要安装的 python 包。例如tools\launch_uvision.bat other_env other_requirements.txt