【分享】PetaLinux调试技巧2篇

2022-03-23 10:19:55 浏览数 (1)

作者: 付汉杰 hankf@xilinx.com hankf@amd.com 测试环境: Vivado/PetaLinux 2021.2, Linux 5.10.0

禁止Petalinux的recipes增加的驱动

Petalinux工程,通过meta-userrecipes-kernellinuxlinux-xlnx中的patch文件,给Linux kernel增加了驱动,并使能为module形式编译。 再在Petalinux-config -c kernel中disable。编译Petalinux工程后,文件系统里,还是有对应的驱动。 在编译后,把linux kernel的代码复制出来,再修改其中对应驱动程序的makefile,在makefile里删除驱动的“.o”文件。之后再编译,文件系统里,对应的驱动消失了,达到了目的。

编译时,Linux内核驱动程序中的__DATE__和__TIME__ 被报告错误

调试时,为了保证使用的内核驱动程序是最新版本,再驱动里增加了__DATE__和__TIME__的打印。编译时,得到下列错误。

代码语言:javascript复制
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,可以去掉这个错误。实际测试,没有作用。

代码语言:javascript复制
CFLAGS  = -Wno-error=date-time -Wno-date-time 
EXTRA_FLAGS  = -Wno-error=date-time -Wno-date-time 

后来研究后,在驱动的Makefile里增加“ccflags-y”,可以去掉这个错误。

代码语言:javascript复制
ccflags-y  = -Wno-error=date-time -Wno-date-time

后来能编译成功。

代码语言:javascript复制
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

0 人点赞