在beaglebone中开发CAN驱动,我采用内核默认的配置,参考文档是“Sitara Linux Software Developer’s Guide”,内核用的是linux-3.1.0-psp04.06.00.03.sdk,
将编译好的.ko文件拷贝到lib相应的目录下。
加载驱动后出现如下问题:
root@am335x-evm:/# modprobe d_can
[95.548096] d_can: version magic '3.1.0 mod_unload modversions ARMv5 ' should be '3.1.0 mod_unload modversions ARMv7 '
FATAL: Error inserting d_can (/lib/modules/3.1.0/kernel/drivers/net/d_can.ko): Invalid module format
该如何解决呢?
说明:CAN模块是和所用的内核同时编译,编译的命令依次为:
(1)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- mrproper
(2)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- tisdk_am335x-evm_defconfig
(3)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- uImage
(4)make ARCH=arm CROSS_COMPILE=arm-arago-linux-gnueabi- modules
还有:我看像blooth等的驱动模块加载内核的时候就一并加进去了,为什么can的还得自己加进去呢?
还有:我将CAN模块设置成静态的编译内核,总会导致电脑突然断电,郁闷呐!