【问题标题】:Linux kernel driver: what model for NVRAM access?Linux 内核驱动程序:NVRAM 访问的模型是什么?
【发布时间】:2010-07-08 08:48:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux-kernel linux-device-driver embedded-linux


    【解决方案1】:

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

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

    【讨论】:

    • 虽然您的回答晚于实施,但我最终还是这样做了。我刚刚用 lseek 实现了一个简单的字符驱动程序,它工作得很好。
    【解决方案2】:

    我认为实现mmap 的字符设备驱动程序应该足够了。 Linux Device Drives 将在第 15 章中介绍。

    编辑:

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

    【讨论】:

    • Nikolai,RTC 芯片位于 I2C 总线上,没有将 NVRAM 映射到内存中,我不知道 mmap 是一个可能的候选者,但我可能错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2014-02-05
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2011-03-24
    相关资源
    最近更新 更多