尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

STM32CubeProgrammer:嵌入式烧录调试工具安装与使用指南

STM32CubeProgrammer:嵌入式烧录调试工具安装与使用指南 这几天在帮一个学嵌入式的新手调试一块自制板子代码是让 AI 帮忙生成的编译一次通过结果烧进芯片里死活跑不起来。查了半天发现根本不是代码问题是烧录环节没搞对——工具选错了地址没对准选项字节还被之前一次误操作给搞乱了。折腾到半夜最后还是靠 STM32CubeProgrammer 把整颗芯片擦干净重新烧才救回来。这件事让我意识到在嵌入式软件AI编程这条路上大家很容易把注意力放在怎么让 AI 写代码上却忽略了工具链里最不起眼却最要命的一环——烧录调试工具。今天这篇就专门聊聊 STM32CubeProgrammer 的安装和使用把它从下载后装一下这种粗糙认识里拎出来讲清楚它到底解决什么问题、安装时有哪些坑、装完之后怎么用才能让开发效率真正提上来。这篇内容适合正在用 STM32CubeMX 生成工程、用 Keil 或 STM32CubeIDE 写代码、又希望把 AI 生成的固件快速烧到板子上验证的开发者。我尽量把下载安装、驱动、连接验证、命令行自动烧录、常见故障排查这些事一次说完。1. 安装之前先想清楚STM32CubeProgrammer 到底解决什么问题1.1 一个烧录工具为什么值得单独开一篇很多刚接触 STM32 的人会有个疑问我电脑里已经有 Keil、有 STM32CubeIDE点一下 Download 就能把程序烧进去为什么还要单独安装一个 STM32CubeProgrammer这不是多此一举吗之前我也这么想直到实际做一个需要批量烧录的小项目才明白差距。IDE 里的烧录功能本质上是调试器的辅助功能它的设计目标是配合断点、单步、变量监视这些调试操作烧录只是顺手的事。但现实中的开发和生产场景远不止这一种需要给一整批板子烧录同一个固件总不能每块都打开 IDE 点一遍 Download芯片被读保护锁住了IDE 报错拒绝连接需要一把能直接操作底层选项字节的钥匙需要读回 Flash 里的内容做备份比对或者单独烧录一段 Bootloader、一段 App需要在自行编写的自动化脚本里嵌入烧录动作实现编译完成自动烧录、烧录完成自动开始测试。这些需求 IDE 也能做一部分但做得远不够透。STM32CubeProgrammer 作为 ST 官方独立出品的编程工具看家本领就是覆盖所有烧录相关场景。它支持的连接方式很全ST-LINK、J-LINK、USB DFU、UART Bootloader、SWD 等能干的事情也很全读写 Flash、配置选项字节、管理 OTP 区域、擦除保护、更新 ST-LINK 固件、操作外部存储器。换句话说IDE 是给你写代码和调代码用的STM32CubeProgrammer 是给你管固件用的。两者互补不是替代关系。1.2 它和 IDE 自带的烧录功能有什么本质区别为了更直观我把两者的能力做了一张对比表方便大家按自己的使用场景判断需不需要装这个工具对比维度IDE 自带烧录Keil / CubeIDESTM32CubeProgrammer主要场景开发调试配合断点、单步、变量观察独立编程批量烧录底层配置故障恢复连接方式主要是 ST-LINK 一种配置较固定ST-LINK / J-LINK / DFU / UART 多种命令行支持弱依赖外部工具链自带完整 CLI脚本友好选项字节操作部分支持操作入口深不够直观图形化 命令行全覆盖读保护解除基本不支持支持操作在 Options Bytes 里固件包升级不支持支持 ST-LINK 固件升级执行速度偏慢目标偏向调试体验快目标偏向编程效率看完这张表应该就明白了如果你的工作流只是写完代码烧进去跑起来IDE 确实够用但如果你的工作流开始往自动化、批量、生产、底层安全方向发展STM32CubeProgrammer 几乎是个必须装的工具。我在实际写嵌入式 AI 辅助编程的流程时感受尤其明显。AI 生成的代码你不可能用断点一点一点去查正确策略是生成 - 编译 - 烧录 - 跑起来看现象 - 不行就改。这个循环里烧录这一环越快、越稳、越可脚本化整个迭代节奏就越舒服。而把 CubeProgrammer 装好是这个循环跑通的第一步。2. 下载与安装的完整过程及版本选型2.1 从哪里下载、该选哪个版本STM32CubeProgrammer 的官方下载入口是 ST 官网的 STM32Cube 软件包页面直接站内搜索STM32CubeProgrammer就能找到。下载之前需要注册并登录 MyST 账号这是 ST 的常规流程用邮箱注册即可整个过程不收费。版本选择上有一个原则不要追 RC 发布候选版也不要用太老的版本直接选当前最新正式稳定版。ST 的工具更新节奏不算快但每个新版本都会修复一些烧录器识别、芯片支持方面的问题尤其是当你用到比较新的芯片型号时老版本很可能根本不认识这颗芯片。下载页里通常会把 Windows、Linux、macOS 三个平台的安装包分列。Windows 一般是一个 .exe 安装程序Linux 提供的是一个 .linux 结尾的可执行安装脚本或者 .tar 压缩包。我主要用 Windows 和 Linux 双环境下面分别说下安装过程中的要点。另外留意一下安装包体积通常有几百 MB下载时耐心等就行。解压之后先把安装包目录结构大概看一眼里面会有 bin、Driver、ST-LINK_gdbserver 等文件夹后面找 CLI 和驱动都要用到这几个目录。2.2 Windows 安装步骤与关键勾选项Windows 下的安装逻辑和大多数软件类似但有几个关键位置值得专门说一下。第一步解压下载的压缩包右键以管理员身份运行里面的 Setup.exe。为什么要管理员身份因为安装过程会同时安装 USB 驱动这一步需要系统权限普通用户权限下容易装一半报错。第二步安装路径建议保持默认。默认路径一般是 C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer。不要为了省 C 盘空间改到包含中文或空格过多的深层目录后面写自动化脚本时路径越简单越不容易踩坑。第三步安装过程中会出现驱动安装相关的弹窗或勾选项这里务必选择安装。尤其要注意的是 ST-LINK 驱动和虚拟串口驱动。虚拟串口驱动管的是 ST-LINK 板载的 VCPVirtual COM Port也就是调试器附带的那路 USB 串口平时打印日志全靠它。很多人把 CubeProgrammer 装完了却发现串口助手连不上板子多半就是这里没安装全。第四步安装完成后去开始菜单找STM32CubeProgrammer文件夹里面应该有主程序和命令行工具的快捷方式。它默认不会在桌面建快捷方式很多新手装完找不到入口这其实正常。装完之后建议顺手验证一下驱动打开设备管理器展开通用串行总线设备和端口分类如果能看到 ST-LINK 相关设备和 COM 口说明驱动正常。如果看到黄色感叹号说明驱动没有正确安装先用设备管理器里的更新驱动程序再试一次一般能解决。2.3 Linux 下的安装和权限问题Linux 环境我常用 Ubuntu的安装方式略有不同。解压后找到一个以 .linux 结尾的安装脚本比如 SetupSTM32CubeProgrammer-x.x.x.linux赋予执行权限后运行chmod x SetupSTM32CubeProgrammer-2.x.x.linux sudo ./SetupSTM32CubeProgrammer-2.x.x.linux安装过程中会询问安装目录可以装到用户目录下也可以按默认装到 /usr/local/STMicroelectronics/STM32CubeProgrammer/。装到用户目录的好处是不需要 sudo 就能往里写文件但对后面系统的 PATH 配置不太友好建议按默认路径来。Linux 下安装完最容易出问题的地方是 USB 权限。ST-LINK 默认需要 udev 规则才能让普通用户直接访问否则运行 STM32_Programmer_CLI 连接时会出现权限不足或找不到调试器的报错。最简单的处理方式是把当前用户加入 dialout 和 plugdev 组sudo usermod -aG dialout $USER sudo usermod -aG plugdev $USER执行完后注销重新登录再试试 lsusb 能否看到 ST-LINK 对应的 USB 设备。然后是 PATH 配置。为了在任何目录下都能直接调用命令行工具可以在 ~/.bashrc 末尾追加export PATH$PATH:/usr/local/STMicroelectronics/STM32CubeProgrammer/bin之后 source ~/.bashrc输入 STM32_Programmer_CLI 看看能不能列出帮助信息能出现就说明环境配好了。3. 验证安装把板子点亮、把固件写进去3.1 环境准备一块板子和一个 ST-LINK软件装得再漂亮最终都要落到能不能把程序烧进去这件事上。验证安装最直接的方式就是找一块板子现场跑一次烧录。准备的东西不复杂一块 STM32 开发板一个 ST-LINK 调试器。如果你用的是 Discovery 或 Nucleo 系列的官方板子板载的 ST-LINK 可以直接使用不需要单独买调试器如果是自制板或最小系统板需要外接一个 ST-LINK V2 或者 ST-LINK V3。接线方面SWD 模式只需要四根线SWDIO、SWCLK、GND、3.3V。接反 SWDIO 和 SWCLK 是最常见的低级错误新手尤其容易犯。ST-LINK V2 的引脚定义网上很容易找到接线前先核对一遍别让接错线这种问题浪费半小时。供电也要注意。ST-LINK 的 3.3V 输出电流能力有限如果你的板子上还有 WiFi 模块、显示屏这类功耗较大的外设最好板子自己独立供电ST-LINK 只负责通信。如果 ST-LINK 供电不足表现往往是能识别到目标芯片但烧录中途失败看起来像接触不良实际是电压被拉垮了。3.2 用 GUI 界面读取芯片信息连接好硬件后打开 STM32CubeProgrammer 主程序界面左侧是连接方式选择区。选择ST-LINK作为接口方式然后在右上角点 Connect 按钮。如果一切正常连接成功后右侧会显示目标芯片的信息芯片型号、Device ID、Flash 大小、当前读保护级别等。这一步非常有价值它相当于给芯片做了一次体检能在烧录之前就确认硬件链路是否连通、芯片型号是否和工程匹配。我强烈建议每次拿到一块新板子先做这一步读取信息而不是直接烧录。原因很简单如果芯片信息能正常读出来说明 ST-LINK 和芯片之间的通信是通的后面烧录失败就可以把排查重点放在软件配置上如果连信息都读不出来那问题大概率出在接线、供电或驱动层面别急着烧程序。有些板子在上电后如果检测不到外部调试器可能会进入异常状态导致连接失败。遇到这种情况可以先按住板子的 RESET 按键然后点击 Connect在连接建立后再松开复位往往能救回来。这个方法在处理芯片处于死循环或休眠状态导致无法连接时特别管用。3.3 烧录一个最简单的 bin 文件确认能读到芯片信息后就可以实打实烧一个固件了。你不需要专门写一个复杂程序直接用任意一个空工程编译出来的 bin 文件就行或者用 CubeMX 生成工程后编译默认输出路径一般在 Debug 或 Release 目录下。在 GUI 界面的右侧 Download 区域先点击 Open file 选择编译生成的 .bin 或 .hex 文件然后关注一下烧录起始地址。.hex 文件内部自带地址信息不需要手动指定.bin 文件没有地址概念必须手动填地址。绝大多数字段应用的 Flash 起始地址是 0x08000000但如果你在做 Bootloader App 的分区方案App 的烧录地址要按照链接脚本里设置的实际地址来填。选好文件、填好地址后点击 Download 按钮。烧录过程中下方日志区域会实时打印进度正常情况几秒钟就能完成最后提示 Download verified successfully 或类似信息。烧完后可以顺手在 Memory display 区域读一下 0x08000000 处的数据肉眼确认 Flash 内容确实被写入了这个习惯能帮你区分烧录失败和程序本身有问题这两种截然不同的情况。很多人喜欢在这里直接点击复位运行按钮让芯片立刻跑起来。注意一点如果板子上电后没有自动运行新固件很可能是 BOOT0 引脚的电平没有设置对或者芯片根本没有正确复位。在 GUI 里点一下硬件复位按钮右上角带圆圈箭头的图标观察现象是否出现这个小动作能省下怀疑人生的时间。4. 把烧录变成一条命令命令行接口与自动化脚本4.1 核心命令参数速查GUI 适合手动操作但真正让 STM32CubeProgrammer 发挥威力的是它的命令行工具 STM32_Programmer_CLI。这个工具位于安装目录的 bin 文件夹下Windows 里是 STM32_Programmer_CLI.exeLinux 里是 STM32_Programmer_CLI装好后 PATH 配置无误就能直接调用。几条高频命令可以先掌握。连接目标芯片指定使用 SWD 接口并设置连接速度模式STM32_Programmer_CLI -c portSWD modeURmodeUR 表示 Ultra-Rate即尽量使用最高速模式适合调试普通板子如果你的线缆较长、干扰较大可以改成 modeNORMAL 或 modeHOTPLUG牺牲一点速度换来稳定。烧录固件到指定地址并校验STM32_Programmer_CLI -c portSWD modeUR -w firmware.bin 0x08000000 -v-v 参数会在烧录后自动执行校验逐字节比对 Flash 内容和原始文件不一致会返回错误。这个参数在开发阶段强烈建议加上它能挡住烧录完成但内容不对这类隐蔽故障。整片擦除芯片STM32_Programmer_CLI -c portSWD modeUR -e all读取 Flash 内容到本地文件STM32_Programmer_CLI -c portSWD modeUR -r dump.bin 0x08000000 0x10000这条命令读回 0x08000000 起始的 0x10000 字节内容并保存到 dump.bin用来备份出厂固件或检查烧录结果都很有用。修改选项字节比如解除读保护STM32_Programmer_CLI -c portSWD modeUR -ob RDP0xAARDP0xAA 对应 Level 0无保护。如果芯片被设成 Level 1IDE 可能无法直接烧录需要先用这条命令解除保护。关于读保护的具体问题下一章细说。命令行工具的使用逻辑是子命令 参数模式随时可以用STM32_Programmer_CLI --help查看完整帮助信息不需要死记硬背。4.2 编译、烧录、运行一条龙脚本命令行工具最大的价值在于可以和编译流程无缝衔接。我自己已经把烧录命令写进了一个自动部署脚本里。每次 AI 辅助生成的代码编译通过后我只需要执行一条脚本它就会自动完成烧录和复位运行整个验证流程从五分钟压缩到十几秒。Windows 环境用批处理可以实现核心逻辑很简单。假设你的 makefile 编译输出路径是 build/firmware.binecho off cd /d %~dp0 echo [1/2] Compiling... call make -j8 if errorlevel 1 ( echo Compile failed, abort. exit /b 1 ) echo [2/2] Flashing... STM32_Programmer_CLI -c portSWD modeUR -w build/firmware.bin 0x08000000 -v -rst if errorlevel 1 ( echo Flash failed, abort. exit /b 1 ) echo Done.注意命令末尾的 -rst 参数它的作用是在烧录完成后自动复位芯片并开始运行程序。没有这个参数烧完还要手动去按复位键自动化体验就差了一大截。Linux/macOS 下同样逻辑用 shell 脚本写放在项目根目录每次验证只需要./flash.sh一条命令#!/bin/bash set -e echo [1/2] Compiling... make -j$(nproc) echo [2/2] Flashing... STM32_Programmer_CLI -c portSWD modeUR -w build/firmware.bin 0x08000000 -v -rst把这段脚本和AI 生成代码 - 编译 - 烧录的流程绑定后我实测平均每次代码修改到板子跑起来耗时能控制在 20 秒以内。这个节奏对调试 AI 生成代码非常重要因为 AI 出错的模式千奇百怪快速试错才是效率来源。4.3 通过退出码判断烧录是否成功自动化脚本里有一个隐蔽但至关重要的细节利用命令行的退出码exit code判断操作结果。任何语言的脚本都可以读取这个值0 代表成功非 0 代表失败。Windows 批处理里用%errorlevel%判断Linux shell 里用$?判断上面的示例脚本已经用了这个机制。这在 CI/CD 流水线里尤其重要——如果烧录失败流水线应该立刻终止并报警而不是继续跑后面的测试否则你拿到了一堆测试失败的数据其实根因只是烧录环节出了问题。我踩过这个坑有段时间写了一个自动测试脚本烧录后没有判断退出码就继续执行测试程序结果某一批板子的 Flash 某一段始终写不进去测试数据洋洋洒洒跑了一大堆最后定位发现是烧录校验失败前面的测试数据全是没意义的。从那以后我所有自动化脚本一律先判断退出码再往后走。5. 连接不上、烧录失败的排查链路5.1 五种典型连接故障与根因对照不管工具多好用实际使用中一定会遇到连接失败的情况。以下五种现象是我被问得最多的也是我自己实际踩过的列成表格方便对照排查报错现象最常见的根因解决方向No ST-LINK detected驱动没装好 / USB 识别失败检查设备管理器重装驱动换 USB 口Connection error接线错误 / 目标芯片没供电 / SWD 引脚冲突核对 SWDIO、SWCLK、GND 接线确认板子供电Cannot connect to target芯片进入低功耗或死循环按住 RESET 再点连接等连接后松开Note: Target not held in reset芯片复位引脚被外部拉低检查复位电路必要时手动复位Verification failed烧录地址错误 / Flash 本身损坏 / 电压不稳核对地址执行全片擦除后重烧遇到连接问题时我的排查顺序固定为驱动 - 接线 - 供电 - 芯片状态 - 软件配置。按这个顺序来不要跳步。很多人一看到Connection error就开始怀疑软件设置反复折腾 CubeProgrammer 的配置项最后发现是杜邦线松了纯属浪费时间。5.2 芯片读保护导致的烧死怎么救有一种情况特别容易让人误以为芯片烧坏了程序里写入了读保护RDP或者之前调试时不小心把选项字节改成了保护模式。现象是 IDE 里点烧录时直接报错提示连接失败或者无法写入甚至让你怀疑芯片已经报废。STM32 的读保护分三个级别。Level 0 是无保护正常读写Level 1 是中等保护禁止通过调试接口读取 Flash 内容但还可以通过全片擦除来解除Level 2 是最高保护一旦设置就永久生效调试接口完全禁用芯片等同于一次性的无法再被外部工具连接。这里必须重点提醒Level 2 是不可逆操作而且会永久禁用调试接口。不要为了尝鲜去随意设置 Level 2尤其不要在生产固件里默认配成这个级别。很多正规产品出厂确实会用 Level 2 保护固件但那是权衡过风险之后的决策不是开发阶段该做的事。如果芯片被设成了 Level 1解救方法其实很简单先执行一次全片擦除再修改选项字节把 RDP 设回 Level 0。用 CLI 一条命令就能完成STM32_Programmer_CLI -c portSWD modeUR -e all STM32_Programmer_CLI -c portSWD modeUR -ob RDP0xAA执行完再连接就能正常烧录了。注意全片擦除会清掉 Flash 里所有数据如果里面有出厂固件或重要数据需要先备份。判断芯片当前保护级别的办法很简单在 GUI 里读设备信息界面上会明确显示当前 RDP 等级。也可以用 CLI 连接输出日志里会带相关信息。这个信息平时不起眼但一旦出问题它就是判断该走哪条救援路线的依据。5.3 驱动、USB 供电和线材的几个隐蔽坑最后说几个不容易想到的坑每一个我都真金白银踩过。第一个是 USB 延长线和 HUB。调试器插在机箱前面板 USB 口上经常因为供电不足或者信号质量差导致连接不稳定。表现是第一次连接成功烧了两下就断了然后要拔插 USB 才能恢复。这种问题在 Debug 阶段非常恶心。解决办法是把调试器直接插到主板背面的 USB 口如果必须用 HUB选带独立供电的 HUB。我现在的工作台上ST-LINK 永远独占一个机箱背部 USB 口不跟键盘鼠标共享。第二个是板载 ST-LINK 的固件版本问题。如果你用的 Discovery/Nucleo 板子出厂日期较早板载 ST-LINK 固件可能停留在很老的版本。这时即便 CubeProgrammer 能识别到调试器也不一定能正常连接目标芯片甚至会在日志里出现奇怪的报错。解决方法是使用 CubeProgrammer 左侧的 Firmware Updater 功能把板载 ST-LINK 固件升级到最新版。这个坑在二手板子上尤其容易遇到建议拿到任何一块带 ST-LINK 的板子第一时间先升级固件再谈其他。第三个是目标板供电异常。最常见的是目标板自己用 USB 口供电但调试器只接了 SWDIO、SWCLK、GND 三根线没有接 3.3V。这种情况下如果目标板没有独立的电源开关可能出现调试器能枚举到设备但连接目标芯片时失败。原因是芯片其实没上电它的 TDO 等引脚处于高阻状态和调试器握手失败。检查方法很简单用万用表量一下芯片 VDD 引脚的实际电压有 3.3V 才说明板子真的上电了。第四个是线材质量。杜邦线用久了接触电阻会变大SWD 通信速率高时容易出错。如果你发现烧录偶发性失败且换了一根线就好了不要怀疑是玄学低速调试接口同样吃信号完整性。条件允许的话SWD 线长度控制在 10-20 厘米以内效果最稳。6. 固件包管理一个总被忽略但关键时刻救命的功能6.1 如何用 CubeProgrammer 升级 ST-LINK 固件STM32CubeProgrammer 里有一个经常被人忽略的功能Firmware Updater也就是升级 ST-LINK 调试器自身的固件。ST-LINK 和普通 USB 设备一样内部也有一段固件程序在运行ST 会不定期发布新的固件版本修复已知问题、增加对新芯片的支持、提升通信稳定性。尤其是当你在使用比较新的 STM32 芯片时老固件的 ST-LINK 根本不识别新芯片导致连接失败这时升级固件就是唯一解法。操作步骤很简单打开 CubeProgrammer选择左侧 Firmware Updater 标签连接 ST-LINK它会自动检测当前固件版本和最新版本有更新就点 Upgrade。升级过程中千万不能断开 USB 连接或关闭软件否则 ST-LINK 可能变成砖头需要用更底层的方式恢复非常麻烦。升级完成后ST-LINK 会被系统重新枚举虚拟串口可能会发生 COM 口号变化。如果你刚好开着串口助手会发现端口突然消失了再刷新一下又能看到——这是正常现象。但有一点要注意如果板载 ST-LINK 同时承担了虚拟串口功能升级后原来的串口可能需要重新打开才能使用。6.2 哪些迹象提示你该升级 ST-LINK 固件了根据我自己的开发经验出现以下三种迹象时请优先考虑升级固件而不是去折腾其他设置。第一种是 KEIL MDK 或 STM32CubeIDE 提示 ST-LINK 固件版本过低。IDE 的提示一般比较直白比如 ST-LINK Firmware version is too low这种不用犹豫直接去升级。第二种是 CubeProgrammer 能识别到 ST-LINK但连接芯片时出现一些莫名其妙的错误比如读不到 Device ID或者读到的芯片型号与实物不符。ST-LINK 固件对芯片型号的识别依赖固件内置的芯片信息表固件越新支持的芯片越多识别的准确性也越高。第三种是更换了不同主控芯片的板子后有些板能烧、有些板不能烧且错误现象不一致。这种挑板子的表现很大概率就是固件对某些较新或较冷门芯片的支持不完整升级后往往能一并解决。我在同时维护两款不同主控的产品时体会很深。一款是已经很成熟的 F1 系列芯片ST-LINK 用了 N 年固件不升级也一直正常另一款是较新的 G4 系列老固件连接经常失败升级 ST-LINK 固件后一次通过。从那以后我养成一个习惯每过半年左右主动检查一次 ST-LINK 固件是否有更新把它当成定期维护的一部分。7. 绕不开的经验总结把烧录工具当作嵌入式 AI 工作流里的固定一环这篇从安装讲到了实际应用从 GUI 讲到了命令行从正常流程讲到了故障排查。最后聊一点更宏观的感受。如今嵌入式开发一直在往 AI 辅助编程的方向走AI 能帮你生成驱动代码、应用逻辑、甚至整个工程骨架。但无论代码怎么生成最终都要落到物理的芯片上跑起来烧录这一环在可预见的未来都是无法跳过的。一个稳定、顺手、可脚本化的烧录工具事实上决定了AI 写代码 - 真机验证这个闭环能不能转得快。如果你还在纠结这个工具到底有没有必要装我的建议是装。哪怕日常开发全在 IDE 里完成CubeProgrammer 在有突发情况时也是最好的备用工具。比如 IDE 突然抽风连接不上你还有 CLI 可以快速排查比如芯片被锁你还有选项字节这把钥匙。对做嵌入式开发的人来说多一个可靠工具在手边永远不会是坏事。真要做到关键时刻能救命建议把下面三件事记在心里第一安装时务必确认驱动完整尤其是 ST-LINK 和虚拟串口驱动第二上手先学 CLI把烧录命令写进自动化脚本哪怕你还用不上自动化这也能逼你理解烧录的本质参数第三连接出错时按驱动 - 接线 - 供电 - 芯片状态 - 软件配置的顺序排查不要跳步。工具始终是辅助把原理吃透后面遇到再多奇怪的问题也能顺着链路找出根因。这篇就先到这里希望我踩过的这些坑能帮你少烧几块板子、少熬几个夜。
返回列表