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

2024-06-24 05:44

本文主要是介绍上位机图像处理和嵌入式模块部署(mcu和swd接口),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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有助于我们了解编译 、下载和调试的基本原理。这样出现问题之后,就可以知道如何去解决问题了。要求高一点的话,还可以自己去定制调试模块了,比如同时调试多个开发板。甚至,自己做一个离线固件下载器都是可以的,关键还是看自己的需求和理解程度了。

这篇关于上位机图像处理和嵌入式模块部署(mcu和swd接口)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置