![如何在Linux用户空间访问NVRAM和DPRAM?](https://linux22.com/image/139971/%E5%A6%82%E4%BD%95%E5%9C%A8Linux%E7%94%A8%E6%88%B7%E7%A9%BA%E9%97%B4%E8%AE%BF%E9%97%AENVRAM%E5%92%8CDPRAM%EF%BC%9F.png)
我们将在自定义板中添加 NVRAM 和 DPRAM,它们都将映射到系统内存映射中。我不知道这些设备在 Linux 内核中是否有一些通用驱动程序,以便它们在dev
目录中显示为设备(例如/dev/nvram
或/dev/dpram
),或者我是否需要通过/dev/mem
使用来访问它们mmap
?
答案1
既然你说“定制板”,你应该已经指定这是 x86 架构、某种 ARM 还是其他架构。
然而,除非内核收到一些信息告诉它 NVRAM 和 DPRAM 在系统内存映射中的位置,否则它不会知道它们。此信息可以来自固件(x86:e820 机制、UEFI、ACPI 和/或其他 PnP 机制)或来自引导加载程序(ARM:ATAGS 或设备树 blob)。
您还应该查看 MTD 驱动程序是否适合您的需求:特别是,在我看来,CONFIG_MTD_PHRAM
内核驱动程序(或其前身slram
驱动程序)可能对您有用。
Stack Overflow 上的这个问题可能还有一些对您有用的信息。基本上,如果您无法将 NVRAM 和 DPRAM 有意义地包含到设备树或从固件/引导加载程序移交给内核的其他内存映射中,您可能希望将它们注册为平台设备。