前面已经详细介绍了从PL端如何用AXI总线去控制DDR的读写,并且从AXI_BRESP的返回值来看,我们也是成功写入了的。但是没有通过别的方式来验证写入的数据的话,总是感觉差了点什么。
今天试了一把从PS端直接读取DDR里面的数据,刚好跟PL端写入的一样,这下可以放心的认为我们写入成功了。
还是跟前面说的一样,在SDK里面使用hello world的模版就可以了。
1、DDR3的地址
在mem_demo_bsp->ps7->cortexa9_0的路径下,打开xparameters_ps.h这个头文件,这个头文件是cortexA9可以直接控制的外设地址的宏定义。在里面可以找到DDR的地址,可以看到如下代码:
/*Canonical definitions for DDR MEMORY*/
#define XPAR_DDR_MEM_BASEADDR 0x00000000
#define XPAR_DDR_MEM_HIGHADDR 0x3FFFFFFF
可以看出来,这里的地址也包括了一部分OCM,等会我们要使用这个地址,对DDR3进行读写操作。
2、读写操作函数
在mem_demo_bsp->ps7->cortexa9_0的路径下,打开xil_io.h这个头文件,这个头文件是cortexA9可以直接控制的内存映射或者映射到了地址空间的IO。在里面可以看到如下代码:
//从某个地址读数据
u8 Xil_In8(INTPTR Addr);
u16 Xil_In16(INTPTR Addr);
u32 Xil_In32(INTPTR Addr);//向某个地址写数据。
voidXil_Out8(INT