ZYNQ裸板简单实战-DDR篇

前言

  DDR是zynq的内存又可以叫做主存。是CPU能直接寻址的存储空间,没有DDR的话,运行内存只有很小的内部RAM,软件大小受限,也几乎没法跑操作系统。作为下一篇AXIDMA的基础知识提前做个准备,内容很简单这里就简单做一个读写测试,也可以当做验证下DDR是否都可以正常访问
  还是找到我们的老朋友"xparameters_ps.h"可以看到如下代码:
在这里插入图片描述
  这就是DDR的基址和偏移了也就是说1GB的内存,
在这里插入图片描述
  关于DDR的详细描述在芯片手册第十章10.6部分有详细的DDR编程介绍,但是呢按照现在的认知来看,大部分情况下是用不到的,只需要会简单的读写就好了)
  而在xil_io.h里又能找到下面这些读写函数(xilinx真香)

//从某个地址读数据 
u8 Xil_In8(INTPTR Addr); 
u16 Xil_In16(INTPTR Addr); 
u32 Xil_In32(INTPTR Addr);
//向某个地址写数据。 
void Xil_Out8(INTPTR Addr, u8 Value); 
void Xil_Out16(INTPTR Addr, u16 Value); 
void Xil_Out32(INTPTR Addr, u32 Value); 

  有了这些已经完完全全可以对DDR进行读写了

  那下面要做的就很简单了,挑几个地址访问验证一下就好啦!所以我为什么要单独写一篇,真是奇怪

#include "xparameters_ps.h"
#include "xil_io.h"
#include "xil_printf.h"

int main ()
{
    
    
	int value;
   Xil_Out32(XPAR_DDR_MEM_BASEADDR,0x12);
   value = Xil_In32(XPAR_DDR_MEM_BASEADDR);
   xil_printf("the address 0 is 0x%x\r\n",value);
   Xil_Out32(0x1FFFFFFF,0x34);
   value = Xil_In32(0x1FFFFFFF);
   xil_printf("the address 0x1FFFFFFF is 0x%x\r\n",value);
   Xil_Out8(XPAR_DDR_MEM_HIGHADDR,0x7);
   value = Xil_In8(XPAR_DDR_MEM_HIGHADDR);
   xil_printf("the address 0x3FFFFFFF is 0x%x\r\n",value);

}

这下好了已经简陋到没脸请求批评指正了(捂脸)到了最后居然是建议看芯片手册,咳咳咳

猜你喜欢

转载自blog.csdn.net/qq_42330920/article/details/113769648