电控---SWD协议
SWD协议是烧录调试常用的协议,本文对SWD协议进行了,覆盖物理层、协议层、寄存器结构、信号时序、安全特性、实际应用及最新发展趋势的讲解。
一、物理层架构与信号特性
1. 引脚定义与电气规范
- 核心引脚:
- SWDIO(双向数据线):开漏输出,需外部4.7kΩ上拉电阻(典型值),支持3.3V/1.8V电平自适应。
- SWCLK(时钟线):由主机提供,频率范围0.1MHz至100MHz(如ADI ICE-2000支持46MHz,部分芯片支持100MHz)。
- 可选引脚:
- nRST(复位):用于强制芯片复位,部分调试器(如ST-Link)支持硬件复位。
- SWO(串行线输出):用于实时跟踪调试(如ARM CoreSight的ITM/ETM),需独立引脚。
2. 信号传输机制
- 差分编码:每个时钟周期传输两位数据(上升沿和下降沿各一位),理论带宽是JTAG的两倍。
- 半双工模式:同一时刻只能单向传输,通过转向周期(Turnaround)切换方向,延迟约10-20ns。
- 同步机制:SWCLK的上升沿驱动数据,下降沿采样数据,确保信号完整性。
3. 电路设计要点
- 上拉电阻:SWDIO和SWCLK需接4.7kΩ上拉电阻至VDD,容差≤5%。
- 信号完整性:
- 走线长度≤5cm,避免高速信号反射。
- 差分对布局,间距≥100mil。
- 靠近芯片端串联30-100Ω电阻(如STM32推荐33Ω),抑制EMI。
- 去耦电容:在SWD接口附近放置100nF电容,降低电源噪声。
二、协议层详解
1. 数据包格式
-
请求包(Host→Target):
[Start(1)] [APnDP(1)] [RnW(1)] [Addr(2)] [Parity(1)] [Stop(0)] [Park(1)]
- Start:固定为1,标识传输开始。
- APnDP:0表示访问调试端口(DP),1表示访问应用端口(AP)。
- RnW:0为写操作,1为读操作。
- Addr:寄存器地址(DP为2位,AP为4位)。
- Parity:校验位(APnDP + RnW + Addr的奇校验)。
- Stop:固定为0。
- Park:固定为1,释放SWDIO控制权。
-
响应包(Target→Host):
[ACK(3)] [Data(32)] [Parity(1)]
- ACK:三位状态码(100=成功,010=等待,001=失败)。
- Data:32位数据(读操作时返回)。
- Parity:数据校验位。
2. 寄存器访问流程
- 调试端口(DP):
- IDCODE:芯片唯一标识(如0x0BB11477表示STM32F103)。
- ABORT:中止当前事务,处理错误状态。
- CTRL_STAT:控制调试端口状态,如使能时钟。
- RDBUFF:存储AP返回的数据。
- 应用端口(AP):
- CSW:配置访问内存的大小(8/16/32位)。
- TAR:指定内存地址。
- DRW:读写数据寄存器。
- IDR:AP模块标识。
3. 初始化流程
- Line Reset:主机发送至少50个高电平脉冲,强制目标设备复位。
- 协议切换:发送特定序列(如0x79、0xE7)将JTAG模式切换为SWD。
- 读取IDCODE:验证设备存在并获取型号信息。
- 解锁AP:通过DP寄存器使能AP访问权限。
三、信号时序与错误处理
1. 典型时序阶段
- 请求阶段:主机发送8位命令(Start + APnDP + RnW + Addr + Parity + Stop + Park)。
- ACK阶段:目标返回3位ACK码,可能包含转向周期(Trn)。
- 数据阶段:传输32位数据(写操作由主机发送,读操作由目标返回)。
- 校验阶段:传输1位奇偶校验位。
2. 错误处理机制
- FAULT响应(001):目标设备返回错误,主机需重新发送命令或检查硬件连接。
- WAIT响应(010):目标未准备好,主机延迟后重试。
- 超时机制:主机在指定时间内未收到响应,触发重试或报错。
3. 转向周期(Trn)
- 作用:在读写切换时插入空闲周期,确保信号稳定。
- 时长:1-2个时钟周期,由目标设备的TURNROUND寄存器配置。
四、高级功能与安全特性
1. 实时跟踪(SWO)
- 原理:通过SWO引脚输出实时调试信息(如指令执行流、变量值),依赖ARM CoreSight的ITM/ETM模块。
- 配置步骤:
- 使能ITM模块(SCB->DEMCR |= SCB_DEMCR_TRCENA_Msk)。
- 配置SWO引脚(如STM32的PA3)。
- 使用调试工具(如J-Link SWO Viewer)捕获数据。
2. 安全增强
- 熔丝位禁用:通过芯片熔丝位(如ARM的SECURE_FUSE)永久关闭SWD接口。
- 加密传输:部分调试工具(如J-Link)支持AES加密通信,保护固件安全。
- 存储保护:
- RDP(读保护):全局Flash读保护,防止逆向工程。
- WRP(写保护):禁止擦写指定区域。
- PCROP(专有代码保护):限制代码读取和修改。
3. 低功耗设计
- 时钟门控:空闲时关闭SWCLK。
- 动态电压调整:通过寄存器配置动态调整工作电压。
- 休眠模式兼容:设备进入休眠(如STM32的Stop模式)时,SWD仍可唤醒并通信。
五、与JTAG的深度对比
特性 | SWD | JTAG |
---|---|---|
引脚数量 | 2根(SWDIO+SWCLK) | 4-5根(TCK/TMS/TDI/TDO/TRST) |
速度 | 最高100MHz | 最高50MHz |
功耗 | 低(优化时钟管理) | 高(持续时钟) |
功能 | 调试、编程 | 调试、边界扫描测试 |
适用场景 | 引脚受限的嵌入式设备 | 复杂系统级测试 |
六、实际应用与工具链
1. 调试器支持
- 主流工具:Segger J-Link、ST-Link、OpenOCD(开源)。
- 协议分析:逻辑分析仪(如Saleae)可捕获SWD信号进行调试。
2. IDE集成
- Keil MDK:默认优先使用SWD,支持硬件断点、内存映射。
- IAR Embedded Workbench:通过配置文件切换协议。
- ARM Development Studio:支持实时跟踪和性能分析。
3. 典型代码示例
// STM32F103配置SWD
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // 使能AFIO时钟
AFIO->MAPR &= ~AFIO_MAPR_SWJ_CFG; // 禁用JTAG,启用SWD
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14; // PA13(SWDIO), PA14(SWCLK)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
七、发展趋势与前沿技术
- 更高频率支持:部分调试器(如J-Link Ultra+)支持150MHz SWD,提升下载速度。
- USB-C集成:SWD over USB-C成为趋势,简化连接(如J-Link Edu Mini)。
- 硬件级加密:如ARMv9架构支持调试接口加密,防止未授权访问。
- 与其他协议融合:SWD与UART、SPI结合,实现多功能调试(如SWO+SWD复用)。
八、注意事项与常见问题
- 硬件设计:
- 确保SWDIO和SWCLK走线短且远离高频信号。
- 外部上拉电阻取值4.7kΩ,确保信号完整性。
- 软件配置:
- 初始化时需正确设置AFIO_MAPR寄存器以切换协议模式。
- 进入低功耗模式前,关闭非必要外设时钟。
- 兼容性:
- 部分芯片(如STM32F103)默认同时启用JTAG和SWD,需通过寄存器禁用JTAG以释放引脚。
九、总结
SWD协议凭借其引脚少、速度快、低功耗等优势,已成为ARM架构微控制器调试的首选方案。其核心设计包括差分编码、半双工通信、寄存器分层访问等,结合实时跟踪、安全加密和低功耗优化,满足嵌入式开发的多样化需求。在实际应用中,需结合硬件设计、协议配置及工具链优化,以充分发挥其性能。对于复杂系统或需要边界扫描测试的场景,JTAG仍是更合适的选择。未来,SWD将进一步向高速化、安全化和多功能化发展,成为嵌入式调试领域的主流标准。
相关文章:
电控---SWD协议
SWD协议是烧录调试常用的协议,本文对SWD协议进行了,覆盖物理层、协议层、寄存器结构、信号时序、安全特性、实际应用及最新发展趋势的讲解。 一、物理层架构与信号特性 1. 引脚定义与电气规范 核心引脚: SWDIO(双向数据线&…...
Linux系统下docker 安装 redis
docker安装最新版的redis 一、docker拉取最新版redis镜像 拉取镜像若没有指定版本,代表拉取最新版本 二、查询redis镜像 三、挂载配置文件 在docker容器内修改redis配置文件不方便,所以挂载配置文件,这样可以在外边修改redis配置 3.1 创建…...
第 2 篇:初探时间序列 - 可视化与基本概念
第 2 篇:初探时间序列 - 可视化与基本概念 (图片来源: Luke Chesser on Unsplash) 在上一篇《你好,时间序列!》中,我们了解了什么是时间序列数据以及学习它的重要性。现在,是时候卷起袖子,真正开始接触和探…...
适配器模式:化解接口不兼容的桥梁设计
适配器模式:化解接口不兼容的桥梁设计 一、模式核心:让不兼容的接口协同工作 在软件开发中,经常会遇到接口不兼容的情况:如旧系统提供的接口无法被新系统直接调用,或第三方库的接口与当前系统设计不匹配。适配器模式…...
科大讯飞Q1营收46.6亿同比增长27.7%,扣非净利同比增长48.3%
4月21日盘后,AI龙头科大讯飞(002230.SZ)发布2024年报,公司全年实现营业收入233.43亿元,同比增长18.79%,同期归母净利润为5.6亿元。 公司核心赛道业务保持快速增长,消费者、教育、汽车、医疗业务…...
基于大模型的血栓性外痔全流程风险预测与治疗管理研究报告
目录 一、引言 1.1 研究背景与目的 1.2 研究意义 二、血栓性外痔概述 2.1 定义与发病机制 2.2 临床表现与诊断方法 2.3 现有治疗手段综述 三、大模型在血栓性外痔预测中的应用原理 3.1 大模型技术简介 3.2 模型构建与训练数据来源 3.3 模型预测血栓性外痔的工作流程…...
Transformer系列(三):编码器—解码器架构
Transformer架构 一、多头自注意力 (Multi-head self-attention)将矩阵维度从d降到d/k的优点 二、层归一化 (Lary Norm)三、残差连接 (Residual Connections)Add and Norm 四、注意力对数几率缩放 (Attention logit scaling)五、T…...
C++入门小馆: 深入string类(二)
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...
MCU开发学习记录10 - 高级定时器学习与实践(HAL库)—PWM互补输出、死区控制、刹车控制 - STM32CubeMX
本文将介绍高级定时器的概念(只讲解高级定时器特有功能)、相关函数以及STM32CubeMX生成定时器的配置函数以及对生成定时器的配置函数进行分析(包括结构体配置、相关寄存器配置)。针对于高级定时器实践:实现输出PWM互补…...
pytest基础-new
规范 1、首先创建 py 文件命名以 test_ 开始或者以 _test 结尾 2、若是新建类,测试类需要以 Test_开头 3、测试用例(方法)需要以 test_开头 assert 断言 assert xx:判断 xx 为真 assert not xx:判断 xx 不为真 asse…...
利用Qt创建一个模拟问答系统
界面: 添加了聊天显示区域(QTextEdit) 添加了发送按钮和清空对话按钮 优化了布局和窗口大小添加了时间戳显示 2、功能: 支持实时对话可以清空对话历史 支持按回车发送消息 添加了简单的关键词匹配响应系统 交互体验&#x…...
CCF CSP 第37次(2025.03)(1_数值积分_C++)
CCF CSP 第37次(2025.03)(1_数值积分_C) 解题思路:思路一: 代码实现代码实现(思路一): 时间限制: 1.0 秒 空间限制: 512 MiB 原题链接 解题思路…...
使用 Flutter 遇坑小计
前言 首先, 谷哥很贴心地为国内用户准备了一份使用手册 不过很遗憾 就算你照着它的手册来了, 还是会在后续使用中遇到其它的坑 今天我踩了, 保不齐明天就是其他人(lol) running gradle task ‘assembledebug’ stuck 首先去确定下当下Android Studio(或者说你目前的Flutter项…...
C语言中的双链表和单链表详细解释与实现
C语言中的双链表详细解释与实现 双链表(Doubly Linked List)是一种常见的数据结构,它比单链表更灵活,因为每个节点都包含指向前驱和后继节点的指针。 双链表的基本结构 节点定义 c 复制 下载 typedef struct Node {int dat…...
CSS零基础入门笔记:狂神版
前言 本笔记是学习狂神的java教程,建议配合视频,学习体验更佳。 【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 第1-2章:Java零基础入门笔记:(1-2)入门(简介、基础知识)-CSDN博客 第3章&…...
使用python调用deepseek 多轮对话,详细讲解
以下代码实现在python中与deepseek实现多轮对话。 Messages参数是对话历史和上下文的核心载体。 数据结构: • 必须是包含消息对象的数组 • 每个消息对象必须包含: o role:发言者身份(system/user/assistant) o con…...
requestAnimationFrame是什么?【前端】
亲爱的读者,希望今天的你好心情~ 目录 requestAnimationFrame是什么?目的?举个栗子: requestAnimationFrame是什么? requestAnimationFrame 是一种用于优化动画性能的 JavaScript API。它允许你在浏览器的下一次重绘之…...
SQL Server基础
二. SQL Server数据库 1. 数据库简介 数据库本质是写成磁盘文件,在硬盘中存储用处 存储大量数据,方便检索和访问保持数据信息的一致、完整共享和安全通过组合分析,产生新的有用信息 数据库发展史 萌芽阶段:文件系统,…...
Vue-组件的懒加载,按需加载
在Vue项目中实现组件的懒加载(也称为按需加载或代码分割),可以大大提升应用的加载速度和性能。懒加载主要通过Webpack的代码分割功能实现,特别是使用动态导入(import()语法)。 为什么要使用懒加载…...
Docker 镜像、容器和 Docker Compose的区别
前言:Docker 的镜像、容器和 Docker Compose 是容器化技术的核心组件,以下是对它们的详细解析及使用场景说明。 1、Docker 镜像(Image) 定义: 镜像是只读模板,包含运行应用程序所需的代码、…...
批量创建同名文件夹并整理文件至对应文件夹
在我们的日常工作和生活中,创建文件几乎是必不可少的一部分。随着时间的推移,电脑中积累了大量的文件,管理这些文件成为一项繁琐且耗时的任务。尤其当我们需要按照一定规则对文件进行整理时,很多人会感到困惑。例如,领…...
每日一题——数据中心网络地址规划
文章目录 数据中心网络地址规划问题描述输入格式输出格式示例输入示例输出实现思路1. IP地址转换2. 区间排序3. 动态规划 C语言完整实现(含详细注释)总结 数据中心网络地址规划 问题描述 你是一名数据中心网络地址规划人员。每个业务需要一段IP地址区间…...
如何远程访问家中服务器-FRP内网穿透详细
💡 本文会带给你 如何远程访问家中服务器FRP自动运行的方法一、准备工作 准备一台具备公网 IP 的服务器(如阿里云、腾讯云等云服务器,要求不高,几十块一年服务的轻型服务就行),用于部署 FRP 服务端(frps)。 家中电脑(内网设备),用于运行 FRP 客户端(frpc)。 下…...
el-select+vue-virtual-scroller解决数据量大卡顿问题
解决el-select中数据量过大时,显示及搜索卡顿问题,及正确的回显默认选中数据 粗略的封装了组件,有需要各种属性自定义的,自己添加设置下 环境 node 16.20.1 npm 8.19.4 vue2、element-ui "vue-virtual-scroller"…...
数码管静态显示一位字符(STC89C52单片机)
#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; //用数组来存储数码管的真值表,数组将在下一章详细介绍 unsigned char code LedChar[] { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82…...
明心见性与真如三昧
在佛教禅宗体系中,明心见性与真如三昧是修行者追求的核心目标。明心见性作为修行的起点,揭示了众生的真如本性;而真如三昧则是巩固和深化这一证悟的关键修行方法。二者相辅相成,构成了禅宗修行的完整路径。 一、明心见性…...
并发设计模式之双缓冲系统
双缓冲的本质是 通过空间换时间,通过冗余的缓冲区解决生产者和消费者的速度差异问题,同时提升系统的并发性和稳定性。 双缓冲的核心优势 优势具体表现解耦生产与消费生产者和消费者可以独立工作,无需直接同步。提高并发性生产者和消…...
使用谷歌浏览器自带功能将网页转换为PDF文件
将自己喜欢的技术网页转换为PDF文件有多种方法,这里介绍使用谷歌浏览器自带功能。 (本文截图仅作为演示使用) 使用谷歌浏览器自带功能 1.用Chrome浏览器,打开需要转换的网页,点击浏览器右上角的三个点(菜…...
JavaEE--2.多线程
1.认识线程(Thread) 1.1概念 1)什么是线程 ⼀个线程就是⼀个 "执行流". 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 "同时" 执行着多份代码. 2)为什么要有线程 首先, "并发编程" 成为 "刚需". 1. 单核 CPU 的发展遇到…...
沐渥氮气柜控制板温湿度氧含量氮气流量四显智控系统
氮气柜控制板通常用于实时监控和调节柜内环境参数,确保存储物品如电子元件、精密仪器、化学品等,处于低氧、干燥的稳定状态。以下是沐渥氮气柜控制板核心参数的详细介绍及控制逻辑: 一、控制板核心参数显示模块 1)温度显示&am…...
线性代数-矩阵的秩
矩阵的秩(Rank)是线性代数中的一个重要概念,表示矩阵中线性无关的行(或列)的最大数量。它反映了矩阵所包含的“有效信息”的维度,是矩阵的核心特征之一。 直观理解 行秩与列秩: 行秩࿱…...
【自然语言处理与大模型】模型压缩技术之量化
在这篇文章中想和大家分享什么是量化?为什么要量化?以及如何实现量化?通过这三个基本问题,我们不仅可以全面了解量化的内涵和外延,还能更清晰地认识到它在实践中的重要性和应用价值。 一、什么是量化呢? 大…...
OneClicker脚本自动运行工具
工作的时候,有很多琐碎的事情需要重复的做 比如打开某个文件,打开某个网站,打开某个软件 这个时候可以写个自动脚本,把机械琐碎的事情交给脚本处理 但是脚本一多,不好管理,而且要选择哪个脚本也是个麻烦的事…...
Activity之间交互
Backgroud: 想要实现Activity之间的交互,需要用到intent工具 本博客中所有第二Activity均为SecActivity,需要预先进行创建 本博客所使用的开发语言为Kotlin 使用intent调用Activity 显式调用 val intent Intent(this, SecActivity::class.…...
【React】搜索时高亮被搜索选中的文案
文章目录 代码实现 代码实现 函数封装: export function highlightKeyword(input: string, keyword: string | undefined) {if (!keyword || !input || !input.includes(keyword)) return input;const startIndex input.indexOf(keyword);return React.createEle…...
MCP(Minecraft Coder Pack)完全指南:从入门到精通
1. 什么是MCP? Minecraft Coder Pack(简称MCP)是一套用于反编译、修改和重新编译Minecraft Java版源代码的工具集。它允许开发者深入研究Minecraft的底层代码,并在此基础上进行模组(Mod)开发、代码分析或自…...
stm32week12
stm32学习 九.stm32与HAL库 2.HAL库框架 总架构: 文件介绍: ppp是某一外设,ex是拓展功能 HAL库API函数和变量命名规则: HAL库对寄存器位操作的相关宏定义: HAL库的回调函数: 3.STM32启动过程 MDK编译过…...
mindspeed-rl使用注意事项
1、安装 参考1:docs/install_guide.md R1-CLM/MindSpeed-RL - Gitee.com 参考2:VLLM x Ascend框架_vllm-ascend-CSDN博客 2、SFT微调 整体参考docs/supervised_finetune.md 自定义数据格式同:AUTO-DL 910B mindspeed-llm 4层DeepSeek …...
第 4 篇:平稳性 - 时间序列分析的基石
第 4 篇:平稳性 - 时间序列分析的基石 在上一篇中,我们学习了如何将时间序列分解为趋势、季节性和残差。我们看到,很多真实世界的时间序列(比如 CO2 浓度)都包含明显的趋势(长期向上或向下)和/…...
KRaft面试思路引导
Kafka实在2.8之后就用KRaft进行集群管理了 Conroller负责选举Leader,同时Controller管理集群元数据状态信息,并将元数据信息同步给各个分区的Leader 和Zookeeper管理一样,会选出一个Broker作为Controller去管理整个集群,但是元数…...
怎么建立自然语言领域的评价标准
怎么建立自然语言领域的评价标准 明确评价目标与对象 首先要清晰界定评价的目标,比如是评估模型对文本语义的理解能力、生成文本的质量,还是系统在信息检索中的表现等。同时,明确评价对象,可能是一个语言模型、一个问答系统、一个机器翻译工具等。确定评价维度与指标 语言…...
EMQX学习笔记
MQTT简介 MQTT是一种基于发布订阅模式的消息传输协议 消息:设备和设备之间传输的数据,或者服务和服务之间传输的数据 协议:传输数据时所遵循的规则 轻量级:MQTT协议占用的请求源较少,数据报文较小 可靠较强ÿ…...
组件是怎样写的(1):虚拟列表-VirtualList
本篇文章是《组件是怎样写的》系列文章的第一篇,该系列文章主要说一下各组件实现的具体逻辑,组件种类取自 element-plus 和 antd 组件库。 每个组件都会有 vue 和 react 两种实现方式,可以点击 https://hhk-png.github.io/components-show/ …...
CGAL 计算直线之间的距离(3D)
文章目录 一、简介二、实现代码三、实现效果一、简介 这里的计算思路很简单: 1、首先将两个三维直线均平移至过原点处,这里两条直线可以构成一个平面normal。 2、如果两个直线平行,那么两条直线之间的距离就转换为直线上一点到另一直线的距离。 3、如果两个直线不平行,则可…...
定期检查滚珠丝杆的频率是多久?
定期检查滚珠丝杆的频率通常是每半年进行一次,根据不同的使用环境和设备类型,滚珠丝杆的检查周期有所不同。接下来我们一起看看滚珠丝杆的维护保养方法: 1、清洗:每隔一段时间对滚珠丝杆进行清洁,将滚珠丝杆拆…...
Spark-SQL连接Hive全攻略
在大数据处理领域,Spark-SQL与Hive的结合能发挥强大的功能。今天就来给大家分享一下Spark-SQL连接Hive的多种方式。 Spark SQL编译时可选择包含Hive支持,这样就能使用Hive表访问、UDF、HQL等特性,而且无需提前安装Hive。其连接方式丰富多样…...
在Ubuntu 18.04下编译OpenJDK 11
在Ubuntu 18.04下编译OpenJDK 11 源码下载地址: 链接: https://pan.baidu.com/s/1QAdu-B6n9KqeBakGlpBS3Q 密码: 8lho Linux下的环境要求 不同版本的jdk会要求在不同版本的Ubuntu下编译,不要用太高版本的Ubuntu或者gcc,特别是gcc…...
Spring MVC 一个简单的多文件上传
原始代码逐行解释 PostMapping("/uploads") // ① 声明处理POST请求,路径为"/uploads" ResponseBody // ② 直接返回数据到响应体,不进行视图解析 public String uploads(MultipartFile[] files, // …...
FreeRTos学习记录--1.工程创建与源码概述
1.工程创建与源码概述 1.1 工程创建 使用STM32CubeMX,可以手工添加任务、队列、信号量、互斥锁、定时器等等。但是本课程不想严重依赖STM32CubeMX,所以不会使用STM32CubeMX来添加这些对象,而是手写代码来使用这些对象。 使用STM32CubeMX时&…...
Vmware esxi 给现有磁盘增加空间后并扩展系统里磁盘空间
当前EXSI上虚拟机所在的单独数据磁盘空间满了,需要对空间进行扩容,我们先在主机对磁盘容量进行调整,然后在系统里面对磁盘空间进行拓展,这些操作需要保留数据并且不改变现有的磁盘格局。 遵循大致操作流程是: 1.先登录…...