是否可以使用C访问DRAM位单元?

时间:2018-01-10 14:38:46

标签: c memory memory-leaks

道歉,如果这不是要问这个的地方。我想知道C编程语言是否允许用户访问DRAM位单元,我似乎无法找到任何专门回答我的问题的在线资源,因此我更倾向于认为这是不可能的。感谢

2 个答案:

答案 0 :(得分:2)

C没有提供任何特定方法直接读取标准硬件平台的DRAM:Windows,Linux等。 但是,这对某些嵌入式平台来说是可能的,并且在很大程度上取决于操作系统,内核或系统核心的任何内容。

不在具有虚拟内存的操作系统下且具有直接内存访问权限的嵌入式系统显然可以并且确实可以访问内存。

一些系统有DMA,它允许直接内存访问,正如名称所示。对于DMA,您必须拥有一个编程DMA的代码,并指示它从远程存储器的某些部分读取或写入某些数据,在本例中为DRAM。

如果硬件架构支持DRAM,则可以直接访问DRAM,并且目前通常情况并非如此,因为认为DRAM访问可能使处理器变慢。这就是为什么使用DMA来卸载主处理器的无聊和繁琐的访问外部存储器的任务。

例如,请参阅以下对测试内存的代码的描述,主要的是代码可以看到' DRAM内存直接: https://www.akkadia.org/drepper/cpumemory.pdf

要了解有关内存,内存类型以及如何访问内存的更多信息,请阅读以下优秀文章: https://barrgroup.com/Embedded-Systems/How-To/Memory-Test-Suite-C

我希望这可以回答您的问题,或者至少可以帮助您了解访问DRAM的内容。简而言之,操作系统在普通系统上访问DRAM,除非系统是以这种方式设计的,可以通过地址直接访问DRAM。

答案 1 :(得分:0)

C编程语言可以寻址存储器,因此它可以访问DRAM位单元。您必须知道地址,相应的DRAM位映射到并使用逻辑运算符来操作该地址上的相应位。