1、引言
客戶(hù)在使用 STM32MP1 平臺(tái)的過(guò)程中,用 Buildroot 制作文件系統(tǒng),如果直接修改 output/build/目錄下的源代碼,這樣在運(yùn)行 make clean 的時(shí)候,就會(huì)將改動(dòng)全部清除掉。所以,客戶(hù)想知道如何生成 patch 并編譯到文件系統(tǒng)中?提示:此處使用的 Buildroot 版本是(st/2023.02.2)
2、Patch 文件路徑設(shè)置:
Buildroot 提供了一個(gè) Global 的路徑用來(lái)存放所有。
3、如何生成 patch 文件:
下面舉例用 diff 的命令生成 patch 的方法:
比如在 optee 啟動(dòng)的文件中增加一行 log 作為例子。文件路徑:output/build/optee-oscustom/core/arch/arm/kernel/boot.c
4、以此類(lèi)推分別生成 TF-A、U-Boot、Linux 的 patch
5、編譯驗(yàn)證
TF-A 編譯:
make arm-trusted-firmware-dirclean (在 build 路徑下刪除 arm-trusted-firmware 文件夾)make arm-trusted-firmware-rebuild (重新編譯)
6、小結(jié)
在編譯調(diào)試的過(guò)程中遇到了打進(jìn)去的 patch,燒錄板子后,不生效的情況或者編譯報(bào)錯(cuò)問(wèn)題?這種多數(shù)情況是編譯的順序出了問(wèn)題。
編譯的順序依次是:
Optee->Uboot->TF-A
編譯 tf-a 后,會(huì)自動(dòng)打包并生成 fip.bin 文件。如果前面缺少文件,就會(huì)導(dǎo)致編譯報(bào)錯(cuò)或者不生效的情況,請(qǐng)大家注意。