t113-c-spi驱动篇前篇

了解全志sdk下的spi

设备树

在总的设备树中设置有base地址和寄存器长度,尽管实际的长度并么有那么大

在board.dts也有对spi做描述,但这个描述是描述所用io引脚、频率、时钟源等,不做详细

make menuconfig

如果想要使用sunxi平台所指定的spi驱动,那么要勾选(如果未改动为自动勾选)spi选项

spi源码

spi的源码其实在driver/spi目录下,没错,是为驱动提供spi的接口方便使用spi的。

大概的接口结构是这个样子的

接口函数

既然有了接口函数那么接下来就是对接spi了(终于不用手打寄存器拉)

spi_register_driver()

spi_unregister_driver()

以上两个是常用的spi接口函数,其他的可以在例程中搜寻

例程

在tina/lichee/linux-5.4/drivers/spi/spidev.c路径中为一个通用的spi例程,里面详细讲解了spi读取和注册的步骤(当然,有注释,根本看不懂)

搜寻到几个有关的文章

spidev的使用(SPI用户态API)

那么我们看一下probe到底做了什么

spidev_probe

find_first_zero_bit():

#define find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0)

---->extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, unsigned long offset);

详细的可以看这篇文章

剩下的就很简单了,就是获得次节点设备号后注册,然后如果失败就释放资源

remove则是对这些资源进行一个释放

spi的匹配:

这里其实就是一个数组,这个数组里面记录着可以使用的设备com,我猜是每有一个con匹配了就开始创建字符型设备。

这里可以看见已经成功注册到了主设备号了的

另外,查看misc次设备号的指令为:cat /proc/misc

cd  /sys/dev

ls -li    显示所有设备

ls -l |grep 设备名     //显示主设备号和次设备号 

cat /proc/devices   //只显示主设备号

无论如何,如果想要方便地使用spi,使用官方提供的spi接口是很方便的,让我们来打开一个设备试一试

打开设备

修改一下设备树

编译以下之后就可以看见创建成功了

posted @ 2023-07-11 16:47  悠闲的小莫  阅读(442)  评论(0编辑  收藏  举报