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

【STM32MP157系统移植】2.烧录TF-A到EMMC

目录

准备烧录文件

tf-a-stm32mp157d-atk-serialboot.stm32

u-boot.stm32

tf-a-stm32mp157d-atk-trusted.stm32

.tsv文件

.tsv语法

Opt域

Id域

Id范围:

Id含义:

Name域

Type域

Device域

Offset域

Binary域

烧录文件

查看TF-A烧录时间

准备烧录文件

tf-a-stm32mp157d-atk-serialboot.stm32

用于初始化USB、DDR等外设,DDR外设初始化完成后可运行uboot。

u-boot.stm32

uboot会初始化EMMC、NAND。

tf-a-stm32mp157d-atk-trusted.stm32

编译出来的TF-A。

.tsv文件

        STM32CubeProgrammer 脚本文件,如何使用上面三个文件,应该放到哪个地方,如果烧写的话要烧写到EMMC的哪个地址区域。

.tsv语法

详解:https://wiki.st.com/stm32mpu/wiki/STM32CubeProgrammer_flashlayout

tsv语法要求只能用TAB键,不能用空格!

#:整行注释

作用
Opt选项字段,可以设置为“-”、“P”、“D”或“E”
Id会根据这个id来决定烧写分区
Name分区名字
Type制定烧写的类型,仅uboot使用
Device指定烧写的设备类型与编号,比如 emmc0、emmc1、nand0 等,如果 opt 为‘-’,那么此字段就为 none
offset分区的起始位置,如果为“boot1”表示 EMMC 的第一个分区,如果为“boot2”就表示 EMMC 第二个分区。如果是数字就表示需要偏移的字节数。
Binary要烧录的文件

Opt域

Opt 是第一个项,此选项通过‘-’、‘P’、‘D’和‘E’这四个字符定义操作方法,首选的是‘-’和‘P’。

  • '-':none,也就是空选项,分区或者设备无需修改,如果Device域为none,那么Opt强制为‘-’。

  • 'P':向分区或者设备烧写固件。

  • 'E':空分区或设备,表示对应的分区或设备不更新,相关的 Id 项会被跳过。

  • 'D':删除分区或设备。

  • 'PE':不更新,也就是指定某个分区或者设备不需要烧写固件,这样就可以单独只更新 tf-a、uboot、kernel 或者 rootfs。

  • 'PD':删除并更新,也可以写作 DP。

  • 'PDE':删除并且保持为空,也可以写作 PED/DPE/DEP/EPD/EDP。

Id域

        STM32CubeProgrammer通过Id域来确定烧写方法,会通过Id域来识别下一个要烧写到设备里面的二进制文件:

  • ROM或者FSBL:二进制文件要加载到RAM中

  • SSBL(uboot):二进制文件要烧写到Flash中

Id范围:

范围分区
0x01~0x0F带有 STM32 头部信息的 Boot 分区,如 SSBL、FSBL、其他(TEE 或 M4 固件)
0x10~0xF0不带头部的用户编程分区,如 uimage、dtb、rootfs、vendorfs、userfs

Id含义:

Id分区
0x00内部使用,用户不能使用此 ID!
0x01FSBL(第一阶段拷贝),ROM 代码使用,会加载到 RAM 中
0x03SSBL,FSBL 使用,加载到 RAM 中
0x04把FSBL烧写到boot1里面
0x05把FSBL烧写到boot2里面
0x06SSBL烧写到Flash
0x21Linux内核设备树
0x22根文件系统
0xF1~0xFD虚拟分区,内部使用
0xF1命令获取阶段
0xF2OTP
0xF3SSP
0xF4PMIC NVM
0xFE操作结束
0xFF复位

Name域

Name 域为一段字符串,也就是目标内存段的名字。

Type域

Type域仅仅用于uboot,用来选择需要更新的Flash区域:

  • SD 卡或者 EMMC 设备对应 GPT 分区。

  • 原始的Flash设备,如NAND、NOR等对应MTD分区。

SD/EMMC和NAND/NOR所支持的Type类型:

TypeGPTGPTMTDMTDMTD
TypeSDEMMCNANDNORRAM
Binary
Binary(N)ssbl
FileSystemdtb
SystemUBIUBIkernel
Rawimageuser data
  • Binary:原始的二进制文件。

  • FileSystem:linux 文件系统,为 ext2/ext4/fat 格式。

  • System:Linux 内核。

Device域

        烧到哪里去,Device域指定Uboot设备树定义的设备和索引(从0开始),不同的设备其设备名字和索引不同:

  • mmc+索引:如 mmc0、mmc1、mmc2 等,对应 SD 卡或 EMMC。比如 SD 卡和 EMMC分别接到 MP1 的 SDMMC1 和 SDMMC2 接口上,那么 SD 卡和 EMMC 分别为 mmc0 和 mmc1。

  • nor+索引:如 nor0,对应 NOR 或者 QUADSPI Flash。

  • mmc+索引:如 nand0,对应连接到 FMC 总线上的并行 NAND Flash。

  • spi-nand+索引:如 spi-nand0,对应连接到 QSPI 上的串行 NAND Flash。

  • none:RAM,也就是将固件加载到 RAM 里面,仅允许启动阶段使用,而且 Type 域要为 Binary,Offset 域要为 0,Opt 域为‘-’。

  • ram+索引:如 ram0,烧写服务讲固件加载到 RAM 中运行。

Offset域

Offset 就是偏移,偏移的字节数,支持的值如下:

  • boot1:EMMC 的第一个启动区域分区。

  • boot2:EMMC 的第二个启动区域分区。

  • 数字:具体的偏移值,单位为字节。

Binary域

STM32CubeProgrammer 软件要使用的二进制文件,烧写文件的路径。

#flashlayoout.tsv
#Opt	Id		Name		Type	Device	Offset	Binary
-		0x01	fsbl1-boot	Binary	none	0x0		tf-a-stm32mp157d-atk-serialboot.stm32
-		0x03	ssbl-boot	Binary	none	0x0		u-boot.stm32
P		0x04	fsbl1		Binary	mmc1	boot1	tf-a-stm32mp157d-atk-trusted.stm32
P		0x05	fsbl2		Binary	mmc1	boot2	tf-a-stm32mp157d-atk-trusted.stm32

 将上面4个文件放到同一文件夹下,注意:文件夹名字一定是要英文!!!

 

烧录文件

  1. 拨码开关设置000

  2. 连接USB-OTG

3.复位开发板

4.打开STM32CubeProgrammer,点击“+”,选择“Open File”,或者直接选择“Open File

 5.找到要烧录的tsv文件,打开

 6.选择USB

 7.点击“刷新”,会出现“USB1”,再点击“Connect”进行连接到开发板

8.把STM32CubeProgrammer 界面托长,露出“Browse”,点击“Browse”  

 9.选择烧录文件的路径,点击“选择

 10.点击“Download

11.烧录完成,点击“确定

 

12.拨码开关设置为010,复位开发板

查看TF-A烧录时间

        复位开发板后,可以在串口调试助手上可以看到TF-A的烧录时间,但是这个时间有问题,这个时间是编译生成tf-a-stm32mp157d-atk-trusted.stm32文件的时间

 

相关文章:

  • KUKA机器人导轨介绍
  • Matlab:矩阵运算篇——矩阵数学运算
  • Codeforces Round 502 E. The Supersonic Rocket 凸包、kmp
  • vue3项目中接入高德地图组件。
  • SV学习笔记——数组、队列
  • ​​《从事件冒泡到处理:前端事件系统的“隐形逻辑”》
  • 【Java代码审计 | 第十三篇】XXE漏洞成因及防范
  • 数据结构第六节:AVL树(初阶)
  • API调试工具的无解困境:白名单、动态IP与平台设计问题
  • STM32基础教程——对射式红外传感器计数实验
  • java读取Markdown配置文件
  • 【2025前端高频面试题——系列二之vue生命周期:vue2/vue3】
  • 【量化交易笔记】15.因子的来源和生成
  • FX-C++结构体与类的区别
  • 英语-新概念-第三册
  • 基于PyTorch的深度学习3——非标量反向传播
  • 轻量级TCC框架的实现
  • c++中的数学函数库(少)
  • 基于策略模式的智能提示语生成器设计与实现——以Tkinter GUI开发为例
  • 软考 中级软件设计师 考点知识点笔记总结 day02
  • 灵宝超市建设管理局信访网站/百度极速版
  • 平面设计素材网站排名/深圳营销推广引流公司
  • 怎么做asp动态网站/百度竞价优化
  • 新乡网站建设.com/天津百度推广代理商
  • 深圳广告策划公司排名/seo是什么意思电商
  • 做像58同城这样的网站能用mysql数据库吗/郑州seo服务技术