【分享】PetaLinux除錯技巧2篇
阿新 • • 發佈:2022-03-02
作者: 付漢傑 [email protected] [email protected]
測試環境: Vivado/PetaLinux 2021.2, Linux 5.10.0
禁止Petalinux的recipes增加的驅動
Petalinux工程,通過meta-user\recipes-kernel\linux\linux-xlnx中的patch檔案,給Linux kernel增加了驅動,並使能為module形式編譯。
再在Petalinux-config -c kernel中disable。編譯Petalinux工程後,檔案系統裡,還是有對應的驅動。
在編譯後,把linux kernel的程式碼複製出來,再修改其中對應驅動程式的makefile,在makefile裡刪除驅動的“.o”檔案。之後再編譯,檔案系統裡,對應的驅動消失了,達到了目的。
編譯時,Linux核心驅動程式中的__DATE__和__TIME__ 被報告錯誤
除錯時,為了保證使用的核心驅動程式是最新版本,再驅動裡增加了__DATE__和__TIME__的列印。編譯時,得到下列錯誤。
hankf@XSZGS4:kernel-source-patch$ make -j 64 CALL scripts/atomic/check-atomics.sh CALL scripts/checksyscalls.sh CHK include/generated/compile.h CC [M] drivers/media/i2c/avt_multi_sensor_fmc/max9296_serdes.o CC [M] drivers/media/i2c/avt_multi_sensor_fmc/max9295_serdes.o drivers/media/i2c/avt_multi_sensor_fmc/max9295_serdes.c: In function 'max9295_serdes_probe': drivers/media/i2c/avt_multi_sensor_fmc/max9295_serdes.c:58:93: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time] 58 | printk(KERN_INFO "%s:%d, MAX9295 driver, compilation time: %s, %s.\n", __func__, __LINE__, __DATE__, __TIME__ ); | ^~~~~~~~ drivers/media/i2c/avt_multi_sensor_fmc/max9295_serdes.c:58:103: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time] 58 | printk(KERN_INFO "%s:%d, MAX9295 driver, compilation time: %s, %s.\n", __func__, __LINE__, __DATE__, __TIME__ ); | ^~~~~~~~ cc1.real: some warnings being treated as errors
根據網上文章,在驅動的Makefile裡,如下新增CFLAGS或者EXTRA_FLAGS,可以去掉這個錯誤。實際測試,沒有作用。
CFLAGS += -Wno-error=date-time -Wno-date-time
EXTRA_FLAGS += -Wno-error=date-time -Wno-date-time
後來研究後,在驅動的Makefile裡增加“ccflags-y”,可以去掉這個錯誤。
ccflags-y += -Wno-error=date-time -Wno-date-time
後來能編譯成功。
hankf@XSZGS4:kernel-source-patch$ make CALL scripts/checksyscalls.sh CALL scripts/atomic/check-atomics.sh CHK include/generated/compile.h CC [M] drivers/media/i2c/avt_multi_sensor_fmc/max9286_serdes.o