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操作指南
414 0
ZYNQ-pbuf操作指南(一)
|
存储 Linux API
ZYNQ裸板:串口篇
使用 PS 的时候,通常会添加 UART 控制器,用于打印信息和调试代码。除此之外, PS 在和外部设备通信时,也会经常使用串口进行通信。先从UART控制器开始讲起吧,从简单的测试再到工程实例。
651 0
ZYNQ裸板:串口篇
|
存储 缓存 异构计算
ZYNQ裸板:BRAM篇
在 ZYNQ SOC 开发过程中, PL 和 PS 之间经常需要做数据交互。对于传输速度要求较高、数据量大、地址连续的场合,可以通过 AXI DMA 来完成。而对于数据量较少、地址不连续、长度不规则的情况,此时 AXIDMA 便不再适用了。针对这种情况,可以通过 BRAM 来进行数据的交互。
653 0
|
存储 编解码 芯片
ZYNQ裸板:LHB155304-RT篇
1553总线是一种指令/响应式串行总线标准,除了作为美军标在国外广泛应用于军用飞机坦克、船舶、卫星、导弹等领域,在国内已得到了广泛的应用。抗干扰能力强实时性好,且拥有着双冗余备份设计,数据传输极为可靠。就我个人认知来看,常见的实现形式一种是通过专用的接口协议芯片,相对比较简单集成度高;另一种是IP核,非常考验逻辑和软件设计的功底。此次工程选用了前者,LHB15530接口芯片,在不改变原有传输方式的前提下,突破了原有的1Mb/s的传输速率,可达4Mb/s,也能满足绝大部分应用场景。
368 0
ZYNQ裸板:LHB155304-RT篇
|
内存技术
zynq操作系统:DDR带宽测试
个别时候,嵌入式设备的DDR除了常规的遍历读写和压力测试外,会有提供读写带宽的需求,下面介绍一种没有精确要求的测法,参考自http://github.com/raas/mbw
401 0
|
存储 安全 存储控制器
ZYNQ裸板:中断篇
中断对于单片机过来的我们来说,相对也算比较熟悉了,还是严谨一点从头开始说吧。中断是什么?是一种当满足要求的突发事件发生时通知处理器进行处理的信号。中断可以由硬件处理单元和外部设备产生,也可以由软件本身产生。对硬件来说,中断信号是一个由某个处理单元产生的异步信号,用来引起处理器的注意。对软件来说,中断还是一种异步事件,用来通知处理器需要改变代码的执行,当然,轮询所产生的中断的过程是同步的。
637 0
ZYNQ裸板:中断篇
|
存储 缓存 网络协议
ZYNQ裸板:AXIDMA篇(简单模式)
DMA(Direct Memory Access,直接存储器访问)是计算机科学中的一种内存访问技术。它允许某些计算机内部的硬件子系统可以独立地直接读写系统内存,而不需中央处理器( CPU)介入处理。 DMA 是一种快速的数据传送方式, 通常用来传送数据量较多的数据块
785 0
ZYNQ裸板:AXIDMA篇(简单模式)
|
Linux 芯片
zynq操作系统: Linux驱动开发Gpio中断篇
Linux内核中有一套GPIO框架,管理和控制芯片上的GPIO管教,包括配置输入输出,配置电平高低(输出)和获取电平高低(输入),中断管理。只需要通过读取/sys/class/gpio/gpioN/value的值来获取中断。当然也不是简单的read,而是通过epoll、poll、select等这些IO复用函数来控制,对于epoll或者poll,需要监听的事件是EPOLLPRI或POLLPRI,而不是EPOLLIN或POLLIN,对于select,需要将文件描述符放在exceptfds中,而且文件描述符被触发时需要通过调用read读取数据,还要通过lseek将文件流指针置回文件开头。
897 0
|
数据处理 数据安全/隐私保护 SoC
DSP+ZYNQ硬件说明手册-XQTyer【开源】
XQ6657Z35/45-EVM 高速数据处理评估板(XQTyer 评估板)由广州星嵌电子科技有限公司自主研发,包含一片TI DSP TMS320C6657和一片Xilinx ZYNQ-7000 SoC 处理器XC7Z035-2FFG676I。适用于无人机蜂群、软件无线电系统,基带信号处理,无线仿真平台,高速图像采集、处理等领域。
DSP+ZYNQ硬件说明手册-XQTyer【开源】