上位机图像处理和嵌入式模块部署(mcu和swd接口)

news2025/1/11 17:09:48

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        最近学习mcu的时候,接触了不少调试器,这里面有daplink、st-link v2、j-link v9。虽然模块的形状可能不太一样,但是硬件的连线都差不多,都是mcu上的3.3v、clk、dio和gnd四根连线。出于好奇,今天花了点时间了解了一下debug port、swd、openocd、gdb这几个名词之间的关系。

1、debug port是基础

        dp,也就是debug port,这个ip对于程序员来说是透明的。它的存在,就是为了控制cpu和访问mcu上面所有的资源。换句话说,它类似于站在一个上帝的角度看待所有mcu资源的运行。

2、swd是类似于i2c的协议

        本身swd有一个clk,有一个dio。clk负责时钟,dio负责数据的收发。所以,从这一点来说,swd就是一种硬件协议。它和我们使用的iis、spi、i2c没有什么区别。如果需要实现的话,可以用gpio来模拟;如果要速度快一点的话,可以考虑用一个fpga专门来实现也是可以的。

3、不同的调试协议其实是pc和调试模块的不同交互方式

        大部分的调试模块都是pc侧进行usb连接,用usb虚拟串口cdc实现的,而开发板侧就是swd连接。所以,pc和调试模块之间是怎么通信的,这个是自由定义的。只不过现在用的比较多的是daplink、st-link v2、j-link转swd这三种。如果有需要,开发自己的调试协议也是可以的,就看有没有必要了。不管是哪一种协议,最终都要转成swd协议的。

4、openocd上位机

        本身openocd是一个应用侧的调试软件。如果st-link v2、j-link这些模块的驱动安装好了,openocd就可以通过这些驱动来访问开发板的mcu。daplink是免安装的。此外,openocd本身支持了较多的调试协议,还支持了比较多的cpu,甚至支持flash烧写,所以用的比较多。

        如果只是简单地使用openocd,那么等openocd启动后,通过telnet访问openocd,就可以输入各种各样的命令进行交互了。常用的命令有这些,

halt
resume
mdw
flash
lock
unlock
step

5、代码级别的调试离不开gdb

        虽然openocd可以调试mcu,看内存、看寄存器、看汇编指令,这些都是可以的。只是,这部分还是太底层了,我们希望最好还是代码级别的调试,比如单步进入、单步跳过、单步跳出等等。这种情况下的话,就需要gdb参与进来了。这个时候openocd就相当于gdb server了。

6、熟悉swd的好处

        如果只是使用的话,了解swd有助于我们了解编译 、下载和调试的基本原理。这样出现问题之后,就可以知道如何去解决问题了。要求高一点的话,还可以自己去定制调试模块了,比如同时调试多个开发板。甚至,自己做一个离线固件下载器都是可以的,关键还是看自己的需求和理解程度了。

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

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

相关文章

程序人生:关于RHCE红帽认证这件事

花了两个月备考红帽,最终终于双满分通过。 关于考试 RHCE红帽认证总共需要考两门:RHCSA、RHCE。 RHCSA主要是考察基本的Linux操作:用户、权限、空间扩容、yum、容器等内容。 RHCE主要是考察ansible playbook 代码的开发。 通过考试没有别…

【web1】标签,css,js

文章目录 1.标签:input1.1 html:HTML(用于创建网页结构),CSS(对页面进行美化),JavaScript(用于与用户交互)1.2 文本标签:字体属性1.3 a标签&#…

DIVE INTO DEEP LEARNING 50-55

文章目录 50. semantic segmentation50.1 Basic concepts50.2 Major application 51. Transposed convolution51.1 Basic concepts51.2 Major role51.3 Implementation steps and application areas51.4 Transposed convolution51.5 Transposed convolution is a type of convo…

卧槽,6。套死你猴子,Tomcat访问html页面显示源码?

卧槽,6。Tomcat访问html页面显示源码? 元凶text/explain //踩坑!!!不能用 servletResponse.setContentType("text/explain,否则访问html会看到源码,而不是渲染页面; charsetUTF-8"…

IDEA各种实体类运行爆红,不运行就没事

1.问题描述 如图所示,后端项目的import的各种entity爆红,点击也有导入包的提示,且这种报红几乎遍布了整个工程项目 2.我的解决方案 清空缓存,然后把target文件删掉,重新跑 3.小结 idea项目有时候就是一个核弹&…

【科普】半导体制造过程的步骤、技术、流程

在这篇文章中,我们将学习基本的半导体制造过程。为了将晶圆转化为半导体芯片,它需要经历一系列复杂的制造过程,包括氧化、光刻、刻蚀、沉积、离子注入、金属布线、电气检测和封装等。 基本的半导体制造过程 1.晶圆(Wafer&#xf…

免费一年SSL证书申请——建议收藏

免费一年SSL证书申请——建议收藏 获取免费一年期SSL证书其实挺简单的 准备你的网站: 确保你的网站已经有了域名,而且这个域名已经指向你的服务器。还要检查你的服务器支持HTTPS,也就是443端口要打开,这是HTTPS默认用的。 验证域…

23.并发

目录 一、一些概念二、进程和线程2.1 概念2.2 多线程导致的问题2.3 使用spawn创建新线程2.4 线程与move闭包 三、消息传递3.1 概念3.2 创建通道3.3 示例3.4 其它测试 四、共享状态并发4.1 互斥器4.2 Mutex的API4.3 多线程共享Mutex1)在多线程之间共享值;…

ARC学习(3)基本编程模型认识(三)

笔者来介绍arc的编程模型的中断流程和异常流程 1、中断介绍 主要介绍一下中断进入的流程,包括需要配置的寄存器等信息。 中断号:16-255,总共240个中断。触发类型:脉冲或者电平触发中断优先级:16个,0最大&…

在linux系统中使用docker、mysql实例

systemctl 是一个命令行工具,用于控制和管理基于 systemd 的 Linux 发行版中的系统和服务。 启动服务 :使用 systemctl start [service-name] 开始一个服务。 如启动docker:systemctl start docker 停止服务 :使用 systemctl st…

【python】python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

力扣SQL50 超过5名学生的课

Problem: 596. 超过5名学生的课 Code select class from courses group by class having count(distinct student) > 5;

FFmpeg源码:ff_ctz / ff_ctz_c函数分析

一、ff_ctz函数的作用 ff_ctz定义在FFmpeg源码目录的libavutil/intmath.h 下: #ifndef ff_ctz #define ff_ctz ff_ctz_c /*** Trailing zero bit count.** param v input value. If v is 0, the result is undefined.* return the number of trailing 0-bits*/…

如何使用AI工具进行写作

随着AI人工智能技术的飞速发展,AI工具已经逐渐成为学术和专业写作的得力助手。AI工具不仅可以帮助我们提高写作效率,还能在内容创作上提供灵感和支持。在本文中,小编将和大家分享如何利用AI工具提高写作效率和质量,并确保文章的原…

基于CDMA的多用户水下无线光通信(3)——解相关多用户检测

继续上一篇博文,本文将介绍基于解相关的多用户检测算法。解相关检测器的优点是因不需要估计各个用户的接收信号幅值而具有抗远近效应的能力。常规的解相关检测器有运算量大和实时性差的缺点,本文针对异步CDMA的MAI主要来自干扰用户的相邻三个比特周期的特…

活用变量,让Postman的使用飞起来

在 Postman 中使用变量是一种非常强大的功能,它可以极大地增强 API 测试和开发的灵活性和效率。 Postman变量的类型 变量在 Postman 中可以在多个层次设置和使用,包括 全局变量环境变量集合变量局部变量(如在脚本中暂时创建的变量&#xf…

使用MyBatis Generator自动代码生成器简化Java持久层开发

在Web开发中,数据访问层(DAO层)的编码工作往往重复且繁琐,尤其是在处理数据库表与Java对象之间的映射时。MyBatis Generator是一款强大的代码生成工具,它能自动生成DAO接口、Mapper XML文件和实体类,极大地…

【python】python股票量化交易策略分析可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

机器学习基础:与Python关系和未来发展

目录 初识Python Python的由来 自由软件运动 编译方式的演进 Python语言的特点 语法简单,易于理解 语法结构清晰,快速上手 丰富的第三方库 机器学习 监督学习 无监督学习 半监督学习 欢迎回到我们的神经网络与深度学习Tensorflow实战学习&am…

算法学习014 0-1背包问题 c++动态规划算法实现 中小学算法思维学习 信奥算法解析

目录 C0-1背包 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、推荐资料 C0-1背包 一、题目要求 1、编程实现 有 N 件物品和一个容量为 M的背包,每件物品有各自的价值且只能被选择一次,要求…