当前位置: 首页 > news >正文

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

0 参考资料

轻松使用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卡扇区数据全部清除:
在这里插入图片描述

相关文章:

  • 假设Python脚本包含引用了大量的第三方库,如何打包成.exe文件,并且可以在没有环境的服务器下正常运行
  • vue-2 组件传值
  • Django学习(2)项目实战
  • React 18
  • ISO 19115-2:2019 第6章 获取和处理元数据
  • 【C++】STL中list的使用
  • powerdesigner各种字体设置
  • 深度解析:全流量分析与IP会话回溯在IT运维中的应用
  • matlab演示银河系转动动画
  • 进程概念(二)
  • pytest配置文件配置并通过allure生成报告
  • 使用difflib实现文件差异比较用html显示
  • Ansible离线部署 之 Zabbix
  • c语言基础篇C
  • linux centos consul1.15.2一键安装部署
  • [笔记] php常见简单功能及函数
  • Angular6错误 Service: No provider for Renderer2
  • conda常用的命令
  • C学习-枚举(九)
  • ES6核心特性
  • Git同步原始仓库到Fork仓库中
  • If…else
  • Netty 4.1 源代码学习:线程模型
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • 计算机在识别图像时“看到”了什么?
  • 技术发展面试
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 如何学习JavaEE,项目又该如何做?
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 我看到的前端
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ###STL(标准模板库)
  • #每日一题合集#牛客JZ23-JZ33
  • (20050108)又读《平凡的世界》
  • (4)logging(日志模块)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (顺序)容器的好伴侣 --- 容器适配器
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .gitignore文件设置了忽略但不生效
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET文档生成工具ADB使用图文教程
  • /bin/bash^M: bad interpreter: No such file or directory
  • @Import注解详解
  • @JsonFormat与@DateTimeFormat注解的使用
  • @Value读取properties中文乱码解决方案
  • [30期] 我的学习方法
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘
  • [C# 网络编程系列]专题六:UDP编程
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C++进阶篇]STL中vector的使用
  • [CSS] 点击事件触发的动画
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档