s5pv210内存映射

在ARM中37个通用寄存器和51中的寄存器不一样,并不是占用一部分RAM的地址。这些通用寄存器的地址我们并不知道,但是内核可以找到它们,它们是属于核内部的资源。

在芯片内部还集成了各种外设的特殊功能寄存器(sfr),这些寄存器都有各自的一个地址。这些地址和芯片外部接的存储器芯片的地址是统一编址的,都占用ARM32位地址空间,所以32位的ARM所支持的RAM空间的大小一定是小于4G的。不仅仅是芯片内部的SFR和外接的RAM,还有外接的Flash芯片以及内部集成的ROM和RAM等都是统一编址的,共同占用ARM的4G地址空间。通过查看芯片的数据手册就可以知道哪些地址被映射成外设的控制寄存器,哪些地址被映射成内存地址。不同的芯片有不同的内存映射,需要查看对应的数据手册。

内存映射图:

针对这个内存映射图,有几点需要注意的:

  • 0x0地址处的iROM&iRAM只是一个镜像区域(Mirrored region),这个区域实际iROM&iRAM的镜像区域,也就是说当cpu访问这个区域的地址时,实际上是在访问iROM&iRAM区域。
  • 内存映射中的NAND Flash空间只有256MB的大小(0xB000_0000---0xBFFF_FFFF),而实际外接的Flash芯片可能有4G甚至更大。所以虽然芯片外的Flash芯片也占用4G的寻址空间,但是flash和DRAM的接法是不同的,DRAM是采用总线型连接,内存映射上有多少空间是DRAM的,那么实际上就只能外接这么多大小的内存芯片,而flash(NandFlash)的连接方式和DRAM不同,其地址总线和数据总线是复用的,读写数据需要先发送命令,不能随机访问。内存映射上的大小并不是实际flash的大小。

  所谓总线型连接就是指按照地址总线和数据总线分开的方式来进行cpu和存储器芯片的直接连接。除了DRAM可以进行总线型连接外,NorFlash也可以总线型连接,和DRAM一样直接占用cpu的地址空间。通常NorFlash连接在SROM(图中红色区域)区域中。

时间: 2024-10-25 08:10:48

s5pv210内存映射的相关文章

JAVA NIO 内存映射(转载)

原文地址:http://blog.csdn.net/fcbayernmunchen/article/details/8635427 Java类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段.本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原理. 在传统的文件IO操作中,我们都是调用操作系统提供的底层标准IO系统调用函数 read().write() ,此时调用此函数的进程(在JAVA中即java进程)由当

Java利用内存映射文件实现按行读取文件

我们知道内存映射文件读取是各种读取方式中速度最快的,但是内存映射文件读取的API里没有提供按行读取的方法,需要自己实现.下面就是我利用内存映射文件实现按行读取文件的方法,如有错误之处请指出,或者有更好更快的实现方式麻烦也提供一下代码. 代码如下: public class testMemoryMappedFile { public static void main(String[] agrs) throws IOException{ RandomAccessFile memoryMappedFi

内存映射文件

一段内存地址空间,映射着物理存储器上一个已经存在于磁盘上的文件.在对该文件进行操作之前必须首先对文件进行映射.使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作. 内存映射文件,是由一个文件到一块内存的映射.Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping). API: HANDLE CreateFileMapping(HANDLE hFile,LPSECURITY_ATTRIBUTES lpFileMappingAttribute

【转】C#大文件读取和查询--内存映射

笔者最近需要快速查询日志文件,文件大小在4G以上. 需求如下: 1.读取4G左右大小的文件中的指定行,程序运行占用内存不超过500M. 2.希望查询1G以内容,能控制在20s左右. 刚开始觉得这个应该不难.研究一天之后,发现这个需要使用内存映射技术. 查阅了相关资料之后 https://msdn.microsoft.com/zh-cn/library/dd997372(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 发现还是

20150222 IO端口映射和IO内存映射(详解S3C24XX_GPIO驱动)

20150222 IO端口映射和IO内存映射(详解S3C24XX_GPIO驱动) 2015-02-22 李海沿 刚刚我们实现了linux系统内存的分配,读写,释放功能,下面,我们一鼓作气将IO端口映射及IO内存映射搞定,加油! (一)地址的概念 1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义.物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存.BIOS等).在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址

Linux下C编程-----IO/文件操作/内存映射 实现简单记录存储(3)

利用linux下的文件内存映射可以实现进程共享数据,我们可以把一个文件映射到虚拟内存中使多个进程进行共享, 到这里我们大概能想到他能应用到的领域 是很广泛的 主要涉及到 mmap  munmap   msync 三个函数的应用 下面贴代码 下面一段代码是为文件建立一个简单的记录存储,并且通过内存映射修改文件内容 /************************************************************************* > File Name: memdb

Java使用内存映射实现大文件的上传

在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作,都将导致进程因频繁读写外存而降低速度.如下为一个对比实验. package test; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOExc

第二十天:mmap内存映射

可以说,一天的时间都在了解内存映射mmap这个函数,冯诺依曼结构中表示运算器不能直接对硬盘上的文件进行操作.mmap函数的功能就是将文件映射到某一段内存中,然后操作内存就相当与操作文件.这样的话对文件操作更加方便.mamp函数的定义如下:void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize);一共有六个参数,参数算是比较多了.第一个表示映射内存的起始地址,如果为NULL,那么操作系统会自动的找到空

inux内存映射和共享内存理解和区别

可以看到内存映射中需要的一个参数是int fd(文件的标识符),可见函数是通过fd将文件内容映射到一个内存空间, 我需要创建另一个映射来得到文件内容并统计或修改,这时我创建这另一个映射用的仍是mmap函数, 它仍需要用到fd这个文件标识,那我不等于又重新打开文件读取文件里的数据 1.既然这样那同对文件的直接操作有什么区别呢? 2.映射到内存后通过映射的指针addr来修改内容的话是修改共享内存里的内容还是文件的内容呢? 3.解决上面2个问题,我还是想确切知道共享内存有什么用??? 一种回答|: 1