Linux下SPI设备驱动实验:测试读取ICM20608设备中数据是否正常

news/2024/5/19 13:45:04

一. 简介

前面文章实现了 SPI设备的读写功能,也对ICM20608设备中(即SPI设备)寄存器里的数据进行了读取。文章如下:

Linux下SPI设备驱动实验:读取ICM20608设备的数据-CSDN博客

本文对驱动功能进行测试,即通过运行应用程序,调用SPI驱动代码,从而验证读取ICM20608设备数据的功能是否正常。

二. Linux下SPI设备驱动实验:测试读取ICM20608设备中数据是否正常

1. 拷贝驱动程序与测试程序到开发板系统下

 注意:这里开发板是通过nfs服务加载的方式,从ubuntu系统加载文件系统的。所以,这里只需要将驱动与测试程序拷贝到 nfs服务所设置的目录(即ubuntu系统下的某个目录下)即可。

将前面编译生成的驱动程序与测试程序到开发板系统下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/18_spi$ sudo cp spi_icm20608.ko icm20608_app /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f

2. 开发板上电

开发板上电后进入文件系统 /lib/modules/4.1.15/目录下,加载驱动模块:

注意:如果选择使用 "modprobe" 命令加载驱动模块,则在驱动程序第一次加载时首先运行 "depmod" 命令!

这里spi_icm20608.ko模块前面已经加载过,所以,不需要运行 "depmod"命令。

加载驱动模块:

可以看出,驱动模块加载正常,probe函数运行了。同时也可以读出ICM20608设备的ID号。

运行应用程序

运行应用程序 icm20608_app:

可以看出,ICM20608设备中的数据已经获取到。所获取的数据包括:g为陀螺仪的x,y,z三个方向的角速度值,a为加速度计的x,y,z三个方向的值。

这里开发板是水平放置的,所以陀螺仪的值都为接近 0的值,而加速度计只是在 z方向上是1,说明这里获取到的数据是正常的。

卸载驱动模块

运行 "rmmod spi_icm20608.ko"命令卸载驱动模块:

可以看出,驱动模块卸载后运行了 remove函数,也没有错误的Log信息。说明驱动模块正常卸载了。


http://www.mrgr.cn/p/11253181

相关文章

static+单例模式+类的复合继承

汇编语言 汇编语言是最靠谱的验证“编程语言相关知识点”正确性的方式 汇编语言与机器语言一一对应,每一条机器语言都有与之对应的汇编指令 机器语言是计算机使用的语言,它是一串二进制数字 汇编语言可以通过汇编得到机器语言机器语言可以通过反汇编得到…

鸿蒙开发实战:【文件管理】

介绍 本示例主要展示了文件管理相关的功能,使用[@ohos.multimedia.medialibrary]、[@ohos.filemanagement.userFileManager] 、[@ohos.fileio] 、[@ohos.file.fs]、[@ohos.app.ability.contextConstant] 等接口,实现了增添文件、删除文件、查找指定类型文件文件、复制并移动文…

机器学习(四)之无监督学习

前言: 前面写了监督学习的几种算法,下面就开始无监督啦! 如果文章有错误之处,小伙伴尽情在评论区指出来(嘿嘿),看到就会回复的。 1.聚类(Clustering) 1.1 概述&#xff…

上位机图像处理和嵌入式模块部署(树莓派4b与视觉slam十四讲)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 实际使用中,树莓派4b是非常好的一个基础平台。本身板子价格也不是很贵,建议大家多多使用。之前关于vslam,也就是…

WAF攻防-漏洞发现协议代理池GobyAwvsXray

知识点 1、Http/s&Sock5协议 2、Awvs&Xray&Goby代理 3、Proxifier进程代理使用 4、Safedog&BT&Aliyun防护在漏洞发现中,WAF会对三个方向进行过滤拦截: 1、速度频率问题(代理池解决) 2、工具的指纹被识别&am…

XMU《计算机网络与通信》第三次实验报告

一、个人信息 学号:************** 姓名:### 二、实验目的理解TCP和UDP协议主要特点掌握socket的基本概念和工作原理,编程实现socket通信三、实验任务与结果 任务 1 前置任务开启两个终端窗口,分别编译、运行 server_example.c 和 client_example.c,观察它们实现的功能。可…

vis.js样式3d图形

代码案例<!DOCTYPE html> <html><head><title>Graph 3D demo</title><style>body {font: 10pt arial;}</style><scripttype="text/javascript"src="https://unpkg.com/vis-graph3d@latest/dist/vis-graph3d.min.j…

Redis系列之Cluster集群搭建

在上一篇博客&#xff0c;我们学习Redis哨兵Sentinel集群的搭建&#xff0c;redis的哨兵模式提供了比如监控、自动故障转移等高可用方案&#xff0c;但是这种方案&#xff0c;容量相对固定&#xff0c;要进行持续扩容或者数据分片就不适合&#xff0c;所以有另外一种更复杂的集…

使用 ECharts 绘制咖啡店各年订单的可视化分析

使用 ECharts 绘制咖啡店各年订单的可视化分析 在这篇博客中&#xff0c;我将分享一段使用 ECharts 库创建可视化图表的代码。通过这段代码&#xff0c;我们可以直观地分析咖啡店各年订单的情况。 饼图 这段代码包含了两个 ECharts 图表&#xff0c;一个是饼图&#xff0c;用…

vis.js线条3d图形

代码案例<!DOCTYPE html> <html><head><title>Graph 3D demo</title><style>body {font: 10pt arial;}</style><scripttype="text/javascript"src="https://unpkg.com/vis-graph3d@latest/dist/vis-graph3d.min.j…

华为数通HCIA ——企业网络架构以及产品线

一.学习目标&#xff1a;精讲网络技术&#xff0c;可以独立搭建和维护中小企业网络&#xff01; 模拟器&#xff08;华为方向请安装ENSP&#xff0c;Ensp-Lite已有安装包&#xff0c;号称功能更加完善-这意味着要耗费更多的系统资源但是仅对华为内部伙伴申请后方可使用&#x…

Linux RTC驱动深入解析

目录标题 实时时钟&#xff08;RTC&#xff09;基础Linux内核中的RTC框架RTC设备类设备树&#xff08;Device Tree&#xff09; 编写Linux RTC驱动1. 初始化和注册2. RTC设备操作函数3. 清理函数 测试RTC驱动驱动开发的挑战总结 在许多嵌入式系统和服务器上&#xff0c;实时时钟…

一三云:教你小型企业如何选择云服务器

在数字化时代,云服务器已成为小型企业实现数字化转型的关键工具。对于小型企业而言,选择合适的云服务器不仅能够降低IT成本,提高运营效率,还能够确保数据的安全性和业务的连续性。然而,面对市面上众多云服务器提供商和复杂的产品选择,小型企业往往感到困惑和不知所措。本…

深入理解高级加密标准(Advanced Encryption Standard)

title: 深入理解高级加密标准&#xff08;Advanced Encryption Standard&#xff09; date: 2024/4/23 20:04:36 updated: 2024/4/23 20:04:36 tags: AES概述加密原理优势特点算法详解安全性应用实践案例分析 第一章&#xff1a;AES概述 AES的历史和背景 历史&#xff1a; 高…

YOLOV8训练问题

代码如上,效果如下:无限循环打印权重文件修改为如下即可,通过if __name__ == __main__使得代码不会被其余文件循环调用(具体为何被调用不知):

【MySQL 数据宝典】【磁盘结构】- 005 Undo log 撤销日志

一、基本介绍 ​ 每当我们要对一条记录做改动时&#xff08;这里的改动可以指 INSERT 、 DELETE 、 UPDATE &#xff09;&#xff0c;都需要留一手 -> 把回滚时所需的东西都给记下来 ​ 你插入一条记录时&#xff0c;至少要把这条记录的主键值记下来&#xff0c;之后回滚的…

maven仓库下载不下来的包如何自己安装(本地宝导入到maven仓库)

1.下载jar包 https://mvnrepository.com/ 在官网上搜索jar包,点击下载2.将jar包放在一个没有中文的路径下(我放在了D盘根路径下) 打开CMD框执行下面的命令 mvn install:install-file -Dfile=D:\kingbase8-8.6.0.jar -DgroupId=com.kingbase -DartifactId=kingbase8 -Dversio…

在PostgreSQL中如何实现递归查询,例如使用WITH RECURSIVE构建层次结构数据?

文章目录 解决方案使用WITH RECURSIVE进行递归查询示例代码 总结 在PostgreSQL中&#xff0c;递归查询是一种非常强大的工具&#xff0c;它可以用来查询具有层次结构或树形结构的数据。例如&#xff0c;你可能会在员工-经理关系、目录结构或组织结构图中遇到这样的数据。为了处…

ZStack教育云计算解决方案入选高质量数字化转型技术解决方案集

近日&#xff0c;中国信通院“铸基计划”《高质量数字化转型技术解决方案&#xff08;2023年度&#xff09;》&#xff08;以下简称“方案集”&#xff09;发布&#xff0c;云轴科技ZStack智慧教育云计算解决方案入选《高质量数字化转型技术解决方案集》。 为促进数字化转型相…

HarmonyOS NEXT 实战开发—Grid和List内拖拽交换子组件位置

本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。介绍 本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 效果图预览使用说明:拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。 拖拽…