2025-02-21
在调试嵌入式Linux开发板的过程中,很多时候都需直接操作物理地址。例如设置GPIO
地址。如果单独写一个驱动,就有点高射炮打蚊子了。正好在有一个工具devmem
能快速操作物理地址。
devmem
是一个用于直接访问和操作物理内存的Linux
命令行工具。它通常用于嵌入式系统开发或调试,允许用户读取或写入特定的物理内存地址。
读取内存:从指定的物理内存地址读取数据。
写入内存:向指定的物理内存地址写入数据。
调试硬件:常用于调试硬件寄存器或访问底层硬件资源。
devmem ADDRESS [WIDTH [VALUE]]
ADDRESS:要访问的物理内存地址。
WIDTH:数据宽度(可选,默认为 32 位),可以是 8、16、32 或 64。
VALUE:要写入的值(可选,如果未提供,则执行读取操作)。
sudo apt install busybox
或者
sudo apt install devmem2
运行make menuconfig
Device Drivers
->Character devices
->/dev/mem virtual device support
启用
可以通过查看是否有字符设备/dev/mem
,来检查是否启用了该内核功能。
读取32位内存地址0x100000
的值
busybox devmem 0x100000 32
或者
devmem2 0x100000 w
向32位内存地址0x100000
写入值0x12345678
busybox devmem 0x100000 32 0x12345678
或者
devmem2 0x100000 w 0x12345678
读取16位内存地址0x100000
的值
busybox devmem 0x100000 16
或者
devmem2 0x100000 h
devmem 是一个强大的底层工具,适用于需要直接访问硬件资源的场景,但需要root
权限才能使用,所以使用时需格外小心。