imx6ull驱动开发经验

2023-11-17

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文件增加,如下图。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

imx6ull驱动开发经验 的相关文章

  • ARM体系结构简介 —— 迅为

    目录 单片机和ARM处理器 内存管理单元 MMU 高速缓冲存储器 CACHE 指令集 ARM的指令系统 ARM处理器工作模式 ARM处理器的内部寄存器 ARM处理器的异常 ARM中断向量 ARM架构的发展 单片机和ARM处理器 内存管理单元
  • linux-arm电源管理

    一文搞懂ARM SoC功耗控制架构
  • 驱动怎么学

    1 什么是驱动 1 1理解驱动的概念 1 驱动一词的字面意思 驱动就是让一个东西动起来 给一个东西动力 让它动起来 2 物理上的驱动 比如 一个球放在那儿没动 你踢了一下它 给了它一个力 给了力之后它就能动 就说明你驱动了它 这就是物理学上
  • 字符设备驱动详解(主次设备号、注册/卸载字符设备驱动、创建设备节点、地址映射)

    1 主次设备号 1 主次设备号是内核用来索引设备的 每个主次设备号在内核中都是唯一的 每个注册的设备都有一个分配的主次设备号 2 同一个主设备号可以有多个从设备号 主设备是对应的驱动程序 次设备号对应设备文件所指的设备 一个Soc可能接同样
  • RTC实时时钟实验(低功耗、纽扣电池供电)

    目录 I MX6U RTC 简介 硬件原理分析 实验程序编写 修改文件MCIMX6Y2 h 编写实验程序 编译下载验证 编写Makefile 和链接脚本 编译下载 实时时钟是很常用的一个外设 通过实时时钟我们就可以知道年 月 日和时间等信息
  • Linux 块设备驱动实验

    一 块设备驱动要远比字符设备驱动复杂得多 不同类型的存储设备又对应不同的驱动子系统 本章我们重点学习一下块设备相关驱动概念 不涉及到具体的存储设备 1 什么是块设备 块设备是针对存储设备的 比如 SD 卡 EMMC NAND Flash N
  • Linux驱动开发--平台总线id和设备树匹配

    目录 一 ID匹配之框架代码 二 ID匹配之led驱动 三 设备树匹配 四 设备树匹配之led驱动 五 一个编写驱动用的宏 一 ID匹配之框架代码 id匹配 可想象成八字匹配 一个驱动可以对应多个设备 优先级次低 注意事项 device模块
  • Robot Framework 自动化测试详解

    一 Robot Framework 简介 1 界面自动化测试工具 界面自动化测试 即UI自动化测试 比较常见的工具有 QTP AutoIt Selenium等 像QTP经历了很多版本 最新的版本好像叫UFT了 对初学者来说 录制回放是相当容
  • IMX6学习记录(8)-更换linux配置,加速启动

    上面是我的微信和QQ群 欢迎新朋友的加入 之前启动的时候将近是1分钟 这个时间太浪费了 更新一下内核的配置 让启动速度更快一些 更新之后 启动时间大概10秒左右 一共三个内容 来源是板子附带源码里面的文件 1 配置文件 2 设备树文件 3
  • 基于STM32MP157调试MIPI-DSI屏幕

    平台 STM32MP157 屏幕 mipi dsi接口 1024x600 内核版本 linux5 4 本人是第一次调试mipi屏 在157这个平台上遇到的问题有一点多 接下来简单的描述下我的调试经验 一 先配置一下设备树DTB ltdc p
  • fb设备驱动1:fb设备的显像原理和步骤

    lcd的显像原理 将DDR内存的一部分划分出来作为显存 显存与lcd显示屏幕之间做一个双向的映射 然后用户只需要将需要显示的内容放入显存之中 然后显存中的内容就会刷新到lcd的储存器中进行显示 显存 在内核之中申请一块内存作为显存 由于内核
  • 擎创技术流

    上期跟大家聊了下eBPF的发展历史还有特性 点击这里 擎创技术流 深入浅出运维可观测工具 一 聊聊eBPF的前世今生 一键回看上期精彩内容 这期主要跟大家分享下eBPF在应用过程中可能出现的问题 希望能帮到遇到类似问题的朋友 话不多说 我们
  • <Linux开发>驱动开发 -之-基于pinctrl/gpio子系统的LED驱动

    Linux开发 驱动开发 之 基于pinctrl gpio子系统的LED驱动 交叉编译环境搭建 Linux开发 linux开发工具 之 交叉编译环境搭建 uboot移植可参考以下 Linux开发 之 系统移植 uboot移植过程详细记录 第
  • Linux INPUT 子系统实验

    按键 鼠标 键盘 触摸屏等都属于输入 input 设备 Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件 输入设备本质上还是字符设备 只是在此基础上套上了 input 框架 用户只需要负责上报输入事件 比如按键值
  • 【分析笔记】全志 T507 PF4 引脚无法被正常设置为中断模式的问题分析

    相关信息 硬件平台 全志T507 系统版本 Android 10 Linux 4 9 170 问题描述 PF4 无法通过标准接口设置为中断模式 而 PF1 PF2 PF3 PF5 正常可用 分析过程 一开始以为是引脚被其它驱动占用引起 或者
  • 磁盘数据线接触不良的故障排查

    手头有个小型主机 运行centos 发现工作很不稳定 经常启动不起来 就算启动起来也会在几分钟内出现各种IO错误 可能出现以下几种报错 1 只读文件系统 Read only file system 尝试对磁盘写入的时候可能出现这个错误 2
  • Linux驱动

    Linux驱动入门系列 Linux驱动入门 一 字符设备驱动基础 Linux驱动入门 二 操作硬件 Linux驱动入门 三 Led驱动 Linux驱动入门 四 非阻塞方式实现按键驱动 Linux驱动入门 五 阻塞方式实现按键驱动 Linux
  • STM32 CAN通信理解(是半双工还是全双工?)

    STM32F429 CAN通信 CAN 是控制器局域网络 Controller Area Network 的简称 它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的 并最终成为国际标准 ISO11519 是国际上应用最广泛的现场
  • 迅为-iMX6ULL开发板-Python移植-运行测试2

    迅为 iMX6ULL开发板 Python移植 运行测试2 92 3 1 库功能文件测试 进入 install bin 目录下使用命令 python 然后使用 import 加载各模块如图 92 3 1 1 所示则 python移植成功 按
  • 学习区分dB、dBm、dBuV、dBi

    dB 对于分贝的概念 很多朋友最早接触这个概念 是用 分贝 评估声音的大小 声音的大小用分贝 dB 表示 是一种对数单位 用来描述声音的强度或功率比例 如果P是我们需要测试的声压级或声功率级 P0是参考值 通常取为标准听觉阈限的声压级 X

随机推荐

  • 前端面试总结

    1 引言 最近参加了大量的招聘会 投递了大量的简历 整整体会了从 随便找个厂上一下 还是的找个大厂 没人要 急了急了 海投一波 工资有点尬 海投中 简单说一下自己的一些感受吧 现在的前端属实有点尴尬 前端的基础教程特别多 最开始本来是觉得自
  • Stata输出统计结果到Excel或word

    目录 一 安装外部包 二 相关命令 三 实例 1 描述性统计结果输出 2 相关性结果输入 3 回归结果输出 1 单模型结果 2 多模型结果 参考 一 安装外部包 在Stata内安装外部包 estout和logout ssc install
  • CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN

    摘要 本文从网络体系结构的角度出发 提出了跨阶段局部网络 CSPNet 来解决以往工作中需要大量推理计算的问题 本文将问题归结为网络优化中的重复梯度信息 所提出的网络通过从网络阶段的开始和结束集成特征映射来注重梯度的可变性 CSPNet易于
  • Flink常用算子总结

    Streaming 算子 Map 将元素处理转换 再输出 map算子对一个DataStream中的每个元素使用用户自定义的Mapper函数进行处理 每个输入元素对应一个输出元素 最终整个数据流被转换成一个新的DataStream 输出的数据
  • 2020年黑苹果硬件配置推荐

    前言 黑苹果硬件配置推荐是一件众口难调的事情 但是为了更多的苹果Mac爱好者能够早日开心顺利的使用上macOS系统 mac996站长还是会200 的努力做好这件事情 也请大家大家多给一些支持和鼓励 注 本文仅针对黑苹果台式机做硬件推荐 不涉
  • 协同过滤算法的一些报错及python函数学习

    文章目录 1 cannot import name jaccard similarity score 2 DataFrame object has no attribute dtype 3 sort values 4 sort index
  • 2023前端面试题及答案整理(JS笔试题)

    JS笔试题 JS类型相关 typeof 没定义的变量会报错吗 typeof let定义了的呢 未声明的变量使用 typeof 返回字符串 undefined typeof 一个 let 定义的变量会因为暂时性死区报错 前提 let cons
  • go语言面试题

    文章目录 1 下面这段代码输出什么 2 下面代码输出什么 3 同级文件的包名不允许有多个 是否正确 4 下面的代码有什么问题 请说明 1 下面这段代码输出什么 func main count 0 for i range 256 struct
  • webpack 学习笔记(二) 打包 AMD模块时 js路径错误

    在使用webpack打包模块的时候遇到的问题 各种百度一直无法解决这个问题 真的对新手太不友好了 webpack 作为 一个模块打包工具 它可以将AMD CMD CommonJs ES6 模块都进行打包 这里推荐一个讲解模块比较详细的博客
  • 华为机考108题(c++)(1-16)

    HJ1 字符串最后一个单词的长度 描述 计算字符串最后一个单词的长度 单词以空格隔开 字符串长度小于5000 注 字符串末尾不以空格为结尾 输入描述 输入一行 代表要计算的字符串 非空 长度小于5000 输出描述 输出一个整数 表示输入字符
  • C语言算法--冒泡排序

    C语言算法 冒泡排序 1 什么是冒泡排序 冒泡排序是一种简单的排序算法 它通过比较相邻元素的大小 并根据需要交换它们的位置来排序数据 它的名称来自于越小的元素会慢慢 冒泡 到数组的开头 冒泡排序的基本思想是从数组的第一个元素开始 依次比较相
  • 修改本机localhost映射dns解析

    去C Windows System32 drivers etc目录下找到hosts文件 进入修改 最后一行添加127 0 0 1 空格 写自己的域名映射 增加后进入cmd命令行窗口输入ipconfig flushdns刷新dns解析 此后就
  • 开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比

    不论您是一名开发者 架构师 CTO 如果您曾深度参与在微服务开发中 那么相信您一定有过开源微服务框架或体系选型的疑问 Apache Dubbo Spring Cloud gRPC 以及 Service Mesh 体系产品如 Istio 到底
  • Vinted店铺为什么被封?如何应对?

    Vinted是一家在线二手交易平台 专门用于买卖衣物和时尚配件 自从2022年以来 Vinted也越来越向综合性跨境电商平台转变 细心的伙伴都会发现 近来Vinted这阵子封号确实很严重 感觉是风控变严格了 但是万变不离其宗 说到底封控还是
  • librdkafka编译及简单使用过程简介

    librdkafka 使用了 C 11 使用 VS2010 无法编译 需要使用更高版本的 VS 才能编译 我这里使用的是 VS2017 1 编译版本 编译环境 windows VS2017 openssl 版本 openssl 1 0 2t
  • VRTK——UI控制(点击按钮)

    1 Canvas必须带有VRTK UICanvas脚本 2 LeftControllerScriptAlias RightControllerScriptAlias必须有 VRTK ControllerEvents VRTK Pointer
  • 如何在 Python 和 Node.js 之间通信 JSON 数据?

    JSON 可以缩写为 JavaScript Object Notation 它是一个基于文本的文件 用于在编程语言中传输和存储数据 它由使用内置包即 JSON 的 python 编程语言支持 其文本以带引号的字符串格式给出 其中在大括号 中
  • git Bash上传本地项目到github

    首先登陆个人github账号新建一个仓库 新建好仓库后打开要上传的项目所在位置 右键文件夹 选择Git Bash Here 第一步 git init初始化 第二步 git add 添加到仓库 注 出现警告的话再输入一次 第三步 git co
  • 如何解决ImportError: cannot import name ‘BatchNormalization‘ from ‘keras.layers.normalization‘

    报错如下所示 其实就是版本的问题 改之前的代码 from keras layers normalization import BatchNormalization 改之后 from keras layers normalization ba
  • imx6ull驱动开发经验

    1 背景 imx6ull驱动开发基于正点原子的开发板 上面运行linux 4 1 15内核 根文件系统为ubuntu 16 05 5 LTS 2 加载驱动文件chrdevbase ko文件时 先使用depmod生成依赖文件时 提示无modu