安全启动和安全固件更新(SBSFU)2:环境搭建

第2篇:环境搭建 ------ Keil MDK 与硬件准备


目录

  1. 硬件准备
  2. [Keil MDK-ARM 安装](#Keil MDK-ARM 安装)
  3. [STM32CubeProgrammer 安装](#STM32CubeProgrammer 安装)
  4. 终端模拟器安装
  5. [Python 环境配置](#Python 环境配置)
  6. 路径长度注意事项(重要)
  7. 环境验证清单

1. 硬件准备

1.1 NUCLEO-G474RE 开发板

本教程使用 ST 官方出品的 NUCLEO-G474RE 开发板:

复制代码
┌─────────────────────────────────────────────┐
│              NUCLEO-G474RE 正面              │
│                                             │
│  ┌─────────┐                    ┌─────────┐ │
│  │  CN1    │                    │  CN2    │ │
│  │ ST-LINK │                    │ 用户USB  │ │
│  │ USB口   │                    │         │ │
│  └────┬────┘                    └─────────┘ │
│       │                                     │
│  ┌────┴────────────────────────────────┐    │
│  │    板载 ST-LINK/V3 调试器            │    │
│  │    · SWD 调试接口                    │    │
│  │    · 虚拟串口 (VCOM)                 │    │
│  │    · 供电 (3.3V / 5V)               │    │
│  └─────────────────────────────────────┘    │
│                                             │
│  ┌─────────────────────────────────────┐    │
│  │        STM32G474RET6 主控芯片        │    │
│  │        64-pin LQFP封装               │    │
│  └─────────────────────────────────────┘    │
│                                             │
│  ┌──────┐  ┌──────┐  ┌──────────────┐      │
│  │ LD2  │  │ B1   │  │ Arduino/Morpho│      │
│  │ 绿LED│  │ 蓝按钮│  │ 扩展接口      │      │
│  └──────┘  └──────┘  └──────────────┘      │
└─────────────────────────────────────────────┘

ST-LINK 指示灯说明:

LED 颜色 含义
LD1 (COM) 红/绿 ST-LINK 通信指示灯,闪烁表示正在通信
LD2 (PWR) 绿 电源指示灯,常亮表示供电正常
LD3 (用户) 绿 用户可编程 LED,连接 PA5

1.2 STM32G474RET6 关键参数

参数 规格 对本项目的影响
CPU 内核 ARM Cortex-M4F(带 FPU + DSP) 支持硬件浮点运算,加密算法性能好
最高主频 170 MHz ECDSA P-384 验签操作约需几十毫秒
Flash 容量 512 KB SBSFU 占 64KB + Active 216KB + Download 216KB + Swap 8KB = 504KB
Flash 页大小 2 KB Swap 操作的基本单位
SRAM 容量 128 KB(SRAM1 96KB + SRAM2 32KB) SBSFU+SE 使用 SRAM2(32KB),UserApp 使用 SRAM1(96KB)
CCM SRAM 32 KB(0x10000000) 核心耦合内存,可用作高速数据缓冲区
调试接口 SWD(Serial Wire Debug) 板载 ST-LINK/V3 使用此接口
封装 LQFP-64 NUCLEO 开发板

1.3 所需硬件清单

物品 数量 说明
NUCLEO-G474RE 开发板 1 块 约 80-120 元人民币,各大电子商城有售
Micro-USB 数据线 1 根 必须支持数据传输,纯充电线不能用
电脑 1 台 Windows 10/11,至少有 10GB 空闲空间

重要提示:市面上有很多"充电线"只接了电源线(VCC/GND),没接数据线(D+/D-),这种线插上后只能供电,ST-LINK 无法识别。如果不确定你的线是否支持数据,用手机的"数据传输"模式测试一下。

1.4 硬件连接

复制代码
连接非常简洁(只需要一根线):

  ┌─────────┐         Micro-USB 线         ┌──────────────────┐
  │  电脑    │ ═══════════════════════════> │ NUCLEO-G474RE    │
  │ USB 口   │                              │ CN1 (ST-LINK口)  │
  └─────────┘                              └──────────────────┘
                                                   │
                                         板载 ST-LINK/V3 同时提供:
                                           · SWD 调试/烧录
                                           · 虚拟串口 (VCOM)  
                                           · 5V 供电

NUCLEO 板上有两个 USB 口:CN1 是 ST-LINK 口(调试 + 虚拟串口 + 供电),CN2 是用户 USB 口(直连芯片的 USB 外设)。本教程只需要连接 CN1。 CN2 在本项目中不使用。

1.5 首次连接验证

将开发板通过 Micro-USB 线连接到电脑后:

  1. LD2(绿色电源灯) 应该常亮

  2. LD1(红/绿 COM 灯) 应该闪烁(ST-LINK 初始化通信)

  3. 打开 Windows 设备管理器 → 端口 (COM 和 LPT) → 应看到 "STMicroelectronics STLink Virtual COM Port (COMx)"

  4. 打开 Windows 设备管理器 → 通用串行总线设备 → 应看到 "ST-Link Debug"

    设备管理器检查项:

    端口 (COM 和 LPT)
    └── STMicroelectronics STLink Virtual COM Port (COM3) ← 虚拟串口

    通用串行总线设备
    └── ST-Link Debug ← 调试器

    如果看不到以上两项,说明:

    • 使用的是充电线(不是数据线)
    • ST-LINK 驱动未安装(安装 Keil 或 CubeProgrammer 时会自动安装)
    • USB 口供电不足(换一个 USB 口试试)

2. Keil MDK-ARM 安装

2.1 版本要求

  • MDK 5.36 及以上版本
  • 本工程 SBSFU 编译产物约 60KB+,超出 MDK-Lite(免费版)的 32KB 限制
  • 需要 MDK-ARM ProfessionalMDK-ARM Plus 许可证
  • 如果不能获取商业许可证,可以考虑:
    • ST 提供的免费社区许可证(偶尔有活动)

    • Keil 的 30 天全功能试用版

    • 使用 STM32CubeIDE(免费,但本系列以 Keil 为主)

      各版本限制对比:

      ┌───────────────┬──────────────┬──────────────┬──────────────┐
      │ 版本 │ Lite │ Plus │ Professional │
      ├───────────────┼──────────────┼──────────────┼──────────────┤
      │ 代码大小限制 │ 32KB │ 256KB │ 无限制 │
      │ SBSFU 能编译? │ ❌ 不行 │ ✅ 可以 │ ✅ 可以 │
      │ 价格 │ 免费 │ 约 2000 │ 约 4000 │
      └───────────────┴──────────────┴──────────────┴──────────────┘

2.2 下载地址

  1. Keil MDK-ARMhttps://www.keil.com/download/product/
    • 下载最新版本的 MDK-ARM 安装包(例如 MDK5xx.EXE)
  2. STM32G4xx Device Family Pack (DFP)
    • 方式一:在 Keil 内通过 Pack Installer 在线下载(推荐)
    • 方式二:从 Keil 官网下载离线 .pack 文件:https://www.keil.com/dd2/pack/

2.3 安装步骤

第一步:安装 MDK-ARM 主程序

复制代码
操作步骤:
  1. 运行 MDK5xx.EXE(以管理员身份运行)
  2. 点击 "Next" 进入许可协议页面
  3. 勾选 "I agree..." → Next
  4. 选择安装路径:
     - 核心组件: C:\Keil_v5 (建议默认)
     - Pack 下载路径: C:\Keil_v5\ARM\PACK (建议默认)
  5. 填写用户信息(First Name, Last Name, Company, Email)
  6. 等待安装完成(约 5-10 分钟)
  7. 安装过程中会弹出驱动安装窗口:
     - "Keil ULINK Drivers" → 勾选安装
     - "ST-Link Drivers" → 必须安装
     - "Segger J-Link Drivers" → 可选(本教程用不到)
  8. 完成安装,先不要打开 Keil

[截图位置:Keil 安装向导的组件选择界面]
[截图位置:安装完成后自动弹出的 Pack Installer 窗口]

第二步:安装 STM32G4xx Device Family Pack

复制代码
方法一(在线安装,推荐):
  1. 打开 Keil μVision5
  2. 点击工具栏上的 "Pack Installer" 图标(绿色芯片图标)
  3. 在左侧列表中找到 "STMicroelectronics" → "STM32G4 Series"
  4. 点击 "STM32G4xx_DFP" → 点击右侧的 "Install" 按钮
  5. 等待下载和安装完成(可能需要几分钟,取决于网速)

[截图位置:Pack Installer 中搜索 STM32G4 的界面]

方法二(离线安装):
  1. 从 https://www.keil.com/dd2/pack/ 下载 STM32G4xx_DFP.x.x.x.pack
  2. 双击 .pack 文件,自动导入 Keil
  3. 或在 Pack Installer 中: File → Import → 选择 .pack 文件

第三步:激活许可证

复制代码
操作步骤:
  1. 打开 Keil μVision5
  2. 菜单栏: File → License Management
  3. 如果还没有许可证:
     - 单机版: 在 "Computer ID" (CID) 旁看到一串字符
     - 将此 CID 提供给 Keil 获取 LIC(License ID)
     - 输入 LIC 后点击 "Add LIC"
  4. 激活成功后,License Management 窗口显示产品名称和使用期限

[截图位置:License Management 对话框界面]

2.4 验证 Keil 安装

复制代码
验证步骤:
  1. 打开 Keil μVision5
  2. 菜单栏: Project → New μVision Project...
  3. 随便输入一个项目名(如 "test"),点击保存
  4. 在弹出的芯片选择窗口中,搜索 "STM32G474RE"
  5. 如果能找到并选中 STM32G474RETx → 安装成功!

  ┌─────────────────────────────────────┐
  │ Select Device for Target ...        │
  │                                     │
  │ Search: [STM32G474RE      ]         │
  │                                     │
  │  Software Packs                     │
  │  ├── STMicroelectronics             │
  │  │   └── STM32G4 Series             │
  │  │       └── STM32G474             │
  │  │           └── STM32G474RETx  ← 应能看到此芯片 │
  │                                     │
  └─────────────────────────────────────┘

  6. 取消创建(不需要保存测试工程)
  
[截图位置:Keil 新建工程时的芯片选择对话框]

3. STM32CubeProgrammer 安装

3.1 用途说明

STM32CubeProgrammer 是 ST 官方的全能编程工具,本项目中会用于:

功能 说明
烧录固件 将编译好的 SBSFU 固件烧录到开发板
Option Bytes 配置 查看和修改 RDP、PCROP、WRP、DBANK 等安全配置
全片擦除 在烧录前将芯片恢复到出厂状态
ST-LINK 固件升级 确保板载 ST-LINK 的固件是最新版本
CLI 命令行工具 在后编译脚本 (postbuild.bat) 中用于合并固件

3.2 下载与安装

复制代码
操作步骤:
  1. 访问 ST 官网下载页面:
     https://www.st.com/en/development-tools/stm32cubeprog.html
  2. 点击 "Get Software" 按钮(需要登录 ST 账号,免费注册)
  3. 下载 Windows 版本安装包
  4. 运行安装程序,一路 Next(默认路径即可)
     默认安装路径: C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\
     CLI 工具路径: C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\
  5. 安装完成后重启电脑(确保驱动生效)

[截图位置:STM32CubeProgrammer 下载页面和安装向导]

路径硬编码警告 :后编译脚本中可能硬编码了 CubeProgrammer 的安装路径。如果你的安装路径不同(比如安装在 D 盘,或者安装了不同版本),需要修改编译脚本中 programmertool 变量的值。后续文章会详细说明。

3.3 CLI 命令行工具

STM32CubeProgrammer 同时提供图形界面和命令行版本:

复制代码
CLI 工具位置(默认):
  C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\STM32_Programmer_CLI.exe

CLI 常用命令示例:

  # 连接设备并读取信息
  STM32_Programmer_CLI.exe -c port=SWD -r

  # 烧录固件
  STM32_Programmer_CLI.exe -c port=SWD -w firmware.hex -v

  # 全片擦除
  STM32_Programmer_CLI.exe -c port=SWD -e all

  # 读取 Option Bytes
  STM32_Programmer_CLI.exe -c port=SWD -ob displ

  # 修改 RDP 等级
  STM32_Programmer_CLI.exe -c port=SWD -ob RDP=0xBB

后续编译脚本会自动调用 CLI 工具,你不需要手动执行这些命令,但了解它们有助于排查问题。

3.4 验证 STM32CubeProgrammer 安装

复制代码
操作步骤:
  1. 确保 NUCLEO-G474RE 已通过 USB 线连接到电脑
  2. 打开 STM32CubeProgrammer(图形界面版)
  3. 右上角选择连接方式: ST-LINK
  4. 右上角 Port 选择: SWD
  5. 点击右侧绿色的 "Connect" 按钮
  6. 连接成功 → 显示芯片信息:
     - Device: STM32G474RE
     - Flash size: 512 KB
     - Device ID: 0x469 (STM32G474xx 的 ID)
  7. 连接成功 → 可以看到 Flash 内容、Option Bytes 等标签页

[截图位置:STM32CubeProgrammer 成功连接后的主界面]
[截图位置:Option Bytes 配置标签页]

3.5 初次使用时的 Option Bytes 检查

在正式烧录 SBSFU 之前,需要确保芯片处于"干净"状态:

复制代码
必须确认的 Option Bytes 配置:

┌──────────────────┬──────────────┬─────────────────────┐
│ Option Byte      │ 要求值        │ 说明                │
├──────────────────┼──────────────┼─────────────────────┤
│ RDP              │ Level 0 (AA) │ 读保护必须关闭       │
│ PCROP            │ Disabled     │ 代码读保护未激活     │
│ WRP (所有页)      │ Disabled     │ 写保护未激活         │
│ DBANK            │ Disabled     │ 双 Bank 模式必须关闭  │
└──────────────────┴──────────────┴─────────────────────┘

如果不满足以上条件,使用 CubeProgrammer 修改后重新上电生效。

4. 终端模拟器安装

4.1 Tera Term(强烈推荐)

Tera Term 是一款开源免费的终端模拟器,原生支持 YMODEM 协议------这正是 SBSFU 用来传输固件文件的协议。

复制代码
下载与安装:
  1. 访问: https://osdn.net/projects/ttssh2/
  2. 下载最新版本的安装程序
  3. 运行安装,一路 Next 即可
  4. 安装位置建议默认: C:\Program Files\teraterm\

[截图位置:Tera Term 下载页面]
[截图位置:Tera Term 安装向导]

4.2 Tera Term 串口配置

复制代码
配置步骤:
  1. 打开 Tera Term
  2. 弹出 "New connection" 对话框
  3. 选择 "Serial"
  4. Port 选择: COMx (STMicroelectronics STLink Virtual COM Port)
     (COM 号在设备管理器中查看)
  5. 点击 OK

  6. 菜单栏: Setup → Serial port...
  7. 设置以下参数(必须精确):
     ┌──────────────────────────────┐
     │ Serial port setup            │
     │                              │
     │ Port:       COM3             │
     │ Baud rate:  115200           │ ← 波特率 115200
     │ Data:       8 bit            │ ← 8位数据
     │ Parity:     none             │ ← 无校验
     │ Stop bits:  1 bit            │ ← 1位停止
     │ Flow control: none           │ ← 无流控
     │                              │
     │ Transmit delay: 0 msec/char  │
     │              0 msec/line     │
     └──────────────────────────────┘
  8. 点击 OK 保存

[截图位置:Tera Term 串口参数设置对话框]

4.3 YMODEM 文件传输操作

复制代码
通过 Tera Term 发送固件文件:
  1. 当 SBSFU 进入 Local Loader 模式,Tera Term 会显示:
     "Waiting for file transfer..."
  2. 菜单栏: File → Transfer → YMODEM → Send...
  3. 在弹出的文件选择对话框中,选择 UserApp.sfb 文件
  4. 点击 "Open" 开始传输
  5. 传输进度条显示百分比
  6. 传输完成后,Tera Term 显示固件接收摘要

[截图位置:Tera Term File → Transfer → YMODEM → Send 菜单]
[截图位置:YMODEM 文件传输进度对话框]

4.4 其他终端选择

终端软件 YMODEM 支持 授权方式 推荐度 说明
Tera Term 原生支持 开源免费 ★★★★★ Windows 首选,本系列专用
SecureCRT 支持 商业付费 ★★★★ 功能强大但需付费
MobaXterm 不支持 YMODEM 免费版可用 ★★★ 仅看日志可以,不能传文件
PuTTY 不支持 开源免费 ★★ 轻量但功能弱,不支持 YMODEM
Minicom 需编译开关 开源免费 ★★★ Linux 用户可选,SBSFU 中需开启 MINICOM_YMODEM 编译选项

注意 :如果你使用 Linux 的 Minicom,需要在 SBSFU 项目的 app_sfu.h 中启用 MINICOM_YMODEM 编译开关,因为 Minicom 的 YMODEM 实现与标准略有不同。


5. Python 环境配置

5.1 为什么需要 Python?

SBSFU 的密钥生成和固件打包脚本(prepareimage.py)是用 Python 编写的。编译过程中会自动调用这些脚本来:

  • 生成 ECDSA 密钥对
  • 对固件进行 AES-256-CBC 加密
  • 计算固件的 SHA-384 哈希值
  • 生成 ECDSA 公钥嵌入代码
  • 打包生成最终的可传输 .sfb 文件

5.2 安装 Python

复制代码
操作步骤:
  1. 访问 https://www.python.org/downloads/
  2. 下载 Python 3.7 或更高版本(建议 3.9+)
  3. 运行安装程序
  4. ★ 重要:勾选 "Add Python to PATH"(添加到系统环境变量)
  5. 点击 "Install Now"
  6. 等待安装完成

验证安装:
  打开 CMD 或 PowerShell,输入:
  
  C:\> python --version
  Python 3.9.13    ← 应显示版本号
  
  C:\> pip --version
  pip 22.x.x       ← 应显示版本号

[截图位置:Python 安装向导,突出显示 "Add Python to PATH" 复选框]

5.3 安装依赖包

SBSFU 项目使用 pycryptodome 作为底层加密库,使用 ecdsa 进行椭圆曲线操作:

bash 复制代码
# 进入 KeysAndImages 目录
cd "F:\doxc\IAP\SBSFU_v2.6.2_G474RE_ECC384_AES256_IAR_KEIL_v2.1\SBSFU_v2.6.2\Middlewares\ST\STM32_Secure_Engine\Utilities\KeysAndImages"

# 安装所有依赖(使用 requirements.txt)
pip install -r requirements.txt

主要依赖包说明:

包名 用途 说明
pycryptodome 加密操作 提供 AES-256-CBC 加密、SHA-384 哈希等底层算法
ecdsa 椭圆曲线签名 提供 ECDSA P-384 密钥生成和签名功能

安装完成后验证:

bash 复制代码
C:\> pip list | findstr pycrypto
pycryptodome    3.x.x

C:\> pip list | findstr ecdsa
ecdsa           0.x.x

5.4 备选方案:使用预编译 exe

如果不想安装 Python 和依赖包,ST 也提供了预编译的 Windows 可执行文件:

复制代码
预编译工具位置:
  SBSFU_v2.6.2\Middlewares\ST\STM32_Secure_Engine\Utilities\KeysAndImages\win\prepareimage\prepareimage.exe

后编译脚本 prebuild.bat 会自动检测该 exe 是否存在,如果存在就优先使用 exe,不需要 Python 环境。但建议安装 Python,因为调试和自定义时可能需要修改脚本。


6. 路径长度注意事项(重要!)

6.1 问题描述

Windows 操作系统有历史遗留的路径长度限制:完整的文件路径不能超过 260 个字符

SBSFU 项目的目录结构嵌套很深:

复制代码
# 示例:一个典型的完整路径
F:\doxc\IAP\SBSFU_v2.6.2_G474RE_ECC384_AES256_IAR_KEIL_v2.1\SBSFU_v2.6.2\Projects\
NUCLEO-G474RE\Applications\2_Images\2_Images_SECoreBin\MDK-ARM\RTE\Device\STM32G474RETx\
startup_stm32g474xx.s

# 这个路径已经超过了 160 个字符!
# 如果中间目录名再长一些,很容易突破 260 字符限制

超出限制的后果:

  • 编译器(armcc)找不到源文件 → 报错 "error: no such file or directory"
  • 链接器找不到目标文件 → 报错 "error: L6002U"
  • 后编译脚本无法执行 → 固件打包失败
  • 错误信息非常晦涩,难以定位真正原因

6.2 解决方案:使用 subst 命令映射虚拟驱动器

Windows 的 subst 命令可以将一个长路径映射为一个简短的驱动器号:

cmd 复制代码
# 以管理员身份打开 CMD,执行:
subst X: "F:\doxc\IAP\SBSFU_v2.6.2_G474RE_ECC384_AES256_IAR_KEIL_v2.1\SBSFU_v2.6.2"

执行后,原本冗长的路径现在可以通过短路径访问:

复制代码
# 映射前(超过 100 字符):
F:\doxc\IAP\SBSFU_v2.6.2_G474RE_ECC384_AES256_IAR_KEIL_v2.1\SBSFU_v2.6.2\Projects\NUCLEO-G474RE\...

# 映射后(只需几个字符):
X:\Projects\NUCLEO-G474RE\...

然后通过 X: 盘打开 Keil 工程:

复制代码
# SECoreBin 工程:
X:\Projects\NUCLEO-G474RE\Applications\2_Images\2_Images_SECoreBin\MDK-ARM\Project.uvprojx

# SBSFU 工程:
X:\Projects\NUCLEO-G474RE\Applications\2_Images\2_Images_SBSFU\MDK-ARM\Project.uvprojx

# UserApp 工程:
X:\Projects\NUCLEO-G474RE\Applications\2_Images\2_Images_UserApp\MDK-ARM\Project.uvprojx

6.3 创建批处理文件方便每次操作

建议创建一个 .bat 文件(例如 mount_sbsfu.bat),放在桌面或工程目录下:

batch 复制代码
@echo off
REM mount_sbsfu.bat - 映射 SBSFU 目录到 X: 盘

REM 先删除已有的 X: 盘映射(如果存在)
subst X: /D 2>nul

REM 创建新的映射
subst X: "F:\doxc\IAP\SBSFU_v2.6.2_G474RE_ECC384_AES256_IAR_KEIL_v2.1\SBSFU_v2.6.2"

REM 显示映射结果
echo ============================
echo SBSFU 虚拟驱动器已创建:
echo.
subst
echo ============================
echo.
echo 现在可以通过 X: 盘访问 SBSFU 工程
echo 例如: X:\Projects\NUCLEO-G474RE\
echo.
pause

每次开机后以管理员身份运行此 bat 文件。

注意subst 创建的虚拟驱动器在重启后会消失,需要重新创建。如果嫌麻烦,可以将 bat 文件添加到 Windows 启动项中。

6.4 subst 常用命令

cmd 复制代码
:: 查看所有虚拟驱动器映射
subst

:: 创建映射
subst X: "完整路径"

:: 删除映射
subst X: /D

7. 环境验证清单

在进入第 3 篇之前,请逐项确认以下清单。每一项都有具体的验证方法。

复制代码
═══════════════════════════════════════════════════
             SBSFU 开发环境验证清单
═══════════════════════════════════════════════════

硬件:
  [ ] NUCLEO-G474RE 通过 Micro-USB 连接电脑
  [ ] LD2 绿色电源灯常亮
  [ ] 设备管理器中能看到 ST-Link Debug 和 STLink Virtual COM Port

Keil MDK-ARM:
  [ ] Keil μVision5 可以正常打开
  [ ] Pack Installer 中显示 STM32G4xx_DFP 已安装
  [ ] 新建工程时能搜索到 STM32G474RETx 芯片
  [ ] License Management 显示有效的许可证(Plus 或 Professional)

STM32CubeProgrammer:
  [ ] 软件可以正常打开
  [ ] Connect 后能识别 STM32G474RE(Device ID: 0x469)
  [ ] Option Bytes 标签页显示 RDP = Level 0 (0xAA)
  [ ] CLI 工具路径存在(确认路径中的 exe 文件)

终端模拟器:
  [ ] Tera Term 已安装
  [ ] 打开 Tera Term 后能选择 STLink Virtual COM Port
  [ ] Serial port 参数已设置为 115200-8-N-1

Python 环境:
  [ ] python --version 输出 Python 3.7+
  [ ] pip --version 正常工作
  [ ] pycryptodome 和 ecdsa 已安装 (pip list 验证)

路径映射:
  [ ] subst X: 映射已创建并生效
  [ ] 通过 X: 盘可以访问到 Projects 目录
  [ ] 路径总长度不超过 260 字符

═══════════════════════════════════════════════════

快速一键验证脚本

将以下内容保存为 check_env.bat 并运行:

batch 复制代码
@echo off
echo ===========================
echo SBSFU 环境检查
echo ===========================
echo.

echo [1/5] 检查 Python...
python --version 2>nul
if %errorlevel% neq 0 (echo   [FAIL] Python 未安装或不在 PATH 中) else (echo   [OK])

echo.
echo [2/5] 检查 pip 依赖...
pip show pycryptodome 2>nul | findstr "Name" >nul
if %errorlevel% neq 0 (echo   [FAIL] pycryptodome 未安装) else (echo   [OK] pycryptodome)
pip show ecdsa 2>nul | findstr "Name" >nul
if %errorlevel% neq 0 (echo   [FAIL] ecdsa 未安装) else (echo   [OK] ecdsa)

echo.
echo [3/5] 检查 subst 映射...
subst | findstr "X:" >nul
if %errorlevel% neq 0 (echo   [WARN] X: 盘未映射,请运行 subst 命令) else (echo   [OK])

echo.
echo [4/5] 检查 Keil 安装...
if exist "C:\Keil_v5\UV4\UV4.exe" (
  echo   [OK] Keil 安装在 C:\Keil_v5
) else (
  echo   [WARN] 未在默认路径找到 Keil,请手动确认
)

echo.
echo [5/5] 检查 STM32CubeProgrammer CLI...
if exist "C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\STM32_Programmer_CLI.exe" (
  echo   [OK] CubeProgrammer CLI 就绪
) else (
  echo   [WARN] 未在默认路径找到 CLI 工具
)

echo.
echo ===========================
echo 检查完成!
echo ===========================
pause

小结

本章完成了 SBSFU 开发所需的全部软件环境搭建:

  1. 硬件层面:NUCLEO-G474RE 开发板通过 ST-LINK USB 口连接电脑,一根 Micro-USB 线同时提供调试、串口和供电
  2. Keil MDK-ARM:核心编译工具,需安装 STM32G4 DFP 包,本工程需要 Plus/Professional 许可证
  3. STM32CubeProgrammer:ST 全能工具,用于烧录和 Option Bytes 配置,注意 CLI 路径
  4. Tera Term:终端 + YMODEM 文件传输,串口配置 115200-8-N-1
  5. Python + 依赖包:用于密钥生成和固件打包,pycryptodome + ecdsa
  6. 路径映射 :使用 subst 命令将长路径映射为 X: 盘,避免 Windows 260 字符限制

下一步

环境就绪后,第 3 篇将带你快速理解 SBSFU 涉及的核心密码学概念------哈希、AES、ECC、ECDSA 和数字签名。不需要密码学背景,会用就行。


下一篇:第3篇:加密基础 ------ 密码学概念速通

相关推荐
桌面运维家1 小时前
服务器异常登录日志排查方法与安全防护实战
运维·服务器·安全
晓梦林1 小时前
Fuzzz靶场学习笔记
笔记·学习·安全·web安全
Paranoid-up2 小时前
安全启动和安全固件更新(SBSFU)一:SBSFU 概念
安全·iap·安全启动·安全升级·sbsfu
weixin_514253182 小时前
509-qwen3.5-9b csdn tmux
安全
深邃-2 小时前
【Web安全】-计算机网络协议(1):IP协议详解,HTTP协议介绍
linux·tcp/ip·计算机网络·安全·web安全·http·网络安全
@insist1232 小时前
信息安全工程师-网络安全审计核心知识与考点解析
安全·软考·信息安全工程师·软件水平考试
2601_955256472 小时前
服务器入侵应急响应SOP:从发现挖矿病毒到安全加固的完整操作流程
服务器·chrome·安全
带娃的IT创业者2 小时前
Microsoft Edge 密码泄露事件深度剖析:当“安全”成为幻影
安全·microsoft·edge·microsoft edge·密码安全·内存安全·明文存储
Paranoid-up2 小时前
安全启动和安全固件更新(SBSFU)8:安全启动状态机
安全·iap·安全启动·安全升级·sbsfu