Linux第28步_编译“修改正点原子TF-A源码中的Makefile并编译生成新的TF-A 固件”

了解学习内容:

1)、正点原子STM32MP157开发板使用的主控型号是STM32MP157DAA1

2)linux /atk-mp1/atk-mp1/alientek_tf-a/tf-a-stm32mp-2.2.r1”目录下的文件是正点原子STM32MP157D开发板的“TF-A源码”。

3)linux /atk-mp1/atk-mp1/alientek_tf-a/”目录下的“Makefile.sdk”是我们用来编译正点原子的TF-A源码要用到的Makefile文件“。

4)、编译后,tf-a-stm32mp157d-atk-trusted.stm32”文件是我们需要的“TF-A固件”,它是正点原子开发板所使用的 TF-A 固件

5)、区分“源码”和“固件”。

源码就是人能看懂的程序代码;

固件是源码经过编译过后生成的目标程序,是二进制代码,一般为bin或hex格式,烧录进单片机能够被识别和执行。

一、修改正点原子TF-A源码中的Makefile.sdk

修改“Makefile.sdk”的原因:

因为

ST公司官方用的交叉编译器是“arm-ostl-linux-gnueabi-gcc”;

正点原子用的交叉编译器是“arm-none-linux-gnueabihf-gcc

所以,我们要修改Makefile.sdk文件。

linux /atk-mp1/atk-mp1/alientek_tf-a/”目录下的“Makefile.sdk”是我们用来编译正点原子的TF-A源码要用到的 Makefile文件。

1、打开终端

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd linux回车”,切换“linux”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd atk-mp1/回车”,切换“atk-mp1”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“mkdir alientek_tf-a回车”, 在“linux/atk-mp1/”目录下新建“alientek_tf-a”目录,用来存放正点原子修改好的TF-A源码。

输入“ls回车”,列出当前目录下所有的文件和文件夹

见下图:

2、双击“FileZilla Client.exe”,打开FTP客户端

3、点击”D:\Linux安装\Linux源码\正点原子Linux出厂系统源码\tf-a-stm32mp-2.2.r1-g212d381-v1.4.tar.bz2”。

4、将“tf-a-stm32mp-2.2.r1-g212d381-v1.4.tar.bz2”拖到“alientek_tf-a”目录下。

见下图:

5、输入“cd alientek_tf-a/回车”,切换“alientek_tf-a”目录下

6、解压

输入“tar -xvf tf-a-stm32mp-2.2.r1-g212d381-v1.4.tar.bz2回车

 

7、解压完成后,输入“ls回车”,列出当前目录下所有的文件和文件夹

8、输入“vim Makefile.sdk回车”,使用vim命令打开已有的“Makefile.sdk”文件

因为

ST公司官方用的交叉编译器是“arm-ostl-linux-gnueabi-gcc”;

正点原子用的交叉编译器是“arm-none-linux-gnueabihf-gcc

所以,我们要修改Makefile.sdk文件。

tf-a-stm32mp-2.2.r1”是正点原子针对自己的STM32MP157开发板修改过的 TF-A源码。“Makefile.sdk”是我们用来编译正点原子的TF-A源码要用到的 Makefile。

9、将“arm-ostl-linux-gnueabi-”改为“arm-none-linux-gnueabihf-”,见下图:

10、按“ESC”+“:wq”,保存退出。

二、编译“正点原子STM32MP157D开发板修改过的 TF-A源码”

linux /atk-mp1/atk-mp1/alientek_tf-a/tf-a-stm32mp-2.2.r1”目录下的文件是正点原子STM32MP157D开发板的 TF-A源码。

1、输入“cd tf-a-stm32mp-2.2.r1/车”,进入“tf-a-stm32mp-2.2.r1”目录下,准备查看“正点原子的STM32MP157D开发板的TF-A源码”。

2、输入“make -f ../Makefile.sdk all回车”, 执行编译, '-f'的意思是重新指定Makefile。

3、输入“ls -l回车”,列出当前目录下所有的文件和文件夹

4、重新打开终端,查询“linux /atk-mp1/atk-mp1/alientek_tf-a/ build/trusted”目录下有哪些文件,按照下图输入命令。

打开新的终端

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd linux/回车”,切换到“linux”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd atk-mp1/回车”,切换到“atk-mp1”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd alientek_tf-a/回车”,切换到“alientek_tf-a”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd build/回车”,切换到“build”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd trusted/回车”,切换到“trusted”目录下;

5、输入“ls -l回车”,列出当前目录下所有的文件和文件夹

注意:

我们只关注“linux /atk-mp1/atk-mp1/alientek_tf-a/build/trusted”目录下的文件,它不仅保存了STM32MP1所有型号的 TF-A 固件,还包含了正点原子提供的TF-A 固件,其中“tf-a-stm32mp157d-atk-trusted.stm32”就是正点原子开发板所使用的 TF-A 固件

三、简单介绍参与烧录的相关文件

1、在C:\Program Files\STMicroelectronics目录下,创建一个images目录

2、将前面编译得到的“tf-a-stm32mp157d-atk-trusted.stm32”,通过 FileZilla 发送到images目录下。

3、将“tf-a-stm32mp157d-atkserialboot.stm32”拷贝到images目录下。怎么生成的,这个下次学习中,讲解。

4、将u-boot.stm32拷贝到images目录下。怎么生成的,这个下次学习中,讲解。

拷贝后,见下图:

STM32CubeProgrammer脚本文件的后缀为“.tsv”,ST公司官方也叫做FlashLayout。在烧写“TF-A固件”之前,我们需要用“Notepad++”软件打开“后缀为.tsv”的脚本文件,根据需求决定哪些文件需要更新,设置好这个脚本文件。

四、出厂STM32CubeProg烧录固件包

如果你着急,就用正点原子的,去烧录试试吧:

1、准备serialboot文件,见下面的路径:

08、系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包\tf-a\tf-a-stm32mp157d-atk-serialboot.stm32 

2、准备boot文件,见下面的路径:

08、系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包\uboot\ u-boot.stm32

3、准备 FlashLayout文件(脚本文件),见下面的路径:

08、系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包\flashlayout\ atk_emmc-stm32mp157d-atk-qt.tsv

4、准备TF-A固件:

tf-a-stm32mp157d-atk-trusted.stm32”,这是前面编译生成的固件。

5、系统镜像\02、出厂系统镜像\001、STM32CubeProg烧录固件包\flashlayout将“atk_emmc-stm32mp157d-atk-qt.tsv”重命名为tf-a.tsv

这样,就得到烧录文件了。

使用 STM32CubeProgrammer 将 TF-A 烧写到开发板里面,STM32CubeProgrammer 支持通过 UART、USB、STLINK 来烧写系统,本教程全部采用 USB 烧写,也就是通过开发板上的USB OTG 口来烧写系统。

总结:烧录固件包\flashlayout
1、Linux开发环境搭建,基本完成了。

2、知道怎么编译源码,生成固件了。

学习“uboot”和“烧录”进行中... ... 

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值