如何在Linux用户空间访问NVRAM和DPRAM?

如何在Linux用户空间访问NVRAM和DPRAM?

我们将在自定义板中添加 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 有意义地包含到设备树或从固件/引导加载程序移交给内核的其他内存映射中,您可能希望将它们注册为平台设备。

相关内容