情况1. 从另外一个版本中为了测试模块拷贝到本系统中
现象: sudo insmod ft52x6_ts.ko
insmod: error inserting 'ft52x6_ts.ko': -1 Invalid module format
原因: (1). 所用内核源码版本号与目前使用的内核不同;
(2). 编译目标不同,比如编译的是i686,装好的是i386;
(3). 使用编译器版本不同;
(4). 目前使用的内核不是自己编译出来的。
解决办法: 暂无
情况2. 安装touchscreen的参考代码,使用安装模块的方法
现象: insmod ft52x6_ts.ko
insmod: init_module 'ft52x6_ts.ko' failed (No such device)
原因1: 驱动初始化使用的设备地址和Board初始化设备地址不匹配造成的
解决办法:更改Board初始化设备使用TS厂商提供的地址
原因2:驱动加载顺序有错,也会导致这样的错误(例,加载ppp_mppe时,如果没加载sha1_generic,便提示No such device)
解决方法:明确依赖关系,有时需要差些资料才行。
情况3..在插入模块的时候出现如下问题:
# insmod globalmem.ko insmod: error inserting 'globalmem.ko': -1 Device or resource busy ANSWER:主设备号被占用了,换另一个。
你把globalmem.c文件里面的宏定义那里改为226或其他,然后再编译就可以插入了!
特别注意: 如果换了主设备号以后,下面接着创建节点的时候也要该,否则出现下面错误:
# mknod /dev/globalmem c 254 0 /*这里的254跟已修改的主设备号228不一致*/# echo 'hello world' > /dev/globalmem/bin/sh: can't create /dev/globalmem: No such device or address
解决办法:
# rm /dev/globalmem # mknod /dev/globalmem c 226 0# echo 'hello world' > /dev/globalmem written 12 bytes(s) from 0
部分来源:http://blog.youkuaiyun.com/linuxdriverdeveloper/article/details/7265018