Linux下SPI设备驱动实验:验证SPI节点及ICM20608设备子节点

一. 简介

前一篇文章在设备树文件中创建了SPI的 IO 的 pinctrl节点,SPI节点及ICM20608设备子节点,文章如下:

Linux下SPI设备驱动实验:创建SPI节点及SPI设备子节点-CSDN博客

本文对设备树文件进行加载测试,确定SPI节点及ICM20608设备子节点是否创建好。

二. Linux下SPI设备驱动实验:验证SPI节点及ICM20608设备子节点

1. 拷贝设备树文件到 tftp服务相关目录下

注意:这里开发板是通过 tftp服务加载的方式,从 ubuntu系统下加载内核镜像zImage与 imx6ull-alientek-nand .dtb 设备树文件。

将 imx6ull-alientek-nand.dtb 拷贝到 /home/wangtian/linux/tftp_file/目录下(即ubuntu系统tftp服务所设置的):

复制代码
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ sudo cp ./arch/arm/boot/dts/imx6ull-alientek-nand.dtb /home/wangtian/linux/tftp_file/ -f

2. 开发板上电

开发板上电后进入文件系统下,进入 " /sys/bus/spi/devices/" 目录下:

可以看到,在 /sys/bus/spi/devices/目录下存在一个 spi2.0的节点。

开发板的文件系统中,spi设备节点是从0开始的,而 imx6ull芯片的数据手册中SPI也是从1开始的,或者正点原子的硬件原理图上的 spi也是从1开始的。

所以,这里的 spi2.0就是 设备树文件中的 spi3节点,也就是前面创建的SPI3节点。

进入 spi2.0目录下:

spi2.0目录下有一个 of_node。

进入 spi2.0/目录下的 of_node目录下:

复制代码
/sys/devices/platform/soc/2000000.aips-bus/2000000.spba-bus/2010000.ecspi/spi_master/spi2/spi2.0 # cd of_node/
/sys/firmware/devicetree/base/soc/aips-bus@02000000/spba-bus@02000000/ecspi@02010000/icm20608@0 # ls
compatible         name               reg                spi-max-frequency

of_node目录下有 compatible,name,reg,spi-max-frequency等等的属性。

查看 compatilbe属性值:

可以看出, compatible属性值为 alientek,icm20608,是所创建的ICM20608设备的 compatible的值。

另外可以看到目录中有 "/ecspi@02010000"这个地址,可以在 imx6ull.dtsi设备树文件查看 ecspi3节点的地址进行比较,确认是否一致。imx6ull.dtsi设备树文件查看 ecspi3节点如下:

复制代码
				ecspi3: ecspi@02010000 {
					#address-cells = <1>;
					#size-cells = <0>;
					compatible = "fsl,imx6ul-ecspi", "fsl,imx51-ecspi";
					reg = <0x02010000 0x4000>;
					interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
					clocks = <&clks IMX6UL_CLK_ECSPI3>,
						 <&clks IMX6UL_CLK_ECSPI3>;
					clock-names = "ipg", "per";
					dmas = <&sdma 7 7 1>, <&sdma 8 7 2>;
					dma-names = "rx", "tx";
					status = "disabled";
				};

可以看到 开发板系统下的SPI2.0设备的寄存器地址,与设备树中所创建的 SPI3设备节点的地址都是 2010000,说明SPI2.0就是我创建的 SPI3节点。

查看 name的值:

可以看出,name的值为 icm20608,是所创建的ICM20608设备的名字。

接下来开始实现 SPI设备驱动代码。

相关推荐
tokepson1 小时前
Mysql下载部署方法备份(Windows/Linux)
linux·服务器·windows·mysql
zz_nj3 小时前
工作的环境
linux·运维·服务器
极客先躯3 小时前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
suijishengchengde4 小时前
****LINUX时间同步配置*****
linux·运维
qiuqyue5 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI5 小时前
Linux 操作系统简介
linux
南烟斋..5 小时前
GDB调试核心指南
linux·服务器
爱跑马的程序员5 小时前
Linux 如何查看文件夹的大小(du、df、ls、find)
linux·运维·ubuntu
oMcLin8 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu
Qinti_mm8 小时前
Linux io_uring:高性能异步I/O革命
linux·i/o·io_uring