STMCU小助手
发布时间:2022-9-28 19:22
|
一、概述 STM32MP1内部没用flash,系统及程序都是存放在外部 Flash (EMMC、SD、NAND、NOR),也可以通过USB、UART启动。 1 e% u* c4 C$ T0 Q9 @' r- L, t. \ 启动模式:) d/ p% g/ U/ N0 ]! c
$ |, `9 [/ v# M ?1 }* r9 \ 1、USB 启动8 D9 b# {3 [$ Y: b# _4 l 内部 ROM 代码支持 USB OTG 启动,一般使用 STM32CubeProgrammer 软件通过 USB OTG 接口来向 STM32MP1 烧写系统。USB OTG 需要一个 48M 和 60M 的时钟,这两个时钟由HSE 生成。 在自己做核心板的时候外部 HSE 时钟最好选择 24MHz有源晶振,不要特立独行,虽然可以通过修改 OTP 来更改 HSE,一旦修改错误芯片就废了。: R# F/ R" ~( V9 l2 W* [ 0 A: X$ K5 u/ w7 a& J% ~3 J 2、UART 启动 只能使用 USART2、USART3、UART4、UART5、USART6、UART7 或 UART8,此时串口工作模式为:1 位起始位、8 位数据位、偶校验、1 位停止位、波特率 115200。% Z$ Z4 S" x" i2 J
+ v$ r7 x& s# s! U
: Z$ P* U7 L8 z& J$ F 3、Flash 设备启动要求7 X% }/ I% B3 L. u3 H4 ^# v7 Q! K ST 官方的 Flash 分区建议 4 ]: q! `2 L# V) c : B |+ i' W+ Y6 |0 l . j2 A5 X* g: J& b. U. ` 二、STM32MP1 二进制头部信息& Y) a$ Y$ ~/ O9 x5 P STM32MP1 内部的 ROM 代码会先读取 FSBL 代码,一般是 TF-A 或者 Uboot 的 SPL,也可以是 A7 裸机代码。比如 TF-A 我们之间编译生成二进制 bin 文件,但是这个 bin 文件不能直接拿来用,需要在前面添加一段头部信息,这段头部信息也包含了鉴权内容。如下:" n% ?' [' {+ k6 _7 n2 I- A4 n3 W
* X, N3 `! t4 l 头部信息不需要我们自己手动添加,ST 提供了个名为“stm32image”的工具专门用于在 bin 文件前面添加头部信息。 在编写 A7 裸机的时候需要自己使用 stm32image 工具在 bin 文件前面添加头部信息。1 T, M+ D4 B5 X0 T7 t gcc stm32image.c -o stm32image 1 Z: @5 a4 Q1 t, p0 f5 O. C7 F/ C
stm32image 在使用的时候需要搭配一系列的参数:: f0 j5 H4 F( g -s:指定源文件。; z' K- y7 d( [/ y0 D$ u -d:生成的目标文件。4 Y7 _! U5 ]2 w3 e _% a -l:加载地址。 -e:入口地址。 -m:出版本号。4 [5 Q. E* j* d, h7 V% C -n:次版本号。 |6 C' |( E9 D j8 Z, {% z $ h# |8 z. |: Z! ~/ x 三、 STM23MP1 Linux 系统启动过程: |% U6 V' @( U MP1 Linux启动流程 :
* w. b$ \2 W: K. ^- f( Y 启动 Linux 内核过程是一个链式结构:ROM Code→FSBL(TF-A)→SSBL(Uboot)→Linux kernel→rootfs。 一般 FSBL 代码是 TF-A 或者 Uboot 的 SPL 代码,也可以将 FSBL换成裸机代码。 SSBL 代码运行在 DDR 里面,SSBL 一般是 Uboot,Uboot 会将 Linux 内核加载到 DDR 上并运行。4 G+ s B" ]" O6 Y0 M$ x+ |$ k( e Linux 内核启动过程中会初始化板子上的各种外设。+ S8 N' }" K5 d) N; ^7 f2 u7 g) ? 四、 STM23MP1 启动过程
5 M" v0 p0 q2 `1 r
, h3 r. {) e( l9 [& k, [% ^: V: n) L
, g3 s# S0 `- [2 ?; Z ———————————————— 版权声明:Davidysw. R- b6 a% p( J3 D3 r# v z) `) y* z9 a- Z9 H$ Z8 x $ }& M) `/ V+ ] |
扩展STM32微处理器,实现高性价比、低功耗和灵活性能
STM32MP1 自举程序编程:USB DFU/USART 协议全解析
兔哥心中的ST中文论坛
我心中的ST中文论坛
STM32 开发者指南:ST.com 全新 MCU 产品阵容视觉布局深度解析
深度拆解 STM32MP1 Boot 链路
STM32串口自动识别波特率的原理
STM32MP135 MP157 MP257 CoreMark移植&&跑分对比&&多核心负载不均衡问题排查与解决
STM32--STM32 微控制器详解
为什么学了几天STM32一脸茫然?
微信公众号
手机版