如何使用 hyperbus 驱动程序文件?

时间:2021-05-18 05:26:09

标签: c linux linux-device-driver cypress spi

我很困惑要理解在 Traveo II 车身评估板与一个 hyperram 之间进行通信的 hyperbus,我阅读了数据表 (https://www.cypress.com/part/s27kl0641dabhi020),但仍然不明白如何实现示例代码。为此,我在 google 上搜索并找到了此链接 (https://github.com/torvalds/linux/blob/master/drivers/mtd/hyperbus/hyperbus-core.c),但还没有找到任何示例代码,所以有人帮助我或任何人提供有用的链接或一个示例代码?

1 个答案:

答案 0 :(得分:0)

在 Linux 中,drivers/mtd/hyperbus/ 将 hyperbus 实现为内存技术设备,也称为 MTD 设备;因此,超级总线是通过 Linux MTD 子系统访问的。 mtd-utils 包含访问 MTD 子系统的示例代码;如需更多链接,请参阅 http://linux-mtd.infradead.org/

Linux MTD hyperbus subsystem 导出字符设备 (/dev/mtdN)。用户空间应用程序打开此设备(读写),然后执行 MEMGETINFO ioctl() 以将 MTD 设备信息获取到 struct mtd_info_user 结构(在 <mtd/mtd-user.h> 中定义)。读取、写入和擦除块的操作是通过 ioctl()s(在 <mtd/mtd-abi.h> 中定义)完成的。 (在 Linux 工作站上,如果已安装标准 C 开发包,您将在 /usr/include/mtd/ 中找到它们;在 Debian 衍生产品上,它们由 linux-libc-dev 提供包。)

在这些机器上,设备树用于描述实际的硬件,包括超级总线。当您打开字符设备时,您不会从用户空间“配置”超级总线;每个超级总线都由设备树 blob (.dtb) 或内核加载(或从引导加载程序(如 uboot)接收)在启动时的覆盖层描述。我假设您已经配置了设备树等,因为您正在询问如何使用字符设备;字符设备由内核根据设备树描述创建,只有在配置了超级总线时才会显示。