ZYNQ裸板:DDR篇

简介: DDR是zynq的内存又可以叫做主存。是CPU能直接寻址的存储空间,没有DDR的话,运行内存只有很小的内部RAM,软件大小受限,也几乎没法跑操作系统。作为下一篇AXIDMA的基础知识提前做个准备,内容很简单这里就简单做一个读写测试,也可以当做验证下DDR是否都可以正常访问

前言

 DDR是zynq的内存又可以叫做主存。是CPU能直接寻址的存储空间,没有DDR的话,运行内存只有很小的内部RAM,软件大小受限,也几乎没法跑操作系统。作为下一篇AXIDMA的基础知识提前做个准备,内容很简单这里就简单做一个读写测试,也可以当做验证下DDR是否都可以正常访问

 还是找到我们的老朋友"xparameters_ps.h"可以看到如下代码:

/* Canonical definitions for DDR MEMORY */
#define XPAR DDR MEM BASEADDR 0x00000000U 
#define XPAR DDR MEM HIGHADDR 0X3FFFFFFFU

 这就是DDR的基址和偏移了也就是说1GB的内存,

20210209135208687.png

 关于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);
}


相关文章
|
存储
ZYNQ-pbuf操作指南(一)
ZYNQ-pbuf操作指南
552 0
ZYNQ-pbuf操作指南(一)
|
6月前
|
开发工具 芯片 Perl
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
858 0
|
6月前
|
Ubuntu Linux 开发工具
【ZYNQ】那些年我们拿下了 Zynq
【ZYNQ】那些年我们拿下了 Zynq
|
编解码 Linux
基于瑞芯微RV1109 Linux串口驱动调试心得(给正点原子DS100示波器点赞!)
基于瑞芯微RV1109 Linux串口驱动调试心得(给正点原子DS100示波器点赞!)
294 0
|
存储 编解码 芯片
ZYNQ裸板:LHB155304-RT篇
1553总线是一种指令/响应式串行总线标准,除了作为美军标在国外广泛应用于军用飞机坦克、船舶、卫星、导弹等领域,在国内已得到了广泛的应用。抗干扰能力强实时性好,且拥有着双冗余备份设计,数据传输极为可靠。就我个人认知来看,常见的实现形式一种是通过专用的接口协议芯片,相对比较简单集成度高;另一种是IP核,非常考验逻辑和软件设计的功底。此次工程选用了前者,LHB15530接口芯片,在不改变原有传输方式的前提下,突破了原有的1Mb/s的传输速率,可达4Mb/s,也能满足绝大部分应用场景。
470 0
ZYNQ裸板:LHB155304-RT篇
|
存储 Linux API
ZYNQ裸板:串口篇
使用 PS 的时候,通常会添加 UART 控制器,用于打印信息和调试代码。除此之外, PS 在和外部设备通信时,也会经常使用串口进行通信。先从UART控制器开始讲起吧,从简单的测试再到工程实例。
893 0
ZYNQ裸板:串口篇
|
存储 安全 存储控制器
ZYNQ裸板:中断篇
中断对于单片机过来的我们来说,相对也算比较熟悉了,还是严谨一点从头开始说吧。中断是什么?是一种当满足要求的突发事件发生时通知处理器进行处理的信号。中断可以由硬件处理单元和外部设备产生,也可以由软件本身产生。对硬件来说,中断信号是一个由某个处理单元产生的异步信号,用来引起处理器的注意。对软件来说,中断还是一种异步事件,用来通知处理器需要改变代码的执行,当然,轮询所产生的中断的过程是同步的。
885 0
ZYNQ裸板:中断篇
|
异构计算 SoC
Xilinx Zynq-7000系列XC7Z035/XC7Z045高性能SoC处理器评估板PS端ETH RJ45接口
本文介绍了xines DSP+FPGA异构评估板,其中Xilinx Zynq-7000系列XC7Z035/XC7Z045系列主要特性,资源框图及PS端ETHRJ45接口引脚说明
Xilinx Zynq-7000系列XC7Z035/XC7Z045高性能SoC处理器评估板PS端ETH RJ45接口
|
存储 缓存 网络协议
ZYNQ裸板:AXIDMA篇(简单模式)
DMA(Direct Memory Access,直接存储器访问)是计算机科学中的一种内存访问技术。它允许某些计算机内部的硬件子系统可以独立地直接读写系统内存,而不需中央处理器( CPU)介入处理。 DMA 是一种快速的数据传送方式, 通常用来传送数据量较多的数据块
1226 0
ZYNQ裸板:AXIDMA篇(简单模式)
|
数据处理 数据安全/隐私保护 SoC
DSP+ZYNQ硬件说明手册-XQTyer【开源】
XQ6657Z35/45-EVM 高速数据处理评估板(XQTyer 评估板)由广州星嵌电子科技有限公司自主研发,包含一片TI DSP TMS320C6657和一片Xilinx ZYNQ-7000 SoC 处理器XC7Z035-2FFG676I。适用于无人机蜂群、软件无线电系统,基带信号处理,无线仿真平台,高速图像采集、处理等领域。
DSP+ZYNQ硬件说明手册-XQTyer【开源】