第2篇:环境搭建 ------ Keil MDK 与硬件准备
目录
- 硬件准备
- [Keil MDK-ARM 安装](#Keil MDK-ARM 安装)
- [STM32CubeProgrammer 安装](#STM32CubeProgrammer 安装)
- 终端模拟器安装
- [Python 环境配置](#Python 环境配置)
- 路径长度注意事项(重要)
- 环境验证清单
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 线连接到电脑后:
-
LD2(绿色电源灯) 应该常亮
-
LD1(红/绿 COM 灯) 应该闪烁(ST-LINK 初始化通信)
-
打开 Windows 设备管理器 → 端口 (COM 和 LPT) → 应看到 "STMicroelectronics STLink Virtual COM Port (COMx)"
-
打开 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 Professional 或 MDK-ARM Plus 许可证
- 如果不能获取商业许可证,可以考虑:
-
ST 提供的免费社区许可证(偶尔有活动)
-
Keil 的 30 天全功能试用版
-
使用 STM32CubeIDE(免费,但本系列以 Keil 为主)
各版本限制对比:
┌───────────────┬──────────────┬──────────────┬──────────────┐
│ 版本 │ Lite │ Plus │ Professional │
├───────────────┼──────────────┼──────────────┼──────────────┤
│ 代码大小限制 │ 32KB │ 256KB │ 无限制 │
│ SBSFU 能编译? │ ❌ 不行 │ ✅ 可以 │ ✅ 可以 │
│ 价格 │ 免费 │ 约 2000 │ 约 4000 │
└───────────────┴──────────────┴──────────────┴──────────────┘
-
2.2 下载地址
- Keil MDK-ARM :https://www.keil.com/download/product/
- 下载最新版本的 MDK-ARM 安装包(例如 MDK5xx.EXE)
- 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 开发所需的全部软件环境搭建:
- 硬件层面:NUCLEO-G474RE 开发板通过 ST-LINK USB 口连接电脑,一根 Micro-USB 线同时提供调试、串口和供电
- Keil MDK-ARM:核心编译工具,需安装 STM32G4 DFP 包,本工程需要 Plus/Professional 许可证
- STM32CubeProgrammer:ST 全能工具,用于烧录和 Option Bytes 配置,注意 CLI 路径
- Tera Term:终端 + YMODEM 文件传输,串口配置 115200-8-N-1
- Python + 依赖包:用于密钥生成和固件打包,pycryptodome + ecdsa
- 路径映射 :使用
subst命令将长路径映射为 X: 盘,避免 Windows 260 字符限制
下一步
环境就绪后,第 3 篇将带你快速理解 SBSFU 涉及的核心密码学概念------哈希、AES、ECC、ECDSA 和数字签名。不需要密码学背景,会用就行。
下一篇:第3篇:加密基础 ------ 密码学概念速通