1.概述
本文主要讲述了Linux的spidev驱动使用方法。介绍了spidev驱动的配置方法及验证方法。
Linux内核版本:6.2.8。硬件平台:ARM SOC。
(资料图)
2.原理
Linux内核集成了spidev驱动,提供了SPI设备的用户空间API,支持用于半双工通信的read()和write()访问接口以及用于全双工通信和I/O配置的ioctl()接口;使用时,只需将SPI从设备的compatible属性值添加到spidev驱动的spidev_dt_ids[]数组中,即可将该SPI从设备创建为spidev设备。同时,Linux内核也集成了SPI测试工具spidev_test,用于在用户态对spidev驱动功能进行测试和验证。
3.配置方法
(1)配置内核,使能CONFIG_SPI_SPIDEV,以添加spidev驱动。
图1 使能CONFIG_SPI_SPIDEV配置界面
(2)添加SPI从设备的compatible属性值到linux-6.2.8/drivers/spi/spidev.c的spidev_dt_ids[]数组。添加compatible属性值后,则会将SPI从设备创建为/dev/spidevB.C设备节点,供用户空间API使用,其中B为SPI总线编号,C为SPI片选信号编号。
图2 添加SPI从设备的compatible属性值代码
4.验证方法
(1)编译spidev_test
以SPI0总线的片选0为例,其生成的设备节点名为spidev0.0,故首先将测试例程linux-6.2.8/tools/spi/spi_test.c中的设备节点名改为"/dev/spidev0.0"。然后在linux-6.2.8/tools/spi路径下直接执行make,即可生成可执行程序spi_test。
图3 设备节点名设置(2)运行spidev_test
内核启动后,./dev路径下生成了spidev0.0设备节点。然后运行spidev_test,程序按默认配置参数执行了,SPI0发送的数据与图3中数组default_tx[]一致。若需设置参数,详见spidev_test.c 中的static void parse_opts(int argc, char *argv[])函数定义。
图4 spidev_test运行结果
5.参考文献
(1)linux-6.2.8/Documentation/spi/spi-summary.rst
(2)linux-6.2.8/Documentation/spi/spidev.rst
上一篇:被忽视的生死教育,该如何向孩子讲述“死亡”? 观热点
下一篇:最后一页
中国天气网讯 今天(5月25日),南方降雨明显减弱,东北仍有雷雨,局地有暴雨。明天,南方雨水再度增强,北方降水减少减弱。月底前南方阴雨
中新网5月25日电 据中央气象台网站消息,预计,5月25日08时至26日08时,黑龙江东南部、吉林东部、辽宁东部、青海东南部、山东东部和南部、
中新网5月25日电 据北京卫健委官方微信消息,5月24日0时至24时,北京新增41例本土确诊病例(含4例无症状感染者转确诊病例)和6例无症状感染
中新网5月25日电 据上海卫健委官方微信消息,2022年5月24日0—24时,上海新增本土新冠肺炎确诊病例44例和无症状感染者343例,其中32例确诊
中国天气网讯 今天(5月25日),北京以晴天为主,最高气温在30℃左右,不过全市风力明显,大部地区有4级左右的北风,阵风可达7~8级,防疫人