8

我刚刚在我的板上为 NXP RTC 芯片编写了一个 RTC 驱动程序,效果很好。该芯片还具有一些电池支持的 RAM,我希望将其提供给用户空间应用程序。RTC 框架不支持这一点。它只有 512 个字节,但我在做一个可搜索的 CHAR 驱动程序或一个完整的 BLOCK 驱动程序之间折腾。我以前从未做过块驱动程序,但它似乎需要比简单的 CHAR 更多的信息。

我也可以与 IOCTLS 交互,但感觉不像它应该的那样干净。让这些字节对用户态可用的最佳方式是什么?

[编辑] 我忘了提到 RTC 芯片挂在 I2C 端口上,它没有映射到内存中,因此不适合映射。[/编辑]

4

2 回答 2

2

块驱动程序仅适用于看起来像磁盘驱动器的设备。你打算在你的 512 字节上放置一个文件系统吗?不?使其成为字符设备。

你可以像其他司机那样做。退房drivers/char/nvram.c。这将创建一个字符设备,您可以open()read()write()lseek()close()

于 2010-07-08T00:48:02.053 回答
1

我认为实现字符设备驱动程序mmap应该足够了。Linux 设备驱动器在第 15 章中对此进行了介绍。

编辑:

好吧,i2c 是串行总线,所以mmap不是一个选项。我会推荐你​​参考Essential Linux Device Drivers这本书。我相信它在第 8 章中有一个示例 i2c EEPROM 字符设备驱动程序。希望这会有所帮助。

于 2010-06-29T00:24:04.047 回答