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设备驱动代码。

相关推荐
lldhsds4 分钟前
书生大模型实战营第四期-入门岛-1. Linux前置基础
linux
wowocpp27 分钟前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
山河君39 分钟前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
鹏大师运维44 分钟前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
筱源源1 小时前
Elasticsearch-linux环境部署
linux·elasticsearch
pk_xz1234563 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强3 小时前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock5 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面7 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq7 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端