【发布时间】:2020-11-12 22:46:19
【问题描述】:
我正在使用我的 RPi4 研究 SPI 设备驱动程序。我在 spi.h 中的struct spi_device 中添加了一个成员变量,以查看我在 DTS(设备树源)中添加的变量是否按预期进入 spi.c:
struct spi_device {
struct device dev;
struct spi_controller *controller;
struct spi_controller *master;
u32 max_speed_hz;
u32 debug_sheld; // ------> for testing..
// ....}
然后我像这样编译内核以查看 spi.c 和 spidev.c 中发生了什么,重新启动我的 RPi4,并尝试加载 spidev。 ko 模块。但是,发生了这个错误:
$ sudo insmod spidev.ko
insmod: ERROR: could not insert module spidev.ko: Invalid parameters
我使用dmesg检查了内核日志:
[ 81.717199] spidev: disagrees about version of symbol spi_sync
[ 81.717211] spidev: Unknown symbol spi_sync (err -22)
[ 81.717248] spidev: disagrees about version of symbol spi_setup
[ 81.717257] spidev: Unknown symbol spi_setup (err -22)
[ 81.717278] spidev: disagrees about version of symbol __spi_register_driver
[ 81.717287] spidev: Unknown symbol __spi_register_driver (err -22)
[ 81.717311] spidev: disagrees about version of symbol spi_slave_abort
[ 81.717320] spidev: Unknown symbol spi_slave_abort (err -22)
[ 310.352225] spidev: disagrees about version of symbol spi_sync
[ 310.352237] spidev: Unknown symbol spi_sync (err -22)
[ 310.352274] spidev: disagrees about version of symbol spi_setup
[ 310.352283] spidev: Unknown symbol spi_setup (err -22)
[ 310.352305] spidev: disagrees about version of symbol __spi_register_driver
[ 310.352314] spidev: Unknown symbol __spi_register_driver (err -22)
[ 310.352338] spidev: disagrees about version of symbol spi_slave_abort
[ 310.352347] spidev: Unknown symbol spi_slave_abort (err -22)
[ 649.449228] spidev: disagrees about version of symbol spi_sync
[ 649.449244] spidev: Unknown symbol spi_sync (err -22)
[ 649.449291] spidev: disagrees about version of symbol spi_setup
[ 649.449303] spidev: Unknown symbol spi_setup (err -22)
[ 649.449332] spidev: disagrees about version of symbol __spi_register_driver
[ 649.449343] spidev: Unknown symbol __spi_register_driver (err -22)
[ 649.449375] spidev: disagrees about version of symbol spi_slave_abort
[ 649.449386] spidev: Unknown symbol spi_slave_abort (err -22)
当我在 spi.c 或 spidev.c 中更改某些内容时没有任何问题,但我不知道为什么在修改为struct spi_device。有人可以帮我解决这个问题吗?
【问题讨论】: