赞
踩
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);
}
这下好了已经简陋到没脸请求批评指正了(捂脸)到了最后居然是建议看芯片手册,咳咳咳
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。