Linux驱动-spidev驱动使用方法
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
|