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
这几个软件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
git clone https://github.com/mbedmicro/DAPLink // git 克隆官方项目下来 cd DAPLink // 进入这个项目 pip install virtualenv // 安装 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 |
完成
//-----------------------------------------------------------------------------------------------------------------------------
最后整理:
官方硬件原理图:mbed-HDK-Eagle-Projects
官方源码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烧写固件中“stm32f103xb_bl_crc.hex”
#2.确定目标板型号这里以f103为例,更新固件
- 按下DAPLINK上的按键,再插上USB,直到会识别出来一个名字为MAINTENANCE的u盘。
- 然后把固件工程中的“stm32f103xb_stm32f103rb_if.hex”拷贝到U盘中。
- 然后重新插上USB就可以正常使用了
原版文档
DAPLink 源代码是使用progen
(来自project-generator)编译的,可以在 Linux、MacOS 和 Windows 上运行。
安装下面列出的必要工具。跳过已经存在兼容工具的任何步骤。
gcc_arm
.armclang
. 仅在 Linux 和 Windows 上受支持。armcc
. 仅在 Linux 和 Windows 上受支持。make
(使用GNU Make测试)。CMake也可以与 ninja 的不同实现make
结合使用。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
每次拉取新更改时都应该这样做
有两种构建 DAPLink 的方法。您可以使用progen
项目生成器中的命令行工具或tools/progen_compile.py
包装器工具。
步骤 3.1。使用progen_compile.py
(venv) $ python tools/progen_compile.py [-t ] [--clean] [-v] [--parallel] [ [ ...]]
-t
:选择要构建的工具链。默认值为make_gcc_arm
. 测试的其他选项是make_gcc_arm
, make_armclang
, make_armcc
, cmake_gcc_arm
, cmake_armclang
, cmake_armcc
。--clean
: 将清除现有的编译产品并强制重新编译所有文件。-v
:将使编译过程更加冗长(通常列出所有命令及其参数)--parallel
:启用项目内的并行编译(项目按顺序编译)。
:要编译的目标项目(例如stm32f103xb_bl
,lpc11u35_if
),如果没有指定所有(140到150)项目将被编译。步骤 3.2。与progen
_make
以下命令结合了生成和编译:
(venv) $ progen generate -t make_gcc_arm -p -b
或者,可以将这些任务分开:
(venv) $ progen generate -t make_gcc_arm -p
(venv) $ make -C projectfiles/make_gcc_arm/ [] [VERBOSE=1]
在哪里:
:要编译的目标项目(例如stm32f103xb_bl
,lpc11u35_if
)。
: 构建目标,可以是all
,clean
或help
。VERBOSE=1
: 显示额外的编译信息。步骤 3.3。与progen
_cmake
以下命令结合了生成和编译:
(venv) $ progen generate -t cmake_gcc_arm -o generator= -p -b
CMake
:在以下选项中 使用生成器:
make
( Unix Makefiles
)mingw-make
( MinGW Makefiles
)msys-make
( MSYS Makefiles
, 未经测试)ninja
( Ninja
)nmake
( NMake Makefiles
)
:要编译的目标项目(例如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
progen_compile.py
使用以下参数运行命令(有关-t
标志,请参见上文):(venv) $ python tools/progen_compile.py [-t ] --clean -v --parallel --release
firmware_
(
DAPLink 版本在哪里)。将其保存在存储构建的任何位置。DAPLink 包含用于自动执行构建版本的大部分步骤的脚本。除了构建版本之外,这些脚本还保存了相关的构建信息,例如 git SHA 和 python 工具版本,因此可以复制相同的构建。创建发布的推荐步骤如下。
build_release_uvision.bat
以创建所有构建。注意:可以使用该构建的 复制以前build_requirements.txt
的构建。为此,在步骤 2 中build_requirements.txt
调用时添加附加参数build_release_uvision.bat
。这将使用用于创建该构建的 python 包的确切版本进行安装和构建。
如果您想使用 MDK (uVision) IDE 来处理 DAPLink 代码,您必须在正确的环境中启动它。否则项目将无法构建。要正确启动 uVision,请使用tools/launch_uvision.bat
这个脚本可以接受参数来覆盖默认的虚拟环境和要安装的 python 包。例如tools\launch_uvision.bat other_env other_requirements.txt