【分享】PetaLinux調試技巧2篇


作者: 付漢傑 hankf@xilinx.com hankf@amd.com
測試環境: 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM