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. $.each()遍历json数据

    var json = [ {"id":"1","tagName":"apple"}, {"id":& ...

  2. 简单了解Hibernate

    orm 对象 object 关系relational映射 mppingorm对象关系映射hibernate 框架是什么?很简单 持久化框架  他轻松的封装了jdbc那些繁琐的操作什么是持久化?持久化就 ...

  3. MASM32快速起步

    MASM32是一个免费的软件程序,让您编辑Microsoft宏汇编程序(MASM)代码从一个基本的文本界面.它强调MASM代码各部分以不同的颜色,使其更容易扫描和检测错误.它提供了一个简单的布局程序员 ...

  4. Android Studio JNI开发入门教程

    Android Studio JNI开发入门教程 2016-08-29 14:38 3269人阅读 评论(0) 收藏 举报  分类: JNI(3)    目录(?)[+]   概述 在Andorid ...

  5. 读书笔记 effective c++ Item 19 像设计类型(type)一样设计

    1. 你需要重视类的设计 c++同其他面向对象编程语言一样,定义了一个新的类就相当于定义了一个新的类型(type),因此作为一个c++开发人员,大量时间会被花费在扩张你的类型系统上面.这意味着你不仅仅 ...

  6. 剑指offer编程题Java实现——面试题6重建二叉树

    题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...

  7. 学习笔记——Java字符串操作常用方法

    1.创建字符串 最常用的是使用String类的构造方法:String s=new String("abcd"); 也可采用J2SE5.0添加的StringBuilder类的字符串构 ...

  8. linux下keepalived 安装配置

    keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层.第4层和第7层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务 ...

  9. Git的简单安装

    git 的安装及源代码上传 首先去官网把git下载好,这里给大家提供个官网下载地址 https://git-scm.com/downloads 安装完成后,在开始菜单里找到“Git”->“Git ...

  10. div模拟table

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>div模 ...