insmod: can't insert 'led.ko': invalid module format

之前在Imx257学习版固件编写的驱动想直接移植imx257核心板的开发板上。以为2个板子的源码的引脚定义一样就没什么问题了。殊不知问题很多。





我们输入dmesg |tail

 





在log中我们看到2个版本不匹配。

在这儿我们需要明白一个原理,我们编译驱动程序的Makefile

有一个KDIR指的是Linux源码文件,那个源码文件一定是编译过内核的源码文件。那个内核应该就是你目标板正在运行的内核。

如果没有你的Makefile没有满足上述的情况你可能会出现下面情况



内核是纯净的没有编译过

你编译这个驱动可能会提示你丢失文件,或者出现内核的警告,即使生成了驱动文件加载也是失败,也许还看不到log









是编译过得内核但是内核的版本不对


我的项目使用周立功的固件,我是在学习版固件编写驱动自然在学习板上面加载都是ok。后面正式的项目改为工业板的固件,发现他们的内核版本的信息不对,导致出现上面的问题。解决方法

1、可以在编译内核的时候禁止内核加载驱动时进行版本检测(特殊情况这样处理)

2、使用正确的内核环境编写,就是用工业板的固件环境进行驱动编写

 

编译过的内核环境但编译的.config不一样


我们看驱动的Makefile中并没有写明编译的交叉工具链why?

应为驱动的编译会使用编译内核的交叉工具链,如果内核.config写错了,交叉工具链应该也是不对。那么我们的驱动编译的交叉工具链也会写错

我们可以使用如下命令查看

错误





观看vermagic 看到了gcc么这不是gcc编译的么,我需要arm-Linux-gcc。

















总结

KDIR指的是Linux源码文件,那个源码文件一定是编译过内核的源码文件。那个内核应该就是你目标板正在运行的内核。

insmod: can't insert 'led.ko': invalid module format详细解释的更多相关文章

  1. insmod: error inserting 'simp-blkdev.ko': -1 Invalid module format

    (一) 今天写了个块设备驱动例子,在虚拟机上加载模块insmod simp_blkdev.ko的时候,出现以下错误. insmod: error inserting 'simple-blk.ko': ...

  2. 解决insmod: error inserting 'hello.ko': -1 Invalid module format

    编译自己的内核模块后,insmod出现error:error inserting 'hello.ko': -1 Invalid module format 出现这种情况的原因是因为Makefile种使 ...

  3. insmod: error inserting 'hello.ko': -1 Invalid module format

    在学习编写linux驱动程序的时候,一般都是从写一个helloworld的模块開始. 可是在编译完毕后,进行模块载入的时候,有时会出现例如以下错误: insmod: error inserting ' ...

  4. insmod: can't insert 'xxx.ko': unknown symbol in module, or unknown parameter

    手动加载内核模块时候,报如下错误信息 insmod: can't insert 'xxx.ko': unknown symbol in module, or unknown parameter 问题原 ...

  5. insmod hello.ko -1 Invalid module format最简单的解决的方法

    在下也是从网上搜索到的这样的解决的方法. 遇到这样的情况后,通过dmesg看一下内核日志. 假设发现有例如以下日志.那就好办了. hello: version magic '2.6.33.3 ' sh ...

  6. insmod: can't insert 'btn_drv.ko': Operation not permitted

    检测内核是否以及支持 要插入的驱动,若内核支持,则需要裁减掉内核支持的驱动才能安装上自己所写的驱动程序.

  7. 内核模块加载错误 “Invalid module format” 解决办法

    参考链接:  http://blog.chinaunix.net/uid-20448327-id-172345.html

  8. jarsigner签名报错Invalid keystore format

    由于之前在魅族市场的APK包都不是自己上传的,而是魅族从其他安卓市场帮拉去过来了. 所以需要我们自己去认领APK包. 这个时候就需要按照魅族给的未签名测试包给重新签名然后提交审核了. 1:看完以下说明 ...

  9. [原] wmic: Invalid XSL format (or) file name错误解决方法

    之前运行wmic命令正确,今天在服务器上出现Invalid XSL format (or) file name的提示,搜索了一下,在这里找到了答案: http://www.ctkn.net/2011/ ...

随机推荐

  1. JAVA设计模式:装饰模式

    前面我们学习了代理模式: 代理模式主要使用了java的多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你 ...

  2. MVC - 单点登录中间件

    本章将要和大家分享的是一个单点登录中间件,中间件听起来高深其实这里只是吧单点登录要用到的逻辑和处理流程封装成了几个方法而已,默认支持采用redis服务保存session的方式,也可以使用参数Func& ...

  3. Javascript基本语句

    1.单行语句是大家用的最多的,下面讲讲复合语句的用法. 用一对花括号括起来,处理的时候,可以用单句来对待.这样做的好处是避免复合语句中语句互相干扰执行. 语法如下: { var x=1111: var ...

  4. 存储过程与SQL语句如何选择

    58到家数据库30条军规,有一条是“禁止使用存储过程.视图.触发器.Event”, 高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”, 并发量大的情况下,这些功能很可能 ...

  5. Androidstudio项目分享到Git@OSC托管

    Androidstudio项目分享到Git@OSC托管. 一.在OSC创建仓库 例如,创建一个AndroidStudy仓库,创建步骤如下: 输入仓库名称 点击创建按钮,就可以完成仓库的创建,如下图所示 ...

  6. perl open函数

    open(DATA, "<file.txt"); # <只读打开file.txt ,DATA作为句柄 open(DATA, ">file.txt&quo ...

  7. 关于Java空指针的控制(转)

    1)在已经的String(字符串)调用 equal()和 equalsingnoreCase()而不是未知的对象 通常在已经的非空字符串在调用equals().因为equal()方法是对称的,调用a. ...

  8. Java 数值类型以及计算

    前段时候写了一个对外提供的接口,其中有一个数值校验的计算.在测试的过程中发现5.6-1.6 != 4,在反复的测试过程中发现double类型的数值为有精度丢失的现象,看来还是基础知识不牢固,所以就在网 ...

  9. 扩大按钮 btn 响应区域

    方法一:类别 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0 ...

  10. 简易漫画网站搭建-漫画喵Server版

    小喵的唠叨话:寒假的时候写了一个漫画爬虫,爬取了好几个漫画,不过一直没有找到合适的漫画阅读的工具.因此最近就试着自己写一个漫画的网站,放在公网上或者局域网里,这样就能随时随地用手机.Pad看漫画了. ...