Linux 中的 SPI Bitbang 驱动程序

问题描述 投票:0回答:0

我正在寻找如何使用Linux内核中提供的SPI bitbang驱动,俗称

spi-gpio.c

我已经将它编译成一个有效的*.ko文件,首先插入了

spi-bitbang
驱动程序,现在我已经插入了我从
spidriv.c
制作和编译的
spi-gpio.c
驱动程序。一切顺利,
dmesg | tail
中没有错误但是我找不到我刚刚添加的 SPI 设备的任何记录,除了我的 SPI 驱动程序在
/sys/modules
中的条目。

坦率地说,这很荒谬,因为我读过的每篇文章都说要使用它,而且它很“简单”,但是根据我目前投入的时间,我本可以为 SPI 设备编写自己的驱动程序。

除了内核驱动程序本身给出的明显和简单的说明外,详细说明我如何使用此驱动程序在

/dev
中获取条目,因为它们显然没有注册任何类型的设备。

我试过的: 使用spi-bitbang驱动程序

我的自定义 SPI 驱动程序:

// led  sck  sda  rst   a0   cs    w    h
// 332, 329, 330, 335, 336, 338, 128, 160

#define DRIVER_NAME     "spidriv"

#define SPI_MISO_GPIO   334
#define SPI_MOSI_GPIO   330
#define SPI_SCK_GPIO    329
#define SPI_N_CHIPSEL   338

#include "spi-gpio.c"

我的安装过程:

$ sudo rmmod spi_bitbang 
$ sudo modprobe spi_bitbang
$ sudo insmod spidriv.ko
# No (recent) errors in dmesg
$ lsmod | grep spi
spidriv                16384  0  # My driver
spi_bitbang            16384  1 spidriv
spi_pxa2xx_platform    28672  0

安装内核模块后 /sys/class/spi* 或 /dev* 中没有任何内容。

我听说必须创建设备树条目的传言,如果我需要这样做,请逐步帮助我,因为我从未在 Linux 中与设备树系统交互(尽管我是 Linux 的长期用户,甚至编写我自己的基本内核模块)和文档似乎不存在或过于复杂以至于难以理解!

这个项目花了我几个星期的时间(实际上只是将一个 ST7735 显示器连接到我自制的 WiFi 路由器)这让我抓狂,我写了我自己的 bit-banged SPI C 库,但它不够快,我需要一个内核级别SPI 接口,真正提高带宽。

linux-kernel linux-device-driver spi bit-banding
© www.soinside.com 2019 - 2024. All rights reserved.