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读取和注册的步骤(当然,有注释,根本看不懂)
搜寻到几个有关的文章
那么我们看一下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接口是很方便的,让我们来打开一个设备试一试
打开设备
修改一下设备树
编译以下之后就可以看见创建成功了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」