当前位置:   article > 正文

ZYNQ裸板:DDR篇_zynq ddr

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); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  有了这些已经完完全全可以对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);

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/462018
推荐阅读
  

闽ICP备14008679号