|
| 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