我有一个简单的内核模块:
void GPIO_LED(void) {
printk(" GPIO: set PC8: '0');
at91_set_gpio_value(AT91_PIN_PC8, 1);
}
//
int init_module(void) {
GPIO_LED();
return 0;
}
MODULE_LICENSE("GPL");
与 mdev 设备管理一起使用时。一切正常。但是在执行insmod时使用 udev 设备管理
insmod /usr/modules/measurement_gpio.ko
出现以下消息:
insmod: can't insert '/usr/modules/measurement_gpio.ko': invalid module format
另一个测试表明,当使用设备表而不是mdev / udev时会导致相同的错误。每个设置保持不变(特别是内核版本),但设备管理在此测试期间发生了变化,因此实际上模块应该没问题。
怎么可能以及如何解决它?
[编辑:]使内核能够为多个版本加载模块后,我收到以下消息,这让我更加困惑:
measurement_gpio: version magic '2.6.39 mod_unload modversions ARMv5 ' should be '2.6.39 mod_unload ARMv5
[ EDIT2:] 我构建模块的方式是:
我什么都没改变,这就是为什么它让我更加困惑