你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32N6570-DK评测】5.STM32N6的FSBL介绍

[复制链接]
实在太懒于是不想取名 发布时间:2025-3-17 17:04

前言

FSBL是STM32N6微控制器引导过程中的“第一阶段引导加载程序”的简称,负责上电时系统的初始化、配置硬件,并将应用程序代码从外部Flash/ROM加载到内部或外部存储器中执行。当系统复位时,引导 ROM 遵循特定的步骤序列。 这段话似乎难以理解,我们接下来引用图解。(本文以介绍和猜测为主暂无代码验证)

FSBL模式

image.png

STM32N6的存储分布大体如图所示,其中地址0x18000000起至0x1801FFFF为BOOTRAM对应系统引导程序。

image.png

0x70000000之后为外部FLASH,FSBL的二进制文件从这里开始总共511KB。

这里的FSBL的二进制文件包含了代码部分以及签名头,FSBL的二进制文件必须经过签名之后才可以被STM32的BOOTROM引导程序启动。这缺少的1K空间就是给签名用的。

之后我会出文章演示使用STM32CubeProgram进行文件签名。

image.png

BOOTLoader会将FSBL代码复制到搬运至内部SRAM2,地址0x34180000中开始,因此这个地址非常的重要,代表着FSBL代码区,之后跳转到FSBL代码区运行。

这种方法的劣势很多,主要是FSBL的空间只有511KB,想要扩大空间就需要参考接下来的模式。

FSBL+Appli

image.png

在此基础上,我们可以编写主要的程序代码,将其二进制文件烧录至外部FLASH。

image.png

该模式下启动步骤总共有四步:首先是BOOTLoader跳转到外部FSBL代码区,将外部存储的FSBL二进制文件拷贝到内部存储的0x34180000处。

FSBL开始执行,然后拷贝Application的完整内容到内部SRAM。然后跳转到APP代码进行执行。

这样子做的好处是可以解决FSBL只能存放最多511KB代码的问题。

因为内部存储的其他存储空间(不包括0x34180000开始的FSBL代码区)可以用来存放Application的代码,空间很大,在这种分配模式下,FSBL和Application的代码量可以达到2MB。

FSBL+XIP

第三种FSBL的启动模式,FSBL+XiP(Execute in Place),顾名思义:就地执行。

image.png

与前一种方法对比,FSBL+XiP不再将外部Flash的App代码复制到内部Flash中,而是在FSBL执行后将程序指针设置为外部Flash中的APP代码中的第一条开始执行。当然这里是否能在外部Flash中存放多份代码,多份执行这里有待尝试。

由于博主暂时没试过这个功能,这里就不做过多赘述(博主需要仔细研究一下)

总结

总而言之,FSBL的作用主要是负责引导程序,用户决定系统如何启动。其通过密码学算法校验应用程序的完整性和合法性,防止恶意代码或篡改后的固件运行。STM32在代码安全性中真的花了很大的功夫,不够博主在代码安全性方面真的概念不多,因此就只点一下。

应用FSBL之后可以应该实现引导程序的多样化并且有很多应用场景,例如无线升级之后,FSBL可以检测代码是否进行了升级决定启动方式,以及可以设置两份代码区,当主要代码损坏之后运行备份代码区等等功能。

当主程序超出内部Flash容量时,FSBL负责将代码从外部存储器加载到RAM中执行。

所以依据这些特性将FSBL理解足够深透的话应该可以实现很多很棒的功能,例如双系统(裸机+RTOS)类似当电脑装了双系统之后上机的引导程序那样子。

或者实现业务代码和启动逻辑的分离,修改FSBL而不影响主代码的内容。

当然更多的内容和使用方法还有待继续探索!

收藏 评论7 发布时间:2025-3-17 17:04

举报

7个回答
oet 回答时间:2025-3-20 09:08:19

大佬是否已经拿到板子?开搞了了吗?

实在太懒于是不想取名 回答时间:2025-3-20 09:59:36

oet 发表于 2025-3-20 09:08
大佬是否已经拿到板子?开搞了了吗?

蛮早之前就拿到了,不过这块MCU和其他系列的MCU使用起来区别比较大,这两天在部署模型了

oet 回答时间:2025-3-20 10:06:52

实在太懒于是不想取名 发表于 2025-3-20 09:59
蛮早之前就拿到了,不过这块MCU和其他系列的MCU使用起来区别比较大,这两天在部署模型了
...

我的板子也快到了,希望大佬把教程写详细些,我好抄作业,要是有视频更好了,我去给你点赞😄

oet 回答时间:2025-3-20 10:42:26

是不是只要程序不大于FSBL的空间,就不用APP跳转的事?

实在太懒于是不想取名 回答时间:2025-3-20 11:22:10

oet 发表于 2025-3-20 10:42
是不是只要程序不大于FSBL的空间,就不用APP跳转的事?

是的,主要是现在要塞模型进去,然后FSBL就不够用

oet 回答时间:2025-3-20 14:03:57

实在太懒于是不想取名 发表于 2025-3-20 11:22
是的,主要是现在要塞模型进去,然后FSBL就不够用

如果不涉及加密,也不能jtag调试的话,那是不是放TF卡上,更方便测试?

电子烂人 回答时间:2025-4-10 11:42:37

感觉这玩意不像MCU,更像是一个简化的SOC

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版