Linux程序访问DDR内存,Linux内核驱动之DDR二内存映射.docx-程序员宅基地

技术标签: Linux程序访问DDR内存  

Linux内核驱动之DDR二内存映射

一内存映射的概念上文中的内存寻址主要讲的是内存控制器如何去访问DDR3芯片基本存储单元本文中的内存映射主要讲的是如何将内存控制器管理的DDR3芯片地址空间映射到SOC芯片为DDR3预留的地址范围。比如基于ARM的SOC芯片,DDR3的预留地址一般都是0如果没有使用内存映射,SOC去访问0址时会造成整个系统崩溃,因为访问的地址并不存在实际的内存DDR3控制器有两种映射模式:非交织映射和交织映射(interlave).交织映射,即双通道内存技术,当访问在控制器A上进行时,控制器B为下一次访问做准备,数据访问在两个控制器上交替进行,从而提高DDR吞吐率。支持128byte,256byte,512byte的交织模式。如果要使用交织模式,要保证有两个内存控制器以及两个内存控制器有对称的物理内存(即两块内存大小一致;在各自的控制器上的地址映射一致)非交织映射,即两个内存控制器的内存映射在各自的映射范围内线性递增。对于只存在1个内存控制器或者只使用1个内存控制器时则只能使用非交织的线性映射模式。二内存映射具体介绍下面以DM385和DM8168来介绍内存映射DM385有1个DDR控制器EMIF0支持JEDEC标准的DDR2,DDR3芯片.当然DM385只能使用非交织映射模式数据总线支持16bit和32bit.DM385有4个内存映射寄存器,所以最多可以映射4段地址空间DMM_LISA_MAP__0,DMM_LISA_MAP__1,DMM_LISA_MAP__2,DMM_LISA_MAP__3下图是该寄存器的具体介绍SYS_ADDR: 映射到SOC系统上的物理地址,比如需要映射到0x8000000则SYS_ADDR = 80SYS_SIZE: 映射的内存大小,讲的是主要给系统映射了多大的内存SDRC_INTL:是否使用交织模式,以及使用何种交织模式映射SDRC_MAP:交织映射则为3,否则为1或者2SDRC_ADDR:内存控制器的高位地址即没有映射前他的内存地址一般都是从0始下面是我们DM385板卡的内存映射#define DDR3_DMM_LISA_MAP__0 0x00#define DDR3_DMM_LISA_MAP__1 0x00#define DDR3_DMM_LISA_MAP__3 0define DDR3_DMM_LISA_MAP__4 0xB0400110使用了两个映射寄存器,所以主要映射了两段地址空间EMIF0SYSTEM ADDRSection 0256MB0 0 256MB0ection 1 0x1FFFFFFF从上图可以看出来第一段映射是将EMIF0的0射到SOC系统地址0x8000000上,映射长度为256MB第二段映射是将EMIF0的0射到SOC系统地址0xB000000上,映射长度为256MB下图是访问模式,线性访问物理地址由于DM385只有一个内存控制器EMIF0所以只能非交织映射当然对于上述映射方式可以变为如下映射#define DDR3_DMM_LISA_MAP__0 0x00#define DDR3_DMM_LISA_MAP__1 0x00#define DDR3_DMM_LISA_MAP__3 0x00#define DDR3_DMM_LISA_MAP__4 0EMIF0的0射到SOC系统地址0映射长度是512MBDM8168内存映射2个DDR控制器EMIF0和EMIF1,支持JEDEC标准的DDR2,DDR3芯片DM8168支持非交织模式映射和交织模式映射数据总线支持16bit和32bit.DM8168有4个内存映射寄存器,所以最多可以映射4段地址空间下面是我们DM8168板卡的内存映射#define DDR3_DMM_LISA_MAP__0 0x00#define DDR3_DMM_LISA_MAP__1 0x00#define DDR3_DMM_LISA_MAP__3 0define DDR3_DMM_LISA_MAP__4 0xC0640320使用了两个映射寄存器,所以主要映射了两段地址空间EMIF0 SYSTEM ADDR1GB512MB0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_31440583/article/details/116644379

智能推荐

vue之使用vue-video-player实现实时视频流播放_vue-video-player播放实时视频-程序员宅基地

文章浏览阅读4.7w次,点赞8次,收藏91次。由于这几天项目需要实时显示监控的视频,所以网上翻阅了很多资料,这里写下我从0到1的过程。本篇博客参考了 :https://blog.csdn.net/liona_koukou/article/details/84025449博客,也非常感谢此博主对我一些问题的回复和帮助。写在最前:推荐大家一个测试视频流是否可以播放的测试工具:点击下载,建议大家在视频流无法播放时先用此工具测试下源..._vue-video-player播放实时视频

运维监控体系概述_什么是运维监控系统-程序员宅基地

文章浏览阅读3k次。运维监控的重要性:==========================运维工作中比较重要的一个部分,可以说,一切线上系统都需要 监控。考虑几个话题:1、什么是监控? ============================一种实时获取某种对象的 状态、信息 的手段。人类社会中,监控无处不在。 手段各式各样。在我们的运维工作中,监控的主要对象是 和企业 业务相关的各种 服务器硬件状..._什么是运维监控系统

115一直正在连接服务器失败怎么办,TCP连接错误115正在进行操作原因是什么?-程序员宅基地

文章浏览阅读4.3k次。我的应用程序创建一个TCP连接,这是正常工作。 但在一个网络服务器有很多IP说TCP连接错误115正在进行操作原因是什么?174.XXX54.xxx 这样当调用TCP连接(非60秒超时阻塞) 到IP 174.X.X.X总是成功。 但是TCP连接到ip 54.x.x.x的同一台服务器正在失败(大部分时间),正在进行测量操作。能否请您给我解释一下什么是错误号115OS可能的原因是:Linux的我的TC..._tcp error 115

Oracle数据库的基本查询_oracle数据库的oracle_home查询-程序员宅基地

文章浏览阅读367次。·基本sql语句1、DDL数据库定义语言主要用于建立、修改、删除数据库对象(表),不需要事务的参与CREATE:创建表CREATE TABLE emp(id NUMBER(10),name VARCHAR2(20),gender CHAR(1),birth DATE,salary NUMBER(6,2));DESC :查询表结构DESC emp;RENA..._oracle数据库的oracle_home查询

字符串(string)And内存函数(memory)介绍_string memory-程序员宅基地

文章浏览阅读482次。1.字符串(string) strlen 意义:获得字符串长度,以'\0'为结束标志。(长度不包含'\0');注意:函数返回值是size_t(unsinged int)模拟实现strlen:size_t my_strlen(char *str){ size_t count = 0; while (*str) { count++; str++; } return count;}int main(){ char arr2[] = "abcdef".._string memory

安卓开发球面波干涉现象仿真app_波的干涉模拟器-程序员宅基地

文章浏览阅读3k次。作为一个光学专业的学生,光的干涉是一个基础知识点。所以尝试着做了个安卓app,来模拟球面波的干涉现象,效果如下:通过改变参数,可以观察到不同的现象。先从介绍干涉实验原理开始,首先如下图所示:点光源s1和s2在同一直线上,设为x轴,观察屏在距离它们为D的位置上,观察屏平行于y-z平面,在观察屏上各点光强不同,即存在干涉现象。s1和s2发射球面波,所以在空间任意一点上的光强与距_波的干涉模拟器

随便推点

java菜鸟程序员2012年度总结——分享、收获与感恩并存-程序员宅基地

文章浏览阅读91次。前言:又是一年总结时啊。本来总结打算前几天就该写的。但由于一直在忙最后的期末考试,今天终于考完了。现在终于有时间来对这一年进行总一下了。刚开始的时候想了半天不知道该用什么题目好。想了想,今年的博客一直围绕着“java程序员由笨鸟到菜鸟”的专题来写的。现在想想。经过一年的洗礼,差不多由一个没有思想,没有想法的笨鸟变成会敲两行代码的菜鸟了。所以有了现在的“java菜鸟程序员2012总结”题..._程序员感恩总结

php 二进制 浮点数编码传输,PHP_简单谈谈php浮点数精确运算,bc是Binary Calculator的缩写。bc*函 - phpStudy...-程序员宅基地

文章浏览阅读89次。简单谈谈php浮点数精确运算bc是Binary Calculator的缩写。bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale没有提供,就用bcscale的缺省值。这里大数直接用一个由0-9组成的string表示,计算结果..._php中获得浮点数的二进制表示

c语言case语句中直接return,我可以在switch语句中放置一个return语句-程序员宅基地

文章浏览阅读2.6k次。我是否可以switch发表声明,决定返回什么?例如,我想根据我的想法返回不同的东西return.Eclipse给了我一个错误,希望我把switch声明放在外面switch.不确定要搜索什么,如果这是重复,请对不起.这是我的代码:public String wordBank() { //Error here saying: "This method must return a type of str..._case 里面放return

python 写xml_Python对XML读写-程序员宅基地

文章浏览阅读113次。介绍由于Python对XML读写有多种库,本文以xml.etree import ElementTree为例。解析from xml.etree import ElementTree as ET############ 解析方式一 ############# 打开文件,读取XML内容str_xml = open('xo.xml', 'r').read()# 利用ElementTree.XML将字符串..._python xml 多条目 读写

二级c语言程序设计题改答案,计算机二级C语言程序设计试题及答案-程序员宅基地

文章浏览阅读440次。计算机二级C语言程序设计试题及答案尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。今天,小编特意为大家推荐计算机二级C语言程序设计试题及答案,一起看看吧!1.C语言中,关系表达式和逻辑表达式的值是( B ) 。A、0B、 0或1C、 1D、‘T’或’F’2..._设整型变量 x=2,则执行下列语句后,浮点型变量丫 的值不为 0.5 的

(24)FPGA开发必备(FPGA不积跬步101)_fpga必背-程序员宅基地

文章浏览阅读360次。1 FPGA开发必备1、 FPGA理论知识。2 、 FPGA开发语言。3 、 FPGA代码编辑器。4 、 FPGA仿真软件。5 、 FPGA开发软件。6 、 FPGA调试软件。7 、 FPGA板卡。8 、 FPGA硬件测试。9 、 FPGA文档编写。10 、FPGA时序收敛。2 结束语如果遇到问题,可以一起沟通讨论,邮箱:[email protected]。..._fpga必背