DevMem命令的用法及应用(嵌入式调试之devmem命令)

一、devmem命令简介

DevMem 是一个适用于嵌入式系统的命令,用于读写内存,其可以在Linux下运行。该命令的作用是直接读写系统内存,不同于其他常规的二进制读写命令,例如hexdump、dd等,该命令主要集中在系统的物理地址访问上。DevMem 命令的缺点是只能访问内存地址,并不能访问系统其他部件的地址。它使用了/dev/mem,使其可以读取和写入物理内存地址。

二、devmem命令用法

1.命令语法:

devmem ADDRESS [TYPE [VALUE]]

2.命令参数:

ADDRESS: 必选参数,用于定义要读写的物理地址。

TYPE: 可选参数,指定读写类型,取值为b (byte), h (halfword), w (word), 默认为w。

VALUE: 可选参数,用于写操作时指定写入值。

三、devmem命令示例

1. 将物理地址 0x100000 处的 4 字节值更改为 0x11223344

devmem 0x100000 w 0x11223344

2. 以字节形式读取物理地址 0x100000 的值

devmem 0x100000 b

3. 以半字形式读取物理地址 0x100000 的值

devmem 0x100000 h

4. 读取物理地址 0x100000 的值

devmem 0x100000

四、devmem命令应用实例

1. 使用DevMem写入FPGA的RAM

在FPGA系统中,RAM是存储动态数据的重要组成部分。例如,一个视频帧,需要暂存一张图片,这就需要一个随时可用的RAM。使用DevMem命令可以将所需数据写入FPGA的RAM。

devmem 0x1000000 w 0x11223344

2. 使用DevMem命令读取嵌入式系统中设备的寄存器

在嵌入式系统中,设备之间都是通过寄存器进行通信的,使用devmem命令可以读取寄存器中的值。

devmem 0x20012040

3. 使用DevMem命令在U-Boot中读写NOR Flash

在U-Boot中,可使用 DevMem 命令读写 NOR Flash 的物理地址。这在嵌入式系统的开发中是非常常见的需求。通过DevMem 命令可以方便地在U-Boot中读写NOR Flash中的数据。

1. 读取物理地址 0x0 中 4 字节的值

devmem 0 4 0

2. 将 0xdeadbeef 写入物理地址 0x0 中的 4 字节

devmem 0x0 4 0xDEADBEEF

4. 使用DevMem在Linux内核中读写寄存器

在Linux内核中,也常用到DevMem命令来读取和写入寄存器的值。例如在驱动调试过程中,除了使用 gdb 进行调试,使用 DevMem 命令也是一个常见的调试工具。

五、总结

DevMem 命令是一个非常适用于嵌入式系统的命令,可以直接读写系统内存,非常方便。在嵌入式系统内部进行调试时,使用 DevMem 命令读写寄存器的值可以方便地进行调试。它在 Linux 固件开发中也有着广泛的应用,特别是在对网络设备的调试上特别有用。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平