# stm32n657xx_fsbl **Repository Path**: RT-Thread-Mirror/stm32n657xx_fsbl ## Basic Information - **Project Name**: stm32n657xx_fsbl - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-15 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # STM32N657 FSBL 软件包说明 ## 简介 `stm32n657xx_fsbl-latest` 是 STM32N657-st-nucleo BSP 使用的 First Stage Boot Loader(FSBL)软件包。STM32N6 片内只有用于第一阶段启动的少量 ROM,用户程序需要存放在外部 Flash 中。本软件包提供基于 STM32 HAL 和 STM32 External Memory Manager 的 FSBL 工程,用于初始化外部 XSPI NOR Flash,并启动存放在外部 Flash 中的 RT-Thread 应用程序。 本软件包当前使用 **FSBL + XiP(Execute in Place)** 启动方式:FSBL 在内部 SRAM2 中运行,完成外部 Flash 初始化后,直接跳转到外部 Flash 中的 APP 首地址执行。 ## 启动流程 ![image-20260911181223273](figures/image-20260911181223273.png) STM32N657 从外部 Flash 启动时,系统按以下顺序执行: 1. 上电后,片内 BootROM 根据 Boot 配置查找 FSBL,并校验 FSBL 的 Header。FSBL 必须使用 ST 提供的签名工具签名,否则 BootROM 无法启动该程序。 2. 校验成功后,BootROM 将 FSBL 搬运到内部 SRAM2 的 `0x34180000` 地址,并跳转到该地址执行。 3. FSBL 初始化系统时钟、GPIO、XSPI2 和外部存储管理器,将外部 NOR Flash 配置为 XiP 模式。 4. FSBL 调用 `BOOT_Application()`,将 PC 跳转到外部 Flash 中 APP 的第一条指令。APP 的链接地址为 `0x70100400`,其签名 Header 位于外部 Flash 起始地址 `0x70100000`。 完整固件在外部 Flash 中的布局如下: | 镜像 | 地址 | 说明 | | --- | --- | --- | | FSBL | `0x70000000` | FSBL 签名镜像,BootROM 启动后搬运到 SRAM2 | | APP | `0x70100000` | RT-Thread APP 签名镜像,Header 位于该地址 | | APP 代码 | `0x70100400` | APP 向量表和代码的实际起始位置 | ## 目录结构 | 目录或文件 | 说明 | | --- | --- | | `FSBL/` | FSBL 源代码和头文件 | | `Drivers/` | STM32N6 HAL、CMSIS 设备文件和启动文件 | | `Middlewares/ST/STM32_ExtMem_Manager/` | 外部存储初始化和 XiP 启动组件 | | `MDK-ARM/FSBL/` | Keil MDK 工程及构建、烧录脚本 | | `SConscript` | RT-Thread SCons 构建入口 | ## 使用方法 ### SCons/GCC 在 `bsp/stm32/stm32n657-st-nucleo` 目录下执行: ```bash scons fsbl -j16 ``` FSBL 的链接输出位于 `build/fsbl/`,构建完成后会生成供签名脚本使用的: ```text fsbl/stm32n657xx_fsbl.bin ``` 随后编译 APP: ```bash scons -j16 ``` ### MDK-ARM 使用 `bsp/stm32/stm32n657-st-nucleo/Project.uvmpw` 打开多工程工作空间,并选择 `stm32n657xx_fsbl` 工程进行编译。FSBL 工程的后处理脚本会将生成的二进制文件复制到 BSP 的 `fsbl/` 目录,并生成签名文件 `stm32n657xx_fsbl-trusted.bin`。 ## 签名与烧录 签名和烧录需要 STM32CubeProgrammer 中的以下工具: - `STM32_SigningTool_CLI.exe` - `STM32_Programmer_CLI.exe` - STM32N657 外部烧录算法 请将工具所在目录加入系统 `PATH`,并设置外部加载器环境变量: ```text N6570_ExternalLoader= ``` FSBL 的 MDK 后处理脚本会生成 `fsbl/stm32n657xx_fsbl-trusted.bin`。也可以在 `bsp/stm32/stm32n657-st-nucleo/fsbl` 目录下执行 `Signing_Programmer.bat`,脚本会完成 FSBL 签名并将其烧录到 `0x70000000`。 APP 编译完成后,BSP 根目录的 `build_app.bat` 会生成 `rtthread-trusted.bin`。执行 `program_app.bat` 可将 APP 烧录到 `0x70100000`。 烧录时使用 SWD、`HOTPLUG` 模式和配置好的外部加载器。烧录完成后,将开发板启动配置设为 `Boot0 = 0`、`Boot1 = 0`(Flash 启动),然后复位设备。 ## 注意事项 - FSBL 必须签名;未签名的 FSBL 无法通过 BootROM 校验。 - FSBL 和 APP 需要分别编译、签名并烧录,不能只烧录其中一个镜像。 - 修改 FSBL 的外部存储配置时,应同步检查 `FSBL/Core/Src/extmem_manager.c`、链接脚本和烧录地址。 - 本软件包的 SCons 目标名为 `fsbl`,只有执行 `scons fsbl` 时才会构建 FSBL。 筛选文件