STM32MP157学习笔记(二)——走进TF-A
1、什么是tf-a
tf-a是ARM为架构安全性所设计的一个硬件安全模块,在实际使用中,比如我们手机的指纹、面容的敏感信息的处理会放在这样的模块中进行。stm32mp157是st厂商生产的一款多核处理器,同样集成了ARM的信用固件即tf-a。 所以,tf-a代码在stm32mp157启动过程中就相当于是FSBL代码,其作用主要是为了安全,最后加载SSBL代码来引导uboot。
2、移植tf-a源码
tf-a是ARM所设计的,所以主要是由ARM团队负责维护,同时不通厂商需要针对自己的芯片将ARM的tf-a进行移植,所以我们stm32mp157开发板所使用的的tf-a是ST原厂工程师移植后的。 这里有一个重要概念——移植 对于源码的移植过程,很多厂商都选择通过打补丁的形式来完成,补丁文件是以.patch结尾的文件,通过patch命令对源码进行修补后重新编译生成移植之后的程序文件。
3、编译tf-a源码
(1)准备stm32wrapper4dbg工具
移植完源码后,最关键的是编译工作。 我们在编译TF-A或者是Uboot的时候需要使用到stm32wrapper4dbg工具,这个工具在我们对源码编译的过程中会使用到,源码的编译阶段需要我们在Ubuntu环境下操作。
(2)修改Makefile编译指令
我们需要针对之前的安装环境,在原厂的Makefile文件中重新选择交叉编译工具arm-none-linux-gnueabihf-gcc。编译完成后拿到需要的二进制文件。
4、下载tf-a代码
针对于stm32mp157d开发板的tf-a代码下载,我们一共需要使用到如下四个文件: 第一个是下载配置文件属于flashlayout,负责代码块的下载顺序和区域,它是一个.TSV文件,其具体语法需要学习后才能使用。 第二个是串口启动的代码,他会初始化一些必须的环境来启动emmc等外设,然后引导u-boot代码。 第三个就是我们的tf-a代码 第四个是u-boot代码,作用是将tf-a代码写入到对应的emmc中,完成下载程序的功能。
5、串口打印展示
在使用stm32cubeprogramer下载完代码后,我们可以使用串口助手打印出系统的信息,对系统进行调试,这里推荐使用MobaXterm,很实用。 图片中的时间可以证明我们成功将编译完成的tf-a代码下载到了开发板中。
|