小编Gay*_*lon的帖子

如何使用 dd if=/dev/mem 代替 devmem ?

看起来
root@testbox:~# dd if=/dev/mem bs=1 count=4 skip=2149646336 | hd
应该几乎等于
root@testbox:~# devmem 2149646336 32

但是,虽然devmem效果很好,但该dd调用给我带来了段错误。对于许多其他 bs,skip 组合(在我尝试解决这个问题时偶然发现的) dd 成功返回,但数据与我期望的完全不同。所有这些都表明,当我使用 dd 时,我实际上并没有解决我认为我正在解决的问题。也许是一些内存映射问题?我是一个硬件专家,所以我只考虑物理地址。

一些血淋淋的细节:

我正在构建一个嵌入式系统,其中 Linux 运行在带有片上 ARM A53 内核的 Xilinx FPGA 上。我经常使用 devmem 来读取或写入 FPGA 逻辑中的内存映射寄存器。我想使用 dd 而不是 devmem 通过一个命令读取一长串地址,并将数据保存到文件或通过管道将其传输到另一个进程。

我的 FPGA 设计有一个内部 RAM 块,可读写,映射到字节地址0x80210000

我写了一个shell脚本,如下所示:

devmem 0x80210000 32 0x5AB000CD  
devmem 0x80210004 32 0x5AB001CD  
devmem 0x80210008 32 0x5AB002CD  
devmem 0x8021000C 32 0x5AB003CD  
... etc etc <250 more lines> ...  
devmem 0x802103F8 32 0x5AB0FECD  
devmem 0x802103FC …
Run Code Online (Sandbox Code Playgroud)

embedded dd devices mmap

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

dd ×1

devices ×1

embedded ×1

mmap ×1