Skip to content

Commit e2db9f8

Browse files
committed
[add] 添加FSBL固件签名脚本
1 parent c0d1dde commit e2db9f8

1 file changed

Lines changed: 114 additions & 0 deletions

File tree

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
@echo off
2+
chcp 65001 >nul 2>&1
3+
setlocal enabledelayedexpansion
4+
5+
:: ===================== 用户可配置参数 ======================
6+
set "ORIGIN_BIN=FSBL.bin"
7+
set "SIGNED_BIN=FSBL-trusted.bin"
8+
set "SIGN_TOOL=STM32_SigningTool_CLI.exe"
9+
set "FLASH_TOOL=STM32_Programmer_CLI"
10+
set "FLASH_ADDR=0x70000000"
11+
12+
echo.
13+
echo ==========================================================
14+
echo STM32N6 固件签名下载工具
15+
echo ==========================================================
16+
echo ⚠ 请确认:Boot0 = 0,Boot1 = 1,设备处于 Develop 模式
17+
echo 正在检查工具与文件...
18+
19+
:: ===================== 依赖检查 =====================
20+
if not exist "%ORIGIN_BIN%" (
21+
echo [错误] 未找到固件文件:%ORIGIN_BIN%
22+
echo 请先完成编译生成固件。
23+
pause
24+
exit /b 1
25+
)
26+
27+
where %SIGN_TOOL% >nul 2>&1 || (
28+
echo [错误] 签名工具未找到:%SIGN_TOOL%
29+
echo 请确保该工具已加入系统 PATH。
30+
pause
31+
exit /b 1
32+
)
33+
34+
where %FLASH_TOOL% >nul 2>&1 || (
35+
echo [错误] 下载工具未找到:%FLASH_TOOL%
36+
echo 请确保 STM32CubeProgrammer 已加入 PATH。
37+
pause
38+
exit /b 1
39+
)
40+
41+
if not defined N6570_ExternalLoader (
42+
echo [错误] 外部加载器环境变量未配置:N6570_ExternalLoader
43+
echo 请正确设置 External Loader 路径。
44+
pause
45+
exit /b 1
46+
)
47+
48+
echo [OK] 所有依赖检查通过!
49+
50+
:: ===================== 删除旧签名文件 =====================
51+
echo.
52+
echo ----------------------------------------------------------
53+
echo 1/3 清理旧签名固件...
54+
echo ----------------------------------------------------------
55+
56+
if exist "%SIGNED_BIN%" (
57+
echo [提示] 检测到旧文件:%SIGNED_BIN%
58+
echo [处理] 正在删除旧文件...
59+
del /f /q /a "%SIGNED_BIN%" >nul 2>&1
60+
61+
if exist "%SIGNED_BIN%" (
62+
echo [错误] 无法删除旧签名文件(可能被占用)
63+
echo 请关闭相关程序后重试。
64+
pause
65+
exit /b 1
66+
)
67+
echo [OK] 旧签名文件已删除
68+
) else (
69+
echo [OK] 无需清理
70+
)
71+
72+
:: ===================== 固件签名 =====================
73+
echo.
74+
echo ----------------------------------------------------------
75+
echo 2/3 正在为固件生成安全签名...
76+
echo ----------------------------------------------------------
77+
echo [执行] %SIGN_TOOL% -bin "%ORIGIN_BIN%" -nk -of 0x80000000 -t fsbl -o "%SIGNED_BIN%" -hv 2.3 -dump "%SIGNED_BIN%"
78+
79+
%SIGN_TOOL% -bin "%ORIGIN_BIN%" -nk -of 0x80000000 -t fsbl -o "%SIGNED_BIN%" -hv 2.3 -dump "%SIGNED_BIN%"
80+
81+
if not exist "%SIGNED_BIN%" (
82+
echo [错误] 签名失败!未生成:%SIGNED_BIN%
83+
pause
84+
exit /b 1
85+
)
86+
87+
echo [OK] 签名完成!输出文件:%SIGNED_BIN%
88+
89+
:: ===================== 下载固件 =====================
90+
echo.
91+
echo ----------------------------------------------------------
92+
echo 3/3 正在下载固件到 Flash 地址:%FLASH_ADDR%
93+
echo ----------------------------------------------------------
94+
echo [执行] %FLASH_TOOL% -c port=SWD mode=HOTPLUG ap=1 -el "%N6570_ExternalLoader%" -hardRst -w "%SIGNED_BIN%" %FLASH_ADDR%
95+
96+
%FLASH_TOOL% -c port=SWD mode=HOTPLUG ap=1 -el "%N6570_ExternalLoader%" -hardRst -w "%SIGNED_BIN%" %FLASH_ADDR%
97+
98+
if %errorlevel% equ 0 (
99+
echo.
100+
echo ==========================================================
101+
echo ✔ 固件已成功烧录!
102+
echo ⚠ 请切换启动方式为:Boot0 = 0,Boot1 = 0(Flash 启动)
103+
echo ==========================================================
104+
) else (
105+
echo.
106+
echo [错误] 烧录失败,请检查:
107+
echo 1. SWD 连接是否正常
108+
echo 2. External Loader 路径是否正确
109+
echo 3. 芯片是否上电、BOOT 模式是否正确
110+
)
111+
112+
echo.
113+
pause
114+
endlocal

0 commit comments

Comments
 (0)