baidu_29996195 2015-07-21 05:46 采纳率: 0%
浏览 3897

linux驱动模块加载不成功调试过程

版本:linux2.6.30

问题出现的过程:
1,我在Ubuntu环境下编译驱动模块
2,编译成功后,在板子上insmod出现了
embest_led: version magic '2.6.30 mod_unload modversions ARMv5 ' should be '2.6.30 preempt mod_unload ARMv5 '
insmod: error inserting 'embest_led.ko': -1 Invalid module format
3,我就更改了/usr/src/linux-2.6.30/include/vermagic.h文件,最终结果是用modinfo查看embest_led.ko信息是‘2.6.30 preempt mod_unload ARMv’同时在板子上insmod后没出现上述错误,而且用lsmod可以查看到embest信息,改动如下:

1 #include
2 #include
3
4 #define DEBUG

5
6 #ifdef DEBUG
7 #define CONFIG_PREEMPT
8 #define CONFIG_MODULE_UNLOAD
9 #endif
10 /* Simply sanity version stamp for modules. */
11 #ifdef CONFIG_SMP
12 #define MODULE_VERMAGIC_SMP "SMP "
13 #else
14 #define MODULE_VERMAGIC_SMP ""
15 #endif
16 #ifdef CONFIG_PREEMPT
17 #define MODULE_VERMAGIC_PREEMPT "preempt "
18 #else
19 #define MODULE_VERMAGIC_PREEMPT ""
20 #endif
21 #ifdef CONFIG_MODULE_UNLOAD
22 #define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
23 #else
24 #define MODULE_VERMAGIC_MODULE_UNLOAD ""
25 #endif
26
27 #ifdef DEBUG
28
29 #ifdef CONFIG_MODVERSIONS
30 #define MODULE_VERMAGIC_MODVERSIONS ""
31 #else
32 #define MODULE_VERMAGIC_MODVERSIONS "modversions "
33 #endif
34
35 #else
36
37 #ifdef CONFIG_MODVERSIONS
38 #define MODULE_VERMAGIC_MODVERSIONS "modversions "
39 #else
40 #define MODULE_VERMAGIC_MODVERSIONS ""
41 #endif
42
43 #endif
44
45 #ifndef MODULE_ARCH_VERMAGIC
46 #define MODULE_ARCH_VERMAGIC ""
47 #endif

            4,但是cat /proc/devices 时没有看到相关信息(主次设备号),在/dev/中也没有相应的节点。
            5,最高不清楚的是在中断没有打印(我把中断级别调到8了),在/var/volatile/log/messages中也没有相关打印信息。
            6,我怀疑是不是没有调用到源文件中module_init中的函数,就写了一个hello_world模块程序。问题是同样的。
  • 写回答

1条回答 默认 最新

  • threenewbee 2015-07-21 05:59
    关注
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?