1、背景

imx6ull驱动开发基于正点原子的开发板,上面运行linux 4.1.15内核,根文件系统为ubuntu 16.05.5 LTS.

2、加载驱动文件chrdevbase.ko文件时,先使用depmod生成依赖文件时,提示无modules.order, modules.builtin无这两个文件。

解决办法:modules.order可以从驱动生成的目录中复制,modules.builtin可以从编译完成的linux内核源码根据目录获取即可。

zsm@imx6ull:/lib/modules/4.1.15$ depmod
depmod: WARNING: could not open /lib/modules/4.1.15/modules.order: No such file or directory
depmod: WARNING: could not open /lib/modules/4.1.15/modules.builtin: No such file or directory
zsm@imx6ull:/lib/modules/4.1.15$ ls -l
total 40
-rw-rw-r-- 1 zsm zsm 5465 Oct 26 01:34 chrdevbase.ko
-rw-r--r-- 1 zsm zsm   45 Oct 26 01:35 modules.alias
-rw-r--r-- 1 zsm zsm   12 Oct 26 01:35 modules.alias.bin
-rw-r--r-- 1 zsm zsm    0 Oct 26 01:35 modules.builtin.bin
-rw-r--r-- 1 zsm zsm   15 Oct 26 01:35 modules.dep
-rw-r--r-- 1 zsm zsm   51 Oct 26 01:35 modules.dep.bin
-rw-r--r-- 1 zsm zsm   52 Oct 26 01:35 modules.devname
-rw-r--r-- 1 zsm zsm   55 Oct 26 01:35 modules.softdep
-rw-r--r-- 1 zsm zsm   49 Oct 26 01:35 modules.symbols
-rw-r--r-- 1 zsm zsm   12 Oct 26 01:35 modules.symbols.bin
zsm@imx6ull:/lib/modules/4.1.15$ modprobe chrdevbase.ko
modprobe: ERROR: ../libkmod/libkmod.c:514 lookup_builtin_file() could not open builtin file '/lib/modules/4.1.15/modules.builtin.bin'
modprobe: FATAL: Module chrdevbase.ko not found in directory /lib/modules/4.1.15

3、探测驱动文件insmod chrdevbase.ko时提供Invalid module format,失败信息通dmesg查看提示为驱动程序版本与内核版本不一样,内核版本为4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8 ,而驱动文件chrdevbase.ko的版本为4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8。查看驱动文件的信息可以使用modinfo 模块名。


root@imx6ull:/lib/modules/4.1.15# insmod chrdevbase.ko
insmod: ERROR: could not insert module chrdevbase.ko: Invalid module format
root@imx6ull:/lib/modules/4.1.15# file chrdevbase.ko
chrdevbase.ko: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), BuildID[sha1]=db1f490c8b622fc8dfbc484a15918ab56e0e9e8e, not stripped
root@imx6ull:/lib/modules/4.1.15#
root@imx6ull:/lib/modules/4.1.15#
root@imx6ull:/lib/modules/4.1.15#
root@imx6ull:/lib/modules/4.1.15# dmesg
[ 2636.034265] chrdevbase: version magic '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ' should be '4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8 '

解决办法:重新配置内核,修改为只选择ARMv7, 通过menuconfig修改,如下图:编译内核后再编译驱动程序就可以了。

4、安装newchrled模块时,提示Invalid argument,通过详细查看dmesg提示newchrled: Unknown symbol device_create (err -22),即是无法从内核符号表中找到函数device_create。这个问题是由于板子上运行的内核中符号表中device_create函数没有或对应不上,我这个板子运行的内核是在家中电脑上编译出来,目前测试的驱动文件是在公司的电脑上编译出来,两个内核源代码有细微一的区别导致的。

root@imx6ull:/lib/modules/4.1.15# modprobe newchrled
modprobe: ERROR: could not insert 'newchrled': Invalid argument
root@imx6ull:/lib/modules/4.1.15# ls -l
total 124
-rwxrwxr-x 1 zsm  zsm  10990 Oct 26 03:42 chr
-rw-rw-r-- 1 zsm  zsm   5747 Oct 26 06:11 chrdevbase.ko
-rwxrwxr-x 1 zsm  zsm  10663 Oct 26 08:51 led
-rw-rw-r-- 1 zsm  zsm   6107 Oct 26 07:43 led.ko
-rw-r--r-- 1 root root    45 Oct 26 09:28 modules.alias
-rw-r--r-- 1 root root    12 Oct 26 09:28 modules.alias.bin
-rw-rw-r-- 1 zsm  zsm  18104 Oct 26 03:42 modules.builtin
-rw-r--r-- 1 root root 20446 Oct 26 09:28 modules.builtin.bin
-rw-r--r-- 1 root root    37 Oct 26 09:28 modules.dep
-rw-r--r-- 1 root root   145 Oct 26 09:28 modules.dep.bin
-rw-r--r-- 1 root root    52 Oct 26 09:28 modules.devname
-rw-rw-r-- 1 zsm  zsm     71 Oct 26 03:42 modules.order
-rw-r--r-- 1 root root    55 Oct 26 09:28 modules.softdep
-rw-r--r-- 1 root root    49 Oct 26 09:28 modules.symbols
-rw-r--r-- 1 root root    12 Oct 26 09:28 modules.symbols.bin
-rw-rw-r-- 1 zsm  zsm   7311 Oct 26 09:28 newchrled.ko
root@imx6ull:/lib/modules/4.1.15# dmesg
[ 8309.174306] kernel senddata ok!
[ 8389.320054] kernel senddata ok!
[ 8504.563661] chrdevbase exit!
[ 8515.614554] chrdevbase init!
[ 8527.479044] kernel send data ok!
[ 8538.832405] kernel send data ok!
[ 9146.225007] chrdevbase exit!
[20325.294426] newchrled: disagrees about version of symbol device_create
[20325.294459] newchrled: Unknown symbol device_create (err -22)
[20325.294487] newchrled: disagrees about version of symbol device_destroy
[20325.294500] newchrled: Unknown symbol device_destroy (err -22)

解决办法:把公司电脑编译生成的内核zImage下载到板子中解决此问题。

4、hexdump命令的安装, hexdump命令是bsdmainutils软件包中的提供的,可以使用apt-get install bsdmainutils安装后即可以获得hexdump命令。

5、ubuntu 18.04系统,硬件intel i7,系统启动后是默认是不加载usb转串口驱动程序ftdio_sio.ko文件,可以修改modules.conf文件增加,如下图。

imx6ull驱动开发经验相关推荐

  1. win7 x64驱动开发经验(三)windbg 双机调试配置 、问题及解决办法

    win7 x64驱动开发经验(三)windbg 双机调试配置 .问题及解决办法 http://www.cnblogs.com/witty/archive/2012/04/23/2466024.html ...

  2. IMX6ULL驱动开发实战连载-01搭建开发环境

    哈喽,大家好.我是小仲.板子在3.31号就收到了,但是,由于最近一直很忙,拖到了现在才开始搭建环境.接下来的一段时间,会基于野火IMX6ULL开发板写一系列教程,主要侧重于驱动和内核的调试技巧.这方面 ...

  3. iMX6ULL驱动开发 | 让imx6ull开发板支持usb接口FC游戏手柄

    手边有一闲置的linux开发板iMX6ULL一直在吃灰,不用来搞点事情,总觉得对不住它.业余打发时间就玩起来吧,总比刷某音强.从某多多上买来一个usb接口的游戏手柄,让开发板支持以下它,后续就可以接着 ...

  4. IMX6ULL驱动开发前奏三:根文件系统构建步骤明细

    Linux搭建根文件系统 根文件系统首先是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务 ...

  5. 【IMX6ULL驱动开发学习】17.内核定时器(按键消抖)

    1. 内核定时器初始化 setup_timer(struct timer_list *timer, void (*function)(unsigned long), unsigned long dat ...

  6. linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...

    点击上方蓝字关注我吧! 为什么内推更靠谱?内推是基于人脉关系链的推荐,其背后有一定的信用背书,靠谱的人推荐的人相对也会比较靠谱,所以企业一般职位都是从内部开始分享的,相较于自己海投简历,内推的效率和成 ...

  7. imx6ull 以太网

    网络设备的状态 enum netdev_state_t { __LINK_STATE_START, __LINK_STATE_PRESENT, __LINK_STATE_NOCARRIER,__LIN ...

  8. Windows 文件系统过滤驱动开发教程 (第二版)

    Windows 文件系统过滤驱动开发教程 (第二版)       楚狂人-2007-上海 (MSN:walled_river@hotmail.com)          -1.  改版序....... ...

  9. windbg调试驱动学习总结

    简单驱动编写与windbg调试 http://trustsec.blog.51cto.com/305338/64694/ 一.驱动编写 随着对windows系统的深入研究,越来越多的内核方面的知识被挖 ...

最新文章

  1. kuayu react_react跨域解决方案
  2. 卫星图像分割--Effective Use of Dilated Convolutions for Segmenting Small Object Instances
  3. python编程有用吗-python儿童编程有必要学吗
  4. 采购订单审批/取消审批程序(BAPI_PO_RESET_RELEASE、BAPI_PO_RELEASE)
  5. JavaScript的语音识别
  6. Magento教程 20:仅限会员留言的产品评论设定!
  7. php_mongo模块,PHP安装mongo模块详细步骤
  8. matlab练习程序(图像错切)
  9. 计算机专业硕士求职经历(转)
  10. 微信跳wap php_微信跳转wap外部浏览器接口如何实现
  11. 国产银河数学式电子计算机是属于,《世界上公认的第一台电子计算机.doc
  12. http basic认证
  13. 烂土豆 (ms16-075) 提权方法
  14. 操作系统课程项目 OS project —— Pintos from Project 1 to Project 3
  15. 流程图的制作技巧分享,手把手教你如何绘制流程图
  16. コナン純黒のナイトメア20180715
  17. java获取微秒时间,java获取当前时间微秒
  18. 论文阅读笔记之AGE:由图信号引发的一系列问题
  19. python练习题4 将mRNA翻译成蛋白质
  20. STM32异常与中断过程详解

热门文章

  1. dsp版win10和普通版区别_Windows10各个版本有什么不同,如何选择适合自己的Win10系统...
  2. Macbook上如何调整Windows分区大小,NTFS-FAT-FAT32
  3. linux7/centos7下源码安装nginx-1.16.1详解
  4. 逻辑思维案例题(二)
  5. axure图标元件库icons满足不了需求?[一分钟教会你在axure下使用各式各样炫酷icons]!! 仅限谷歌浏览器
  6. 闲话虚拟仪器开发历史
  7. k8s集群配置域名证书支持https与http
  8. 【游戏逆向】CS1.6无后坐力基址寻找
  9. 步进电机S曲线的生成
  10. OMV安装可道云kodexplorer网盘