一、编译和烧录 TF-A
- TF-A :ARM 可信固件(Arm Trusted Firmware),用于配合TrustZone硬件方案(处理安全问题的硬件解决方案)。
- 使用正点原子提供的TF-A、uboot、Linux kernel 等源码即可。
- 传统的 linux学习中不需要 TF-A 的,只需要 uboot 和 Linux Kernel。
1、 stm32wrapper4dbg 工具安装
- make编译
- 编译出来的stm32wrapper4dbg 工具拷贝到 Ubuntu 的/usr/bin 目录下。
sudo cp stm32wrapper4dbg /usr/bin
stm32wrapper4dbg -s
- 所示内容就说明 stm32wrapper4dbg 工具安装成功:
2、 编译正点原子官方的 TF-A
- 不编译直接使用提供的材料也行。
(1)准备正点原子出厂 TF-A 源码
- 首先安装设备树编译相关命令
sudo apt-get install device-tree-compiler
- 解压正点原子TF-A源码 tf-a-stm32mp-2.2.r1-g463d4d8-v1.0.tar.bz2
(2)修改 Makefile.sdk
- 使用的是通用交叉编译器 arm-none-linux-gnueabihf-gcc,修改CROSS_COMPILE
(3)编译 TF-A
cd tf-a-stm32mp-2.2.r1/ //进入到正点原子出厂 TF-A 的源码目录
make -f ../Makefile.sdk all //编译 TF-A
- 生成文件:tf-a-stm32mp157d-atk-trusted.stm32
直接使用资料。
3、 TF-A 烧录到 EMMC
(1)准备烧写材料
- tf-a-stm32mp157d-atk-serialboot.stm32(资料中,此固件用来初始化 USB、DDR 等外设,DDR 初始化了以后就可以运行 uboot 了)
- u-boot.stm32(资料中,启动 uboot 的目的就是为了操作 EMMC、NAND,就可以将 tf-a-stm32mp157d-atk-trusted.stm32 写到 EMMC 或者NAND 里面)
- tf-a-stm32mp157d-atk-trusted.stm32(编译生成,资料也有)
- 前两个文件存在的目的就是为了将 tf-a-stm32mp157d-atk-trusted.stm32 烧写到 EMMC、NAND、SD 卡里面。
(2)准备 FlashLayout
- STM32CubeProgrammer 脚本文件.tsv,ST 官方叫做 FlashLayout,用来指定上面3个文件存放位置,烧写到 EMMC 的哪个地址区域。
- tsv 语法要求只能用 TAB 键,不能用空格!以‘#’开头为注释。使用notepad++的视图显示符号(显示空格和制表符),能够看到如果使用空格会显示“.”
- atk_sdcard-stm32mp157d-atk-qt.tsv直接使用正点原子的,改下名字tf-a.tsv,与上面3个文件放在一起即可。
- tf-a.tsv 的配置解析
(3)通过 USB 烧写 TF-A
- USB OTG 连接到电脑,TTL串口调试连接到电脑。
- 左右拖大界面,选择文件后下载,通过串口可以查看打印信息。
- 参照【正点原子】文档学习。