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

最新文章

  1. 在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程
  2. 【JavaScript】 Webpack安装及文件打包
  3. Delphi Webbrowser 修改 textarea 值 百度
  4. HTML5 十大新特性(三)——视频和音频
  5. VBA学习之关于数据透视表的应用
  6. Java 第14章 字符串
  7. iOS-OC内存管理
  8. Caused by: java.lang.NoSuchFieldError: TRACE
  9. GWP PHP auth page works
  10. struts2 拦截器 interceptor
  11. 老李案例分享:MAT分析应用程序服务出现内存溢出过程
  12. 在使用<script>嵌入JavaScript代码时,不要在代码中的任何地方出现"</script>"字符串
  13. orderBy新写法
  14. sysbench工具安装使用
  15. LR 11 代理录制步骤
  16. 2018.12.30 poj3734 Blocks(生成函数)
  17. POJ1013 称硬币
  18. 非常简单的vue里面引入jquery
  19. *C语言的小技巧
  20. Linux命令-防火墙命令:iptables

热门文章

  1. Xamarin+Prism开发详解八:自动化测试之NUnit实践
  2. QT编程环境搭建
  3. Angular2的模块架构浅谈
  4. 4G最快网速相当于30M宽带
  5. RDLC系列(一)ASP.NET RDLC 报表自定义数据源
  6. AR入门系列-02-Vuforia在Unity3d编辑器的使用
  7. MyBatis 使用Generator自动生成Model , Dao, mapper
  8. 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)
  9. 微信小程序怎样提高应用速度小技巧
  10. java基础:数组的拼接