![将 SPI 设备的 Linux 驱动程序转换为在 USB-SPI 桥上运行](https://linux22.com/image/1579123/%E5%B0%86%20SPI%20%E8%AE%BE%E5%A4%87%E7%9A%84%20Linux%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%9C%A8%20USB-SPI%20%E6%A1%A5%E4%B8%8A%E8%BF%90%E8%A1%8C.png)
我有一块 Holt HI-3110 芯片,它实现了一个通过 SPI 主机接口运行的 CAN 总线接口。该芯片的驱动程序位于 Linux 主线中(位于 /drivers/net/can/spi 中)。我的目标是一个没有 SPI 主机接口的主机平台,因此我安装了 Microchip MCP2210 USB-to-SPI 桥接器,它也受 Linux 主线支持(位于 /drivers/hid 中)。从用户代码中敲击 /dev/hidraw0 设备似乎工作正常。
我假设我需要将 SPI 驱动程序转换为平台驱动程序,该平台驱动程序会查找正确的 hid 驱动程序并使用它来访问 CAN 芯片。有人能告诉我一个做类似事情的驱动程序吗(使用另一个驱动程序访问设备)?
答案1
为了能够通过 MCP2210 USB 转 SPI 桥接器使用内核 CAN 驱动程序,您需要一个公开 MCP2210 的 SPI 总线的内核驱动程序。
主线内核不包含这样的驱动程序,这意味着您只能通过用户空间控制 SPI 设备(并且无法使用内核驱动程序)。用于控制 MCP2210 的用户空间库可从https://github.com/kerrydwong/MCP2210-Library
您可以从以下网址获取一个树外 mcp2210 内核驱动程序,它允许您使用内核 CAN 驱动程序https://github.com/daniel-santos/mcp2210-linux(FOSDEM 演讲:https://archive.fosdem.org/2018/schedule/event/rapid_spi_over_usb/attachments/audio/2461/export/events/attachments/rapid_spi_over_usb/audio/2461/USB_SPI_FOSDEM_2018.pdf)