了解学习内容:
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目录下。怎么生成的,这个下次学习中,讲解。
拷贝后,见下图:
如果你着急,就用正点原子的,去烧录试试吧:
文件路径:
\STM32MP157开发板(A盘)-基础资料\08、系统镜像\01、教程系统镜像\tf-a-mp1-2.2-v1.0\tf-a-stm32mp157d-atk-serialboot.stm32
\STM32MP157开发板(A盘)-基础资料\08、系统镜像\01、教程系统镜像\u-boot-stm32mp-2020.01-r0\u-boot.stm32
这样,就得到烧录文件了。
总结:
1、Linux开发环境搭建,基本完成了。
2、知道怎么编译源码,生成固件了。
学习“uboot”和“烧录”进行中... ...