zoukankan      html  css  js  c++  java
  • insmod: can't insert 'led.ko': invalid module format详细解释


    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源码文件,那个源码文件一定是编译过内核的源码文件。那个内核应该就是你目标板正在运行的内核。


  • 相关阅读:
    料理phpMyAdmin2.6以上版本数据乱码结果
    mysql 中字符集的选择
    关于MySQL中的mysqldump饬令的运用
    一些Mysql的优化经验
    MYSQL数据库初学者操作指南1
    MySQL 5.0 新特性教程 存储历程:第三讲
    Windows下MySQL PHP5的设置配备部署与phpBB2论坛的架设
    MySQL 5.0新特征教程 存储历程:第一讲
    MySQL 5.0 新特征教程 存储过程:第二讲
    Linux Apache Mysql PHP典范设置装备摆设1
  • 原文地址:https://www.cnblogs.com/smartxuchao/p/6440519.html
Copyright © 2011-2022 走看看