Ubuntu下使用DAPLink(OpenOCD)

目录

1. 下载OpenOCD源代码

2. 编译代码

2.1 运行bootstrap

 2.2 安装关联库

2.3 运行./configure

2.4 运行make

2.5 运行sudo make install

3. 烧录程序

3.1 挂起MCU

3.2 写入镜像

3.3 校验镜像


通过OpenOCD实现,在Ubuntu18 64bit下验证。

1. 下载OpenOCD源代码

OpenOCD对应的官网:

Open On-Chip Debugger (openocd.org)icon-default.png?t=N7T8https://openocd.org/点击“Getting OpenOCD”,找到Source Code字段,红色字体链接都可以转到源代码的网站。

 以官方的网站为例(sourceforge):

左侧选择版本,然后点击Download即可

git clone https://git.code.sf.net/p/openocd/code openocd-code

2. 编译代码

终端进入下载的OpenOCD文件夹。

2.1 运行bootstrap

./bootstrap

 提示错误

configure.ac:32: error: Macro PKG_PROG_PKG_CONFIG is not available. It is usually defined in file pkg.m4 provided by package pkg-config.

安装pkg-config

sudo apt-get install pkg-config

新的错误:

./bootstrap: 41: git: not found

安装git

sudo apt-get install git

还是提示错误,改为git pull下来工程。

 2.2 安装关联库

运行./configure可以看到很多关联库需要安装。

configure: WARNING: libusb-1.x not found, trying legacy libusb-0.1 as a fallback; consider installing libusb-1.x instead

checking for capstone... no

checking for hidapi... no

checking for hidapi-hidraw... no

checking for hidapi-libusb... no

checking for libftdi1... no

checking for libftdi... no

checking for libgpiod... no

checking for libjaylink >= 0.2... no

而且配置完后提示的功能都不支持:

OpenOCD configuration summary

--------------------------------------------------

MPSSE mode of FTDI based devices        no

ST-Link Programmer                      no

TI ICDI JTAG Programmer                 no

Keil ULINK JTAG Programmer              no

Altera USB-Blaster II Compatible        no

Bitbang mode of FT232R based devices    no

Versaloon-Link JTAG Programmer          no

TI XDS110 Debug Probe                   no

CMSIS-DAP v2 Compliant Debugger         no

OSBDM (JTAG only) Programmer            no

eStick/opendous JTAG Programmer         no

Olimex ARM-JTAG-EW Programmer           no

Raisonance RLink JTAG Programmer        no

USBProg JTAG Programmer                 no

Espressif JTAG Programmer               no

CMSIS-DAP Compliant Debugger            no

Nu-Link Programmer                      no

Cypress KitProg Programmer              no

Altera USB-Blaster Compatible           no

ASIX Presto Adapter                     no

OpenJTAG Adapter                        no

Linux GPIO bitbang through libgpiod     no

SEGGER J-Link Programmer                no

Bus Pirate                              yes (auto)

Use Capstone disassembly framework      no

安装对应的库:

sudo apt-install libusb-1.0-0-dev
sudo apt-get install libcapstone-dev
sudo apt-get install libhidapi-dev
sudo apt-get install libgpiod-dev
sudo apt-get install libftdi-dev
sudo apt-get install libftdi1-dev
sudo apt-get install libjaylink-dev

2.3 运行./configure

这时候所有的配置都为yes了。

2.4 运行make

2.5 运行sudo make install

安装完成后运行openocd -v确认是否安装成功。

Open On-Chip Debugger 0.12.0+dev-00271-g2c57d11c7 (2023-07-18-10:25)

Licensed under GNU GPL v2

For bug reports, read

	http://openocd.org/doc/doxygen/bugs.html

3. 烧录程序

拷贝配置文件到hex文件所在的文件夹,配置文件相对路径如下:

openocd-code-v0.12.0/openocd-code/tcl/interface/cmsis-dap.cfg

在hex文件所在文件夹运行:

sudo openocd -f cmsis-dap.cfg

提示错误(这个错误是虚拟机的问题):

Error: unable to find a matching CMSIS-DAP device

先使用lsusb看一下USB设备,没有对应的USB设备。

安装VBOX的增强功能,然后在VBox中选择USB3.0(如果设备插入的是3.0的接口) 

再次运行openocd:

Open On-Chip Debugger 0.12.0+dev-00271-g2c57d11c7 (2023-07-18-10:25)

Licensed under GNU GPL v2

For bug reports, read

	http://openocd.org/doc/doxygen/bugs.html

Info : Listening on port 6666 for tcl connections

Info : Listening on port 4444 for telnet connections

Warn : An adapter speed is not selected in the init scripts. OpenOCD will try to run the adapter at very low speed (100 kHz).

Warn : To remove this warnings and achieve reasonable communication speed with the target, set "adapter speed" or "jtag_rclk" in the init scripts.

Info : CMSIS-DAP: SWD supported

Info : CMSIS-DAP: Atomic commands supported

Info : CMSIS-DAP: FW Version = 2.0.0

Error: CMSIS-DAP: JTAG not supported

拷贝board的配置文件:

openocd-code/tcl/board/stm32f103c8_blue_pill.cfg

并将文件名改为stm32f103c8.cfg,打开编辑,可以看到关联另外一个cfg文件,将这个文件也拷贝过来,将这个文件的路径改为当前路径:

source [find stm32f1x.cfg]

运行

sudo openocd -f cmsis-dap.cfg -f stm32f103c8.cfg

结果如下:

Info : auto-selecting first available session transport "swd". To override use 'transport select <transport>'.

Info : Listening on port 6666 for tcl connections

Info : Listening on port 4444 for telnet connections

Info : CMSIS-DAP: SWD supported

Info : CMSIS-DAP: Atomic commands supported

Info : CMSIS-DAP: FW Version = 2.0.0

Info : CMSIS-DAP: Interface Initialised (SWD)

Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 1 nRESET = 1

Info : CMSIS-DAP: Interface ready

Info : clock speed 1000 kHz

Info : SWD DPIDR 0x1ba01477

Info : [stm32f1x.cpu] Cortex-M3 r1p1 processor detected

Info : [stm32f1x.cpu] target has 6 breakpoints, 4 watchpoints

Info : starting gdb server for stm32f1x.cpu on 3333

Info : Listening on port 3333 for gdb connections

此时已经处于gdb链接状态,需要另外开一个终端运行

telnet localhost 4444

OpenOCD会监听本机的4444端口,通过telnet登录上去,之后就可以控制OpenOCD干些什么了。

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

Open On-Chip Debugger

> 

后续的操作即在这个终端中输入对应的命令。 

3.1 挂起MCU

输入halt挂起MCU,相当于关机,不执行halt,无法把程序写入MCU。

> halt

[stm32f1x.cpu] halted due to debug-request, current mode: Thread 

xPSR: 0x81000000 pc: 0x0800046c msp: 0x20004ff8

3.2 写入镜像

> flash write_image erase stm32f10x.hex 

Adding extra erase range, 0x08004c6c .. 0x08004fff

auto erase enabled

wrote 19564 bytes from file stm32f10x.hex in 2.569553s (7.435 KiB/s)

3.3 校验镜像

> flash verify_image stm32f10x.hex

verified 19564 bytes from file stm32f10x.hex in 0.124474s (153.490 KiB/s)

除了命令的方式,也可以通过运行脚本的方式。

新建一个program.sh的脚本文件,编辑加入:

#!/bin/bash

echo "OpenOCD-program stm32f103"

openocd -f cmsis-dap.cfg \

	-f stm32f103c8.cfg \

	-c "program stm32f10x.hex verify reset exit"

文件属性那里改为“允许执行文件”,在终端中运行:

sudo ./program.sh

结果如下:

Info : auto-selecting first available session transport "swd". To override use 'transport select <transport>'.

Info : CMSIS-DAP: SWD supported

Info : CMSIS-DAP: Atomic commands supported

Info : CMSIS-DAP: FW Version = 2.0.0

Info : CMSIS-DAP: Interface Initialised (SWD)

Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 1 nTRST = 1 nRESET = 1

Info : CMSIS-DAP: Interface ready

Info : clock speed 1000 kHz

Info : SWD DPIDR 0x1ba01477

Info : [stm32f1x.cpu] Cortex-M3 r1p1 processor detected

Info : [stm32f1x.cpu] target has 6 breakpoints, 4 watchpoints

Info : starting gdb server for stm32f1x.cpu on 3333

Info : Listening on port 3333 for gdb connections

[stm32f1x.cpu] halted due to debug-request, current mode: Thread 

xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc

** Programming Started **

Info : device id = 0x20036410

Info : ignoring flash probed value, using configured bank size

Info : flash size = 128 KiB

Warn : Adding extra erase range, 0x08004c6c .. 0x08004fff

** Programming Finished **

** Verify Started **

** Verified OK **

** Resetting Target **

shutdown command invoked

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

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

相关文章

初识C++编程语言(万字详解)

目录 ::域作用限定符 命名空间域(namespace)&#xff1a; 流插入和流提取&#xff08;C的输入输出&#xff09; 缺省参数&#xff1a; 函数重载&#xff1a; 引用&#xff1a; 内联函数&#xff1a; auto关键字&#xff1a; 1、类型思考&#xff1a; 2、auto介绍&am…

HarmonyOS NEXT应用开发案例——列表编辑实现

介绍 本示例介绍用过使用ListItem组件属性swipeAction实现列表左滑编辑效果的功能。 该场景多用于待办事项管理、文件管理、备忘录的记录管理等。 效果图预览 使用说明&#xff1a; 点击添加按钮&#xff0c;选择需要添加的待办事项。长按待办事项&#xff0c;点击删除后&am…

java网络编程 01 IP,端口,域名,TCP/UDP, InetAddress

01.IP 要想让网络中的计算机能够互相通信&#xff0c;必须为计算机指定一个标识号&#xff0c;通过这个标识号来指定要接受数据的计算机和识别发送的计算机&#xff0c;而IP地址就是这个标识号&#xff0c;也就是设备的标识。 ip地址组成&#xff1a; ip地址分类&#xff1a;…

HCIP --- BGP 综合实验

实验拓扑图&#xff1a; 实验要求&#xff1a; 1.AS1存在两个环回&#xff0c;一个地址为192.168.1.0/24该地址不能 在任何协议中宣告 AS3中存在两个环回&#xff0c;一个地址为192.168.2.0/24该地址不能在任何协议中宣告&#xff0c;最终要求这两个环回可以互相通讯. 2.整个…

基于Netty框架的位置服务平台的设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 开发环境及开发工具 3 1.2 相关知识简介 3 1.3 本章小结 4 2 系统分析 5 2.1 设计背景 5 2.2 系统需求分析 5 2.3 市场分析 5 2.4 论文的概要内容 6 2.5 本章小结 6 3 系统设计 7 3.1 系统总体设计 7 3.2 系统结构设计 8 …

【vue2基础教程】vue指令

文章目录 前言一、内容渲染指令1.1 v-text1.2 v-html1.3 v-show1.4 v-if1.5 v-else 与 v-else-if 二、事件绑定指令三、属性绑定指令总结 前言 Vue.js 是一款流行的 JavaScript 框架&#xff0c;广泛应用于构建交互性强、响应速度快的现代 Web 应用程序。Vue 指令是 Vue.js 中…

⎣优化技术⎤CoT-Decoding

微信公众号|人工智能技术派 作 者|hws 一种解码策略优化技术&#xff1a;目标是不需要任何显示的CoT prompting&#xff0c;能够有效提升大型语言模型在各种推理任务中的表现&#xff0c;并通过自发地揭示CoT推理路径&#xff0c;改善模型的推理能力和准确性。 背景介绍 大模…

打造你的HTML5打地鼠游戏:零基础入门教程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

1-LINUX--系统介绍

1.目录结构 2.基本目录介绍 1.>/bin 存放常用命令&#xff08;即二进制可执行程序&#xff09; 2.>/etc 存放系统配置文件 3.>/home 所有普通用户的家目录 4.>/root 管理员用户的家目录 5.>/usr 存放系统应用程序及文档 6.>/dev 存放设备文件 7.>/lib 存…

阿里云99计划优惠:云服务器租用价格61元、99元、165元

阿里云99计划还有谁不知道么&#xff1f;阿里云不杀熟&#xff0c;新老用户同享&#xff0c;阿里云服务器99元一年&#xff0c;续费也是99元&#xff0c;续费不涨价家人们&#xff0c;2024年阿里云把云服务器价格打下来了&#xff0c;2核2G、2核4G、4核8G、4核16G、8核16G、8核…

Python匿名函数有知道的吗?

1.函数 按照函数是否有名字分为有名字的函数和匿名函数 匿名函数&#xff1a;定义函数时&#xff0c;不再使用def关键字声明函数&#xff0c;而是使用lambda表达式 匿名函数在需要执行简单的操作时非常有用&#xff0c;可以减少代码冗余 2.有名字的函数 def fn(n):return …

【漏洞复现】TeamCity身份验证绕过漏洞CVE-2024-27198

漏洞描述 JetBrains TeamCity是一款由JetBrains开发的持续集成和持续交付(CI/CD)服务器。它提供了一个功能强大的平台,用于自动化构建、测试和部署软件项目。TeamCity旨在简化团队协作和软件交付流程,提高开发团队的效率和产品质量。 JetBrains TeamCity在2023.11.4版本之前…

CSS的盒子模型:掌握网页设计的基石!

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

EndNote插入引文换行不顶格的解决方法

引文换行不顶格 下载下的endNote的文献换行不顶格&#xff0c;如链接中EndNote插入引文换行不顶格的解决方法所示&#xff0c;换行不顶格。 解决方法 打开EndNote&#xff0c;依次打开「Edit」→「Output Styles」→「Edit"“」→「Bibliography」→「Layout」。 以编辑…

《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程

《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程 逻辑扇区根据逻辑扇区号算出物理编号中断例程&#xff1a;通过逻辑扇区号对软盘进行读写 代码安装 int 7ch 测试程序效果 实现通过逻辑扇区号对软盘进行读写 逻辑扇区 计算公式: 逻辑扇区号 (面号*8…

海外媒体发稿:7种媒体套餐推广策略解析-华煤舍

有效的媒体宣传策略对于产品或服务的推广至关重要。本文将介绍7种媒体套餐推广策略&#xff0c;帮助您惊艳市场&#xff0c;并取得成功。以下是每种策略的拆解描述&#xff1a; 1. 广告投放 广告投放是最常见的宣传手段之一。通过在各种媒体平台上购买广告&#xff0c;如电视、…

深度学习:如何面对隐私和安全方面的挑战

深度学习技术的广泛应用推动了人工智能的快速发展&#xff0c;但同时也引发了关于隐私和安全的深层次担忧。如何在保护用户隐私的同时实现高效的模型训练和推理&#xff0c;是深度学习领域亟待解决的问题。差分隐私、联邦学习等技术的出现&#xff0c;为这一挑战提供了可能的解…

基于机器学习的网络入侵检测与特征选择及随机森林分类器性能评估(NSL-KDD数据集)

简介 本文将详细介绍如何利用Python和相关机器学习库对NSL-KDD数据集进行预处理&#xff0c;特征选择&#xff0c;并通过随机森林算法构建网络入侵检测模型。同时&#xff0c;还将展示如何计算并可视化模型的ROC曲线以评估其性能。 首先&#xff0c;我们导入了必要的库&#…

问答系统设计:核心架构解析

在近几年中,问答回答(QA)应用的快速发展彻底改变了我们获取信息的方式。无论是在搜索引擎、聊天机器人,还是在从大量主题数据中检索相关信息的应用程序中,QA应用的身影无处不在。 简而言之,QA应用的主要目的是在文本段落中找到对特定问题最合适的答案。早期的一些方法包…

【考研数学】129高分学姐二战经验+资料分享

21年数学三87分 22年数学三129分 可以说这两年该踩的雷我都踩了、该做的题我都做了。 进来看看是什么使我突然醒悟让我数学提分40多分的叭。 李林的880题我也做过&#xff0c;先来说说这本书的优缺点以及适用人群吧。 习题优点 李林老师的880题难度适中&#xff0c;很贴近…