stm32MP135裸机编程:启动流程分析

0 参考资料

c 复制代码
轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf
STM32MP135AD数据手册.pdf

1 stm32MP135裸机启动流程分析

1.1 启动方式

stm32MP135支持8种启动方式:

注:

UART和USB启动并不是指通过UART/USB加载程序,而是通过UART/USB按照一定的下载协议(一般是通过STM32CubeProgrammer软件一键操作)将二进制文件通过UART/USB烧录到SD卡、EMMC、Nor Flash中,然后再将启动方式切换到SD卡、EMMC、Nor Flash,从这里存储设备内加载程序。

1.2 裸机启动时操作流程

stm32MP135裸机在进入用户APP前有2个阶段的工作需要处理,如下图所示:

这和我们使用MCU的BOOT+APP实现在线升级的方法非常相似,只不过这里分成了3步。有人或许会问,这里直接和MCU分成2步不也可以完成吗?这里就需要注意一个问题,那就是FSBL-A是被分配在128KB的SYSRAM中运行的,如果你的用户程序不需要使用到DDR,确实可以这样做,但为了使用容量更大的DDR实现更复杂的功能,在FSBL-A内对DDR进行了初始化,然后将用户程序拷贝到了DDR中,从而使用户程序能够在DDR中运行,发挥了MPU的最大价值。

(1)FSBL-A 和 Cube Example都需要加入STM32 Header,才能被ROM code 与bootloader识别。

(2)FSBL-A需烧录到SDCard的固定位置LBA128或LBA640(对于NOR Flash,这个位置为LBA0和LBA512),ROMCode固定从这两个位置寻找FSBL-A。 CUBEEXAMPLE的存放位置可在FSBL-A程序中修改,默认为SDCard的LBA640(NOR Flash为LBA384)。一般来说,将FSBL-A烧写到LBA128,将用户程序烧写到LBA640。

注:

LBAx表示SD卡第x个扇区,SD卡一个扇区大小为512字节。

注意:

如果有烧录过OpenSTLinux的卡,需先格式化。原因是ROM

Code从GPT分区表中寻找FSBL的优先级更高。

建议使用DiskGenius将SD卡扇区数据全部清除:

相关推荐
双桥wow2 个月前
Android 11(R)启动流程 初版
android·linux·启动流程·systemserver·android r
江上清风山间明月2 个月前
uboot的mmc partconf命令
uboot·mmc·boot·partconf
时光飞逝的日子3 个月前
STM32MP135裸机编程:定时器内核时钟频率计算方法
定时器·stm32mp135·频率·裸机·内核时钟
时光飞逝的日子3 个月前
STM32MP135裸机编程:支持内存非对齐访问
gcc·stm32mp135·裸机编程·非对齐访问·armv7
安全二次方security²3 个月前
ARM功耗管理之多核处理器启动
低功耗·power manage·boot·arm功耗管理·功耗管理精讲与实战·多核启动·psci启动方式
时光飞逝的日子3 个月前
STM32MP135裸机编程:唯一ID(UID)、设备标识号、设备版本
stm32mp135·uid·裸机编程·设备版本·设备标识号
时光飞逝的日子3 个月前
STM32MP135裸机编程:BOOT跳转到APP前关闭所有中断、清除所有中断挂起标志操作方法
app·中断·stm32mp135·boot·裸机编程·中断挂起
时光飞逝的日子4 个月前
stm32MP135裸机编程:修改官方GPIO例程在DDR中点亮第一颗LED灯
led·stm32mp135·ddr·裸机编程·用户程序
sysin.org7 个月前
macOS Ventura 13.6.5 (22G621) Boot ISO 原版可引导镜像下载
macos·虚拟机·模板·iso·启动镜像·引导·boot