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

相关推荐
AR-26710-1 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维
Good白10191 小时前
嵌入式:1.嵌入式入门|初识嵌入式、处理器、ARM与STM32
arm开发·stm32·嵌入式硬件
LabVIEW开发1 小时前
AI 如何接进 LabVIEW:链路怎么搭、边界在哪、还差什么
人工智能·驱动开发·labview
LongRunning16 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
民乐团扒谱机19 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜19 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_3718021119 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
无足鸟ICT19 小时前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
独隅20 小时前
WebStorm 在 Linux 环境下的实战安装与高效开发指南
linux·ide·webstorm
坤坤子吖21 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习