在LINUX下如何给DDR从起始地址0x05877000起到终止地址0x3ffff000位置循环写入0x550xAA,写入完毕后再从DDR的起始地址0x05877000到终止地址0x3ffff000里把刚才写入的数据读取出来,然后比较写入和读取的数据,如果数据完全一致则输出PASS,如果数据不完全一致则输出FAIL。
时间: 2024-02-13 09:59:43 浏览: 138
将数据0xaa写入X5045再读出送P1口显示-综合文档
可以使用Linux下的dd命令来实现这个功能。具体步骤如下:
1. 编写一个脚本文件,比如叫做test_ddr.sh,文件内容如下:
```
#!/bin/bash
# 循环写入数据
for ((i=0x05877000; i<0x3ffff000; i+=4)); do
echo -ne "\x55\x00\xAA\x55" | dd of=/dev/mem bs=4 count=1 seek=$(($i/4))
done
# 读取数据并比较
for ((i=0x05877000; i<0x3ffff000; i+=4)); do
data=$(dd if=/dev/mem bs=4 count=1 skip=$(($i/4)) 2>/dev/null | hexdump -e '/4 "%08x\n"')
if [ "$data" != "5500aa55" ]; then
echo "FAIL"
exit 1
fi
done
echo "PASS"
```
2. 将脚本文件赋予执行权限:`chmod +x test_ddr.sh`
3. 使用root权限执行脚本文件:`sudo ./test_ddr.sh`
注意事项:
- 该脚本需要root权限才能执行,因为它需要访问/dev/mem设备。
- 在命令行中输入该脚本时,需要在当前目录下执行,或者在环境变量$PATH中指定该脚本的路径。
- 该脚本的执行过程可能会比较耗时,具体时间取决于DDR的大小和速度。
阅读全文