在嵌入式设备上使用内存

Working with memory on an embedded devices

嵌入式设备运行Linux。通常,MTD 设备文件子系统用于与闪存交互。

我对此类设备上的内存管理有一些疑问。设备内存映射规范不可用。 在嵌入式设备上访问内存的方法很少,其中一种是直接调用内存地址,例如调试时直接向内存地址写入一些值,或者使用命令读取物理地址:

show <hex address> <number of words to display>

此命令是否执行访问设备的NVRAM NOR 闪存或RAM 存储器? 是否可以反转此过程,即找到 "lives" 特定设置的内存地址?假设我们知道一个特定的值,并且我们知道该值存储在某处是内存。有没有可能找到地址?

Does this command perform accessing to the NVRAM NOR flash memory or RAM memory of device?

是的,该命令适用于两种类型的内存,通常是 OS 内存映射中列出的任何其他内存(即 PCI 设备内存)。

Does it possible do reverse this process, i.e. to find memory address where "lives" a particular setting? Assuming we know a specific value and we know that value is stored somewhere is memory. Is it ever possible to find address?

是的,如果您可以控制编译,可以使用 objdump and nm 等工具来分解二进制文件。如果您只有已部署的系统,您想研究逆向工程。