STM32CubeProgrammer脚本文件的后缀为“.tsv”,ST公司官方也叫做FlashLayout。在烧写“TF-A固件”之前,我们需要用“Notepad++”软件打开“后缀为.tsv”的脚本文件,根据需求决定哪些文件需要更新,设置好这个脚本文件。
在后期使用STM32CubeProgrammer烧写文件时,需要使用“Notepad++”软件修改“后缀为.tsv”的脚本文件,因此需要安装。
一、安装“Notepad++”软件
1、双击“npp.8.5.2.Installer.x64.exe”,得到下面的界面:
2、点击“OK”按钮
3、点击“下一步”
4、点击“我接受”
5、点击“下一步”
6、全部勾选,点击“下一步”
7、勾选“Create Shortcut on Desktop”,然后点击“安装”
8、点击“完成” 。
9、点击“文件” ,找到需要打开的tf-a.tsv文件,选中后,点击打开。
得到下图:
二、tf-a.tsv文件配置解析
1、Ot城
Opt 是第一个项,此选项通过'-’、'P’、'D’和'E’这四个字符定义操作方法,首选的是'-’和'P’。
'-’: none,也就是空选项,分区或者设备无需修改,如果 Device 域为 none,那么 Opt强制为'-'。
'P’:向分区或者设备烧写固件。
STM32CubeProgrammer本质是通过boot来烧写系统的,也就是先把 boot加载到板子的DDR 里面并运行,然后使用 uboot 来烧写系统。uboot 会请求需要烧写的二进制文件,然后将其烧写到指定的分区或者 Falsh 设备里面。
针对“P’选项,还有另外两个可以搭配使用的小伙伴:
'E’:空分区或设备,表示对应的分区或设备不更新,相关的 d 项会被跳过
"'D’:删除分区或设备
允许的组合选项如下所示:
'-’:空选型。
'P’:更新分区或设备,也就是向分区或设备烧写固件
'PE’:不更新,也就是指定某个分区或者设备不需要烧写固件,这样我们就可以单独只更新 tf-a、uboot、kernel 或者 rootfs。
'PD’:删除并更新,也可以写作 DP。
'PDE’:删除并且保持为空,也可以写作 PED/DPE/DEP/EPD/EDP
2、Id域
STM32CubeProgrammer 通过 Id 域来确定烧写方法,会通过 Id 域来识别下一个要烧写到设备里面的二进制文件:
ROM 或老 FSBL:二进制文件要加载到 RAM 中
SSBL(uboot):二进制文件要烧写到 Flash 中。
3、Name 域
Name 域为一段字符串,也就是目标内存段的名字;
4、Type 域
Type 域仅仅用于 uboot,用来选择需要更新的 Flash 区域:
1)、SD 卡或者 EMMC 设备对应 GPT 分区。
2)、原始的 Flash 设备,如 NAND、NOR 等对应MID 分区
STM32MP157 开发板为 EMMC 类型,所以我们只 EMMC 下的 Type 域含义:
Binary: 原始的二进制文件。
FileSystem: linux 文件系统,为 ext2/ext4/fat 格式
System: Linux 内核。
5、Device 域
Device 域指定 Uboot 设备树定义的设备和索引(从 0 开始),不同的设备其设备名字和索引不同:
mmc+索引:如mmc0、mmcl、mmc2 等,对应 SD 卡或EMMC。比如SD 卡和 EMMC分别接到MPI的 SDMMCI和 SDMMC2 接口上,那么SD 卡和EMMC 分别为mmc0 和mmcl。
nor+索引:如 nor0,对应 NOR 或者 OUADSPIFlash。
mmc+索引: 如 nand0,对应连接到 FMC 总线上的并行 NAND Flash。
spi-nand+索引:如 spi-nand0,对应连接到 OSPI 上的串行 NAND Flash。
none: RAM,也就是将固件加载到 RAM 里面,仅允许启动阶段使用,而且 Type 域要为 Binary,Offset 域要为 0,Opt 域为'-'。
ram+索引:如 ram0,烧写服务讲固件加载到 RAM 中运行。
6、Offset 城
Offset 就是偏移,支持的值如下:
1)、boot1:EMMC 的第一个启动区域分区。
2):boot2: EMMC 的第二个启动区域分区。
3):数字:具体的偏移值,单位为字节。
7、Binary 城
STM32CubeProgrammer 软件要使用的二进制文件。