1、引言
客戶在使用 STM32MP1 平臺的過程中,用 Buildroot 制作文件系統(tǒng),如果直接修改 output/build/目錄下的源代碼,這樣在運行 make clean 的時候,就會將改動全部清除掉。所以,客戶想知道如何生成 patch 并編譯到文件系統(tǒng)中?提示:此處使用的 Buildroot 版本是(st/2023.02.2)
2、Patch 文件路徑設(shè)置:
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、小結(jié)
在編譯調(diào)試的過程中遇到了打進去的 patch,燒錄板子后,不生效的情況或者編譯報錯問題?這種多數(shù)情況是編譯的順序出了問題。
編譯的順序依次是:
Optee->Uboot->TF-A
編譯 tf-a 后,會自動打包并生成 fip.bin 文件。如果前面缺少文件,就會導(dǎo)致編譯報錯或者不生效的情況,請大家注意。