嵌入式开发入门知识

嵌入式开发入门知识

有用的知识

何为单片机?

单片机(Microcontroller Unit,MCU)是一块集成了中央处理器(CPU)、内存、定时器和多种输入/输出(I/O)接口的微型计算机芯片

**in short 可以理解为一个非常非常精简的小电脑,甚至于没有操作系统。当然可以移植运行一些极其精简的实时操作系统, 如: FreeRTOS、RT-Thread 等。通常这些系统具有线程、任务、内存管理,方便你开发。

主流的生态选型

STM32

采用 ARM Cortex-M 系列内核(从 M0+ 到最新的 M85),主频跨度极大(几十 MHz 到 800 MHz)。它拥有极高的运算性能和纳秒级的中断延迟,非常适合处理复杂的逻辑、电机控制和传感器融合算法。

特点是便宜,绝对的实时性(对与工业这点很重要), 开发需要非常了解硬件底层要了解 时钟树、中断、DMA、外设寄存器、开发个TCP甚至需要你自己实现..

通常是裸机运行或 FreeRTOS,适合PLC控制器、电机驱动器、工业机器人、温度调节器等,保证绝对的实时性和高可靠性。

ESP32

早期 Xtensa LX6/LX7 双核架构,最新型号全面转向开源的 RISC-V 架构(如 C3/C6/P4)。其主频通常在 160MHz~400MHz 之间

**特点是原生集成 Wi-Fi 、BLE、Zigbee 自带支持协议栈 MQTT、HTTP/HTTPS、WebSocket、CoAP 等开箱即用。它开发相对简单点支持 MicroPython(可以理解为python) 脚本控制,大幅降低入门门槛。

缺点是实时性不足(Wi-Fi 协议栈会占用大量 CPU 时间,中断延迟不可预测)

单片机的架构

架构决定了它的指令集、功耗和生态兼容性。如同桌面的端分为ARM和X86 架构 目前市场上主要分为两大阵营:

  • ARM Cortex-M 系列: 这是目前 32 位单片机领域的绝对霸主。ARM 公司只设计内核架构并授权给其他芯片厂商,自己不生产芯片。全球有 40 多家企业获得了授权,比如意法半导体(ST)、恩智浦(NXP)、微芯(Microchip)等。
    • 特点: 拥有统一的开发工具和软件生态,不同厂家的 Cortex-M 芯片在代码层面有很高的兼容性。从低功耗的 M0+ 到带浮点运算和 DSP 指令的 M4/M7,再到支持 AI 加速的 M55/M85,产品线极其丰富。
    • 代表产品: ST 的 STM32 系列、NXP 的 Kinetis 系列。
  • RISC-V 架构: 这是一个开源的精简指令集架构,近年来发展迅猛。
    • 特点: 指令集开源免费,允许厂商高度自定义,打破了 ARM 的垄断。在物联网和国产替代场景中非常活跃。
    • 代表产品: 乐鑫科技的 ESP32-C3、兆易创新的 GD32VF103。

32位数

STM32 和 ESP32 中的"32",指的都是 CPU 的通用寄存器宽度为 32 位。

那就是意味着:CPU 在一个时钟周期内可以直接对 32 位数据进行运算(加减乘除、逻辑运算等)

也意味着:这个CPU能管理的内存最大能寻址 2^32 个内存单元(管理最小的内存单元是Byte),也就是 4GB(2^32 Bytes=4GB 2^32 Bytes=4 GB )。这就是为什么 32 位 Windows 电脑最多只能识别 4G 内存的原因。

有用的资料

嵌入式开发入门 - https://stm32f407-tech-doc.readthedocs.io/en/latest/pre/1嵌入式入门/嵌入式入门.html

波特律动 - https://docs.keysking.com/

HAL库函数速查手册 - https://docs.keysking.com/docs/stm32/HAL/

FreeRTOS极速通关 - https://docs.keysking.com/docs/stm32/freertos/course

TM32CubeMX 工程创建 - https://x509p6c8to.feishu.cn/wiki/LfMpwjktZiMAuMkayt6c0LGZnpx

STM32 的开发IDE

Keil

https://www.keil.com/download/product/

Keil 是一款由德国 Keil 公司开发、后被美国 ARM 公司收购的嵌入式系统集成开发环境(IDE) ,主要用于 ARM、8051、C166 等微控制器的软件开发。在 STM32 开发领域,大家常说的"Keil"通常指的是 Keil MDK(Microcontroller Development Kit) ,其核心编译器为 ARMCC / ARMCLANG

在 ARM Cortex-M 系列(如 STM32、NXP、GD32 等)开发中,Keil 是使用最广泛的 IDE 之一,尤其在工业控制、汽车电子等领域几乎是行业标杆。

但它是个收费软件,未注册时编译有 32KB 代码大小限制

配置连接

工具栏上的"魔术棒"图标(Options for Target)

  • 选择调试器 :在右侧的下拉菜单 Use: 中,根据你实际使用的硬件选择对应的调试器。例如使用 ST-Link 就选 ST-Link Debugger,使用 J-Link 就选 J-Link / J-Trace Cortex
  • 进入详细设置 :点击右侧的 Settings 按钮,在弹出的窗口中:
    • Port(接口模式) :选择 SW (Serial Wire),这是目前最主流的调试接口。
    • Max Clock(最大频率):初次连接建议设为较低的频率(如 1MHz 或 2MHz),连接稳定后再适当调高以加快下载速度。
    • Connect & Reset Settings(连接与复位) :强烈建议勾选 Connect: under Reset。这个选项能让调试器在芯片处于复位状态时强行建立连接,能有效解决很多因程序跑飞或低功耗模式导致的"无法连接"问题。

串口重定向 (ASSIGN)

注意该命令仅在仿真环境中有效!

KEIL 的 ASSIGN 命令本质上是在软件仿真层面进行了一次"信号劫持"或"虚拟映射"。它会将单片机内部串口(UART/USART)发出的数据,直接通过 J-Link/SWD 调试接口传输到你的电脑屏幕上,从而绕过了物理硬件引脚

在 Keil 仿真器中,单片机的串口被抽象为虚拟通道,通常支持 4 个串口

单片机外设 Keil 虚拟通道 (输入/输出) 常用映射目标
USART1 / UART1 S0IN / S0OUT WIN1COMx
USART2 / UART2 S1IN / S1OUT WIN2COMx
USART3 / UART3 S2IN / S2OUT WIN3COMx
UART4 S3IN / S3OUT WIN4COMx

执行命令

调试模式下 -> View -> Command Window

如果只想在 Keil 内部直接看打印,不需要外接任何工具:

复制代码
ASSIGN WIN1 <S0IN> S0OUT
  • 把 串口1直接劫持显示在 Keil 的 View -> Serial Windows -> UART #1 窗口中
ini 复制代码
ASSIGN WIN1 <S3IN> S3OUT

把 MCU 的 UART4 映射到 Keil 的 UART #1 窗口

串口重定向 debug.ini

每次进入调试都要手动敲命令很麻烦,你可以将这些命令写进一个 .ini 配置文件(例如命名为 debug.ini),然后在 Keil 中自动加载:

  1. 新建一个 debug.ini 文本文件,内容如下:
ini 复制代码
MODE COM2 115200,0,8,1
ASSIGN COM2 <S3IN> S3OUT

在使用 ASSIGN 之前,通常需要先用 MODE 命令设置好电脑端串口的波特率等参数。例如:MODE COM2 115200,0,8,1(设置 COM2 波特率为 115200,无校验位,8位数据,1位停止位)

  1. 在 Keil 中点击"魔法棒" -> Debug 选项卡。

  2. 勾选右侧的 Initialization File ,浏览并选中你刚刚创建的 debug.ini 文件。

    这样,以后每次点击 Debug 进入仿真时,Keil 就会自动帮你执行这些映射命令了。

  3. 准备虚拟串口软件 :使用如 VSPD (Virtual Serial Port Driver) 等软件,在电脑上创建一对互相连通的虚拟串口(例如创建了 COM2 <-> COM3 这一对)。

    1. 打开串口助手 :在你的电脑串口调试助手(如 XCOM、SSCOM)中,选择 COM3(也就是和 COM2 配对的那个端口),设置好相同的波特率(115200)并打开串口。

debuger track (printf) Viewer

在 Keil 的 Debug (printf) Viewer 窗口中查看 printf 的输出,核心步骤是在代码中将输出重定向到 ARM Cortex-M 内核内置的 ITM(Instrumentation Trace Macrocell) 端口

  • 工程配置:
    • 在 Target Options -> Debug -> Settings 中,确保选择了 ST-Link 或 J-Link。
    • 在 Debug 选项卡中,启用 "Enable Debug Printf Viewer"
    • Trace 选项卡中,勾选 Trace Enable ,并设置正确的 Core Clock(CPU 主频)。
  • 代码重映射: 在代码中重映射 fputc 到 ITM/SWO (无需额外硬件)
c 复制代码
 int fputc(int ch, FILE *f)
  {
      ITM_SendChar((uint32_t)ch);
      return ch;
  }

如果你的工程中已经包含了 CMSIS 的核心头文件(如 core_cm4.hcore_cm7.h 等),也可以直接调用封装好的 ITM_SendChar(ch); 函数来代替上述的手动寄存器操作。

在芯片的默认复用功能配置(AF0)下,PB3 引脚同时具备 JTAG 调试输出(JTDO)和 SWO 跟踪输出的功能。确认该引脚已连接到 J-Link 的 SWO 脚。

  • 勾选微库(MicroLIB) :点击工具栏的魔术棒图标(Options for Target),在 Target 选项卡中,务必勾选 Use MicroLIB 。这是为了让 printf 能够适配资源受限的嵌入式环境。

  • 查看打印: 启动调试,在菜单栏选择 View -> Serial Windows -> Debug (printf) Viewer

  • 获取 Core Clock?

在代码中添加或找到系统全局变量 SystemCoreClock

启动 Keil 仿真调试(Debug 模式)。

SystemCoreClock 添加到 Watch 1 窗口。

STM32CubeMX

https://www.st.com.cn/zh/development-tools/stm32cubemx.html#tools-software

STM32CubeMX 是意法半导体(ST)官方推出的一款图形化配置工具 ,专门用于简化 STM32 系列芯片的开发流程。它的牛逼在于:用鼠标点选代替手动配置寄存器,并能自动生成完整的初始化 C 代码。

强烈推荐新同学, 它可以通过可以提供图形化:

  • 配置每个引脚的功能(如 GPIO、UART、SPI 等),并自动检测引脚
  • 图形化的时钟树界面,可以直观地设置系统时钟、外设时钟的分频和倍频参数,并实时验证配置是否合法。
  • 支持 UART、SPI、I2C、等外设的参数配置,以及 FreeRTOS、FatFS、LwIP、USB 等中间件的集成。
  • 关键的是它免费!

STM32 的烧录

J-Link 和 ST-Link 与 STM32 的通讯方式主要有两种:SWDJTAG

通讯方式(SWD 与 JTAG)

这两种工具本质上都是将电脑上的调试指令翻译成单片机(MCU)能听懂的电信号。目前最常用的是 SWD 模式。

SWD(Serial Wire Debug)

ARM 公司推出的一种新型调试协议,最大的优势是极其省引脚 。它只需要 2 根信号线(加上电源和地线共 4 根)就能实现完整的下载和调试功能。

SWD全称是Serial Wire Debug(串行调试),SWD模式下用JLink给我们的板子debug时,是用标准的二线DIO和CLK,RESET管脚可不接,当你频繁下载失败时,可接上RESET管脚再试。

在高速模式下,SWD比JTAG更可靠一些,常见的接线信号如下所示,根据具体情况自主选择。

  • 核心引脚
    • SWCLK:时钟线,由调试器发出节拍同步操作。
    • SWDIO:双向数据线,负责传输命令和数据。
  • 现状:因为占用的 MCU 引脚极少,现在绝大多数 STM32 项目都默认使用 SWD 模式进行开发。

SWD模式下,SWDIO的上拉电阻可预留不贴,在ST的一些MCU参考设计中,有提到建议添加,实际测试不加不影响下载。

JTAG (Joint Test Action Group)

一种标准的国际标准测试协议。它的功能非常强大,除了调试,还支持复杂的"边界扫描"测试(用于检查 PCB 板上的芯片连通性)。

JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试,现在多数的器件都支持JTAG协议,ARM、DSP、FPGA等,JTAG接口的单片机用电脑USB下载调试程序,需要用到J-Link(USB转JTAG)。

标准的JTAG是四线:TDI,TMS,TCK,TDO,分别对应数据输入,模式选择,时钟,数据输出,复位管脚可不接。

  • 核心引脚:TCK(时钟)、TMS(模式选择)、TDI(数据输入)、TDO(数据输出),有时还需要 TRST(复位)。

关于复位引脚

RST (nRESET) 复位引脚。

如果你的单片机代码中已经正确配置并开启了 SWD 调试功能(比如使用了 Serial Wire 模式),那么 RST 线是可以不接的,仅靠上面的 4 根线就能完美下载和调试。

如果你不小心在代码里

复制代码
__HAL_AFIO_REMAP_SWJ_DISABLE(); // 关闭SWD、JTAG接口

把 SWD 调试引脚禁用了(或者配置成了普通 GPIO),导致单片机"变砖"无法连接,这时候就必须接上 RST 线。通过在复位状态下强行连接(Connect under Reset),才能重新夺回单片机的控制

短接复位

如果你的板子没有引出复位按键,就需要找到单片机芯片旁边的 复位电路 。通常是一个贴片电容或贴片电阻,一端连着单片机的 NRST 引脚,另一端连着 GND(地)。

用金属镊子或一根杜邦线,短接这个复位电容/电阻的两端(也就是把 NRST 引脚强行拉低到 GND)。

修改 Keil 调试设置

  • 如果你的调试器(如 ST-Link、J-Link)连接了单片机的 RST 复位引脚,可以直接在 Keil 里设置,让软件自动完成"按住复位烧录"的动作:
  1. 点击 Keil 的魔术棒图标(Options for Target) -> Debug -> Settings
  2. 找到 Connect & Reset Options(连接与复位选项)区域。
  3. Connect 选项改为 Under Resetwith Pre-reset
  4. 点击确定后,再次正常点击烧录,调试器就会自动先拉低复位引脚,阻止错误代码运行,从而顺利烧录新程序。

在实际接线中,真正干活的通常只有以下 4 到 5 根线:

引脚名称 实际作用 注意
GND 共地。提供信号参考基准,消除电平偏差。 最容易被忽视! 如果不接 GND,通信会直接失效或极其不稳定。
SWCLK 时钟线。由 ST-Link 发出节拍,同步所有操作。 接反了或者虚焊,软件会提示"找不到目标设备 (Target not found)"。
SWDIO SWOTDO 数据线。双向传输命令和数据,读写全靠它。 dio 和 clk容易接反!
V_TGT / TVCC 电压检测。仅用于检测目标板是否有电及电平匹配。 严禁当作主供电引脚! 目标板已有独立电源时若强行接入,可能导致电流倒灌烧坏芯片。
NRST / RESET 复位控制。允许 ST-Link 主动重启 MCU。 不接的话,如果程序跑飞或关闭了调试接口,就只能手动按板子上的复位键。

J-Link 和 ST-Link 一样,都是连接电脑与单片机(如 STM32)的调试下载器,但它是由德国 SEGGER 公司开发的高性能通用调试探针,兼容市面上几乎所有的 ARM Cortex-M 内核芯片。

目前最主流、最推荐使用的同样是 SWD 模式,它只需要极少的几根线就能完成工作。

J-Link 通常使用标准的 10-pin (2x5) 接口,真正干活的通常只有以下 4 到 5 根线:

引脚名称 实际作用 注意
GND 共地。提供信号参考基准,消除电平偏差。 最容易被忽视! 如果不接 GND,通信会直接失效或极其不稳定。
SWCLK/clk 时钟线。由 J-Link 发出节拍,同步所有操作。 接反了或者虚焊,软件会提示"找不到目标设备 (Target not found)"。
SWDIO/dio 数据线。双向传输命令和数据,读写全靠它。 dio 和 clk容易接反!
VTref/vt3.3 电压检测。仅用于检测目标板的工作电压以匹配电平。 严禁当作主供电引脚! 绝对不能把 5V 接到 VTref 上,否则会直接烧毁 J-Link!
RESET/rst 复位控制。允许 J-Link 主动重启 MCU。 不接的话,如果程序跑飞或关闭了调试接口,就只能手动按板子上的复位键。

关于引脚共用

以最常见的 STM32 为例, 其调试引脚的复用关系如下:

STM32 引脚 复用的调试功能 说明
PA13 SWDIO / JTMS 在 SWD 模式下作数据线,在 JTAG 下作模式选择
PA14 SWCLK / JTCK 在 SWD 模式下作时钟线,在 JTAG 下作时钟
PA15 JTDI 仅在完整 JTAG 模式下作为数据输入
PB3 JTDO / TRACESWO 在 JTAG 下作数据输出,或输出跟踪数据
PB4 NJTRST JTAG 的复位引脚
虽然它们共用物理引脚,但不能同时激活。STM32 在上电启动时,会根据内部配置(如选项字节)自动决定这一组引脚是进入 SWD 模式、JTAG 模式,还是被释放出来当作普通的 GPIO(输入/输出)引脚使用。

在日常开发 STM32 时,除非有特殊的板级测试需求,否则推荐使用 SWD 通讯方式。它不仅能帮你省下宝贵的 MCU 引脚,而且接线简单(只需 4 根线),J-Link 和 ST-Link 都能完美支持

固件的格式

格式 扩展名 说明
二进制文件 .bin 原始二进制镜像,不含地址信息,烧录时需手动指定起始地址
Intel HEX .hex ASCII编码的十六进制格式,包含地址、数据和校验信息,可读性强
ELF文件 .elf 可执行与可链接格式,包含完整的符号表、调试信息和段信息
AXF文件 .axf ARM编译器生成的可执行格式,本质上是ELF的变种
OUT文件 .out 编译器输出的可执行文件格式
S-Record .srec / .s19 摩托罗拉S-record格式,类似HEX的ASCII编码格式
  • .bin 文件 :体积最小,不含任何元数据。适合量产烧录,但需要开发者明确知道烧录起始地址 (如 STM32 Flash 起始地址 0x08000000)。
  • .hex 文件:包含地址信息和校验和,烧录工具可自动解析地址,不易出错。Keil MDK 默认生成此格式,适合开发和调试阶段使用。
  • .elf/.axf 文件 :包含完整的调试符号信息,适合需要在线调试的场景。STM32CubeIDE 默认生成 .elf 文件。
  • .srec/.s19 文件:与 HEX 类似,是摩托罗拉制定的标准格式,在某些工业领域较为常见。

烧录工具软件

https://www.st.com/en/development-tools/stsw-link004.html

STM32 ST-LINK Utility 是意法半导体(ST)官方推出的一款轻量级图形化烧录工具,专用于 STM32 系列微控制器的 Flash 编程与调试辅助。它独立于 Keil、IAR 等大型 IDE,可以直接加载编译好的固件文件完成烧录。

ST 官方目前已将开发重心转向新一代工具 STM32CubeProgrammer,它支持更多文件格式(.elf、.axf、.srec 等)、跨平台(Windows/Linux/macOS),并提供图形界面和命令行两种模式。不过 ST-LINK Utility 因其轻量、简洁的特点,在研发调试和简单烧录场景中仍然被广泛使用。

固件备份

  1. **连接芯片

    • 点击菜单栏 TargetConnect,与 STM32 芯片建立连接
    • 连接成功后,软件界面会显示目标 MCU 的型号、Flash 大小等信息
  2. 读取芯片内存

    • 点击菜单栏 TargetRead Memory
    • 在弹出的窗口中设置读取参数:
      • 起始地址(Start Address) :通常为 0x08000000(STM32 Flash 起始地址)
      • 数据长度(Size):根据芯片 Flash 容量填写(如 64KB、128KB、512KB 等)
    • 点击开始读取,软件会将芯片 Flash 内容读出并在内存浏览器中显示
  3. 保存为文件

    • 读取完成后,点击菜单栏 FileSave As
    • 选择保存格式:
      • Raw Binary Image (.bin):二进制格式,体积最小,适合量产备份
      • Intel HEX (.hex):包含地址和校验信息,可读性强
    • 设置起始地址和长度(与读取时保持一致)
    • 选择保存路径,点击保存即可完成固件备份

命令脚本烧录

复制代码
"C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe" -c SWD UR -P "E:\workspace\embedded\lora-gateway\lora-gateway-eth\Project\Objects\demo.hex" -V -Rst

STM32CubeProgrammer

https://www.st.com/en/development-tools/stm32cubeprog.html

"复位连接"模式(Under Reset)

  1. 打开 STM32CubeProgrammer,在右上角的连接方式下拉框中选择你的调试器(如 ST-LINKJ-LINK)。
  2. 点击调试器旁边的 齿轮图标(配置/设置按钮)。
  3. 在弹出的设置窗口中,找到 Reset mode(复位模式) 选项。
  4. 将其从默认的 Software system reset 修改为 Hardware resetConnect under reset
  5. 保存设置后,直接点击主界面的 Connect 按钮。此时软件会自动控制调试器的 NRST 引脚来复位芯片并建立连接。

固件备份

  1. 在软件左侧的菜单栏中,点击 Memory & File editing(内存和文件编辑)图标(通常是一个类似内存条的图标)。
  2. 在右侧弹出的界面中,确保 Memory 选项卡被选中。
  3. 设置读取参数
    • Address(起始地址) :STM32 内部 Flash 的起始地址通常是 0x08000000
    • Size(读取大小) :输入你想要备份的字节数。如果你不确定固件实际有多大,可以直接输入芯片的 Flash 总容量(例如 STM32WLE5CC 的 Flash 是 256KB,即 0x40000 字节;或者直接在 Size 框里输入十进制的 262144)。
  4. 点击 Read 按钮。此时,软件会将芯片 Flash 中的数据读取出来,并在下方的十六进制编辑器中显示。
  5. 点击界面上方的 Save as(另存为)按钮。
  6. 在弹出的保存窗口中,选择保存路径,文件类型选择 Binary ,并将其命名为例如 firmware_backup.bin,点击保存即可。

注意备份选项字节(Option Bytes)

  1. 在左侧菜单栏点击 OB(Option Bytes)图标。
  2. 界面会加载出当前芯片的各项配置(如 RDP 等级、BOR 等级、用户配置字节等)。
  3. 手动记录截图保存 这些配置。如果以后需要克隆芯片,烧录完 .bin 后,需要在这里把参数改成一模一样的并点击 Apply 写入。

还原选项字节(Option Bytes)

先把芯片的"底层配置"恢复回去,这样能确保烧录固件时的运行环境(如启动模式、看门狗、读写保护等)与之前完全一致。

  1. 在软件左侧菜单栏点击 OB(Option Bytes)图标。
  2. 对照你之前截图或记录的配置 ,在界面上将各项参数(如 RDP 等级、BOR 等级、用户配置等)修改为备份时的状态。
    • 小技巧 :如果你当时使用了 -ob displ 命令备份了配置代码,可以直接在 Erasing & Programming 界面的 Automatic Mode(自动化模式)下的 Option bytes commands 输入框中,粘贴那行命令(例如 -ob rdp=0xAA bor_lel=0...),点击运行即可一键还原。
  3. 修改完成后,点击界面右上角的 Apply 按钮。
  4. 重要提醒 :选项字节写入后,建议手动给板子断电再重新上电(或按一下复位键),让新的配置彻底生效。

还原/烧录固件

配置环境就绪后,就可以把备份的程序代码写回芯片了。

  1. 在左侧菜单栏点击 Erasing & Programming(擦除与编程)图标。
  2. 在右侧界面进行如下设置:
    • File path :点击 Browse,选择你之前备份的固件文件(.bin.hex)。
    • Start address :如果是 .hex 文件,地址会自动识别;如果是 .bin 文件,务必手动填入起始地址 0x08000000
    • 勾选擦除与验证 :建议勾选 Full chip erase(整片擦除,确保没有旧数据干扰)和 Verify programming(编程后校验,确保烧录万无一失)。
  3. 点击 Start Programming 按钮。
  4. 等待进度条走完,当下方 Log 窗口显示 "File download complete" 和 "Download verified successfully" 时,说明固件已成功还原。

J-Flash

https://www.segger.com/downloads/jlink/

J-Flash 是德国 SEGGER 公司开发的一款专业级 Flash 编程与固件烧录工具,作为 J-Link 调试器配套软件包(J-Link Software and Documentation Pack)的一部分发布,广泛应用于 ARM Cortex-M 系列 MCU 的研发调试和量产烧录场景

烧录

  1. Target → Select Target 选择芯片型号
  2. Target → Connect 连接芯片
  3. File → Open data file 加载固件
  4. Target → Program & Verify 开始烧录

固件备份

  1. 创建工程 :打开 J-Flash,点击菜单栏的 File -> New Project。在弹出的设备选择框中,厂商(Manufacturer)选择 STMicroelectronics,设备(Device)找到并选择你的芯片型号 STM32F407ZGT6,点击 OK。
  2. 连接目标板 :点击菜单栏的 Target -> Connect(或直接按快捷键 F2)。如果连接成功,软件底部的日志窗口会提示 "Connected",并显示出芯片的 Flash 大小、内核等信息。
  3. 读取并保存固件
    • 点击菜单栏的 Target -> Read back -> Entire chip(读取整个芯片的 Flash 内容)。
    • 读取完成后,点击 File -> Save data file as...
    • 在保存类型中,建议选择 Intel Hex (*.hex) 格式(自带地址信息,兼容性最好),或者 Binary (*.bin) 格式(纯二进制数据)。

字节选项

  1. 在 J-Flash 主界面下方的地址输入框中,输入选项字节的起始地址(不同芯片地址不同):
    • STM32F1/F2/F4 系列0x1FFFF8000x1FFFC000
    • GD32 系列0x1FFFF800
  2. 按回车后,内存窗口会显示选项字节内容(通常 16 字节)
  3. 手动记录或通过 FileSave data file as... 保存该地址范围的数据
相关推荐
拾光Ծ17 天前
【Linux系统】线程(上)
java·linux·运维·jvm·线程·c/c++
故事还在继续吗22 天前
高性能网络
服务器·网络·c/c++
YYYing.25 天前
【C++项目之高并发内存池 (三)】万字解析CentralCache与PageCache的初步实现
c++·笔记·哈希算法·高并发·c/c++·内存池
Qt程序员1 个月前
【无标题】
linux·c++·消息队列·共享内存·c/c++·管道·信号量
YYYing.1 个月前
【C++项目之高并发内存池 (二)】整体框架设计与ThreadCache的初步实现
笔记·高并发·线程池·c/c++
YYYing.1 个月前
【C++项目之高并发内存池 (一)】项目介绍与定长内存池的构建
项目·c/c++·内存池·池化技术
杰 .2 个月前
立即数与算术转换
开发语言·c/c++
十年编程老舅2 个月前
深入 Linux 中断:原理详解 + 实战落地
linux·网络·linux内核·c/c++·中断
夏乌_Wx2 个月前
剑指offer | 2.4数据结构相关题目
数据结构·c++·算法·剑指offer·c/c++