1、引言
客户在使用 STM32MP1 平台的过程中,用 Buildroot 制作文件系统,如果直接修改 output/build/目录下的源代码,这样在运行 make clean 的时候,就会将改动全部清除掉。所以,客户想知道如何生成 patch 并编译到文件系统中?提示:此处使用的 Buildroot 版本是(st/2023.02.2)
2、Patch 文件路径设置:
Buildroot 提供了一个 Global 的路径用来存放所有。
3、如何生成 patch 文件:
下面举例用 diff 的命令生成 patch 的方法:
比如在 optee 启动的文件中增加一行 log 作为例子。文件路径:output/build/optee-oscustom/core/arch/arm/kernel/boot.c
4、以此类推分别生成 TF-A、U-Boot、Linux 的 patch
5、编译验证
TF-A 编译:
make arm-trusted-firmware-dirclean (在 build 路径下删除 arm-trusted-firmware 文件夹)make arm-trusted-firmware-rebuild (重新编译)
6、小结
在编译调试的过程中遇到了打进去的 patch,烧录板子后,不生效的情况或者编译报错问题?这种多数情况是编译的顺序出了问题。
编译的顺序依次是:
Optee->Uboot->TF-A
编译 tf-a 后,会自动打包并生成 fip.bin 文件。如果前面缺少文件,就会导致编译报错或者不生效的情况,请大家注意。