正点原子STM32MP157开发板使用的CPU型号是STM32MP157DAA1,而开发板硬件参考了ST公司的STM32MP157 EVK开发板,因此我们在移植的时候需要关注“stm32mp157d-ev1”。
一、了解SDK 包
ST公司会从ARM官方下载TF-A软件包,然后将STM32MP1 芯片添加进去,最终打包好提供给我们用户,这个就是SDK 包。
ST公司提供的SDK 包是在他自己的“STM32MP157 EVK 开发板”上验证通过的,它包括 TF-A、uboot、linux kermel等。“正点原子的 STM32MP157开发板”是在ST公司开发板硬件的基础上修改得到的,由于硬件被修改,所以软件也要在“ST公司提供的SDK 包”上修改。
二、编译ST公司的TF-A
1、打开终端
输入“ls回车”,列出当前目录下所有的文件和文件夹
输入“cd linux回车”,切换“linux”目录下
输入“ls回车”,列出当前目录下所有的文件和文件夹
输入“cd my-tfa回车”,切换到“my-tfa”目录下
输入“ls回车”,列出“my-tfa”目录下所有的文件和文件夹
注意:my-tfa目录下的文件就是ST公司的SDK包,这是我们在前面做好的备份文件。
见下图:
2、输入“vim Makefile.sdk回车”,使用vim命令打开已有的“Makefile.sdk”文件,见下图:
?3、将“arm-ostl-linux-gnueabi-”改为“arm-none-linux-gnueabihf-”,见下图:
4、按“ESC键”+“:wq键”,保存退出。
5、输入“cd tf-a-stm32mp-2.2.r1/回车”,进入到 tf-a源码目录下;
输入“ls回车”,列出“tf-a-stm32mp-2.2.r1”目录下所有的文件和文件夹;
这时,我们发现有一个Makefile文件,见下图:
?6、输入“make -f ../Makefile.sdk all回车”, 执行编译, '-f'的意思是重新指定Makefile。
如果需要加快编译速度,可是使用多线程编译,线程数量最好和自己给虚拟机分配的物理核心保持一致,使用-j来指定线程数,命令如下:
make -f ../Makefile.sdk -j8 all?//使用8线程编译
7、编译完成,见下图:
?8、输入“ls?-l回车”,列出“tf-a-stm32mp-2.2.r1”目录下所有的文件和文件夹;
9、输入“cd ..回车”返回到“my-tfa”目录
输入“ls回车”,列出“my-tfa”目录下所有的文件和文件夹;
注意:编译后,发现“my-tfa”目录下多了一个“build”目录,见下图:
10、输入“cd build/回车”,切换到“build”目录下;
输入“ls回车”,列出“build”目录下所有的文件和文件夹
optee是针对OP-TEE 的,正点原子没使用OP-TEE,所以optee目录和我们没关系。
serialboot和串行启动有关的,就是通过串口或者USB烧写系统的时候需要用到serialboot下的可执行文件“tf-a-stm32mp157d-atk-serialboot.stm32”。
trusted目录下的文件是我们烧写到开发板中的“TF-A镜像文件”。
见下图:
11、输入“cd trusted/回车”,切换到“trusted”目录下;
12、输入“ls 回车”,列出当前目录下所有的文件和文件夹
注意:
1)、由于我们使用的是“STM32M157D芯片的EV1开饭板”,因此,我们需要关注“前缀为tf-a-stm32mp157d-ev1”的文件”。
2)、“tf-a-stm32mp157d-ev1-trusted.stm32”和tf-a-stm32mp157d-ev1.stm32文件一模一样,只是重命名了一下。
3)、我们在烧写程序的时候,使用“tf-a-stm32mp157d-ev1-trusted.stm32”。
?ST公司开发板对应的TF-A固件不能直接在正点原子的开发板上运行,因此需要进行修改,执行TF-A移植。