
一、概述 STM32MP1内部没用flash,系统及程序都是存放在外部 Flash (EMMC、SD、NAND、NOR),也可以通过USB、UART启动。 启动模式: ![]() 1、USB 启动 内部 ROM 代码支持 USB OTG 启动,一般使用 STM32CubeProgrammer 软件通过 USB OTG 接口来向 STM32MP1 烧写系统。USB OTG 需要一个 48M 和 60M 的时钟,这两个时钟由HSE 生成。 在自己做核心板的时候外部 HSE 时钟最好选择 24MHz有源晶振,不要特立独行,虽然可以通过修改 OTP 来更改 HSE,一旦修改错误芯片就废了。 2、UART 启动 只能使用 USART2、USART3、UART4、UART5、USART6、UART7 或 UART8,此时串口工作模式为:1 位起始位、8 位数据位、偶校验、1 位停止位、波特率 115200。 ![]() ![]() 3、Flash 设备启动要求 ST 官方的 Flash 分区建议 二、STM32MP1 二进制头部信息 STM32MP1 内部的 ROM 代码会先读取 FSBL 代码,一般是 TF-A 或者 Uboot 的 SPL,也可以是 A7 裸机代码。比如 TF-A 我们之间编译生成二进制 bin 文件,但是这个 bin 文件不能直接拿来用,需要在前面添加一段头部信息,这段头部信息也包含了鉴权内容。如下: ![]() 头部信息不需要我们自己手动添加,ST 提供了个名为“stm32image”的工具专门用于在 bin 文件前面添加头部信息。 在编写 A7 裸机的时候需要自己使用 stm32image 工具在 bin 文件前面添加头部信息。 gcc stm32image.c -o stm32image ![]() stm32image 在使用的时候需要搭配一系列的参数: -s:指定源文件。 -d:生成的目标文件。 -l:加载地址。 -e:入口地址。 -m:出版本号。 -n:次版本号。 三、 STM23MP1 Linux 系统启动过程 MP1 Linux启动流程 : ![]() 启动 Linux 内核过程是一个链式结构:ROM Code→FSBL(TF-A)→SSBL(Uboot)→Linux kernel→rootfs。 一般 FSBL 代码是 TF-A 或者 Uboot 的 SPL 代码,也可以将 FSBL换成裸机代码。 SSBL 代码运行在 DDR 里面,SSBL 一般是 Uboot,Uboot 会将 Linux 内核加载到 DDR 上并运行。 Linux 内核启动过程中会初始化板子上的各种外设。 四、 STM23MP1 启动过程 ![]() ![]() ![]() ![]() ———————————————— 版权声明:Davidysw |
更新STM32MP135-Openwrt镜像
基于STM32MP1和STM32MP2在嵌入式Linux平台上部署有效的安全保护机制
利用STM32MP1和STM32MP2为嵌入式Linux提供有效的安全措施:供当今决策者参考的3条宝贵经验
STM32MP1 WiFi连接
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习
《STM32MPU安全启动》学**结
《STM32MPU安全启动》学习笔记之optee 如何加载CORTEX-M核和使能校验
《STM32MPU安全启动》学习笔记之TF-A BL2校验optee和uboot的流程以及如何使能
《STM32MPU 安全启动》课程学习心得+开启一扇通往嵌入式系统安全领域深处的大门。