地址分配和存储器映射

地址分配和存储器映射

ID:46807692

大小:300.00 KB

页数:10页

时间:2019-11-28

地址分配和存储器映射_第1页
地址分配和存储器映射_第2页
地址分配和存储器映射_第3页
地址分配和存储器映射_第4页
地址分配和存储器映射_第5页
资源描述:

《地址分配和存储器映射》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在嵌入式编程里,特别是32bitCPU里,各种各样五花八门的动作是CPU通过对外设的驱动来完成的.因为底层编程大部分工作就是外设编程。  CPU本身几乎每一种外设都是通过读写设备上的寄存器来进行操作的。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。注意,这里的外设是相对于CPU来讲的,比如S3C2440除了ARM920T的内核以外,还在同一块CPU里集成很多模块,这一些模块也称为外设。CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped)称为端口映射,另一种是

2、存储空间映射方式(Memory-mapped),称为内存映射。而具体采用哪一种则取决于CPU的体系结构。 内存映射有些体系结构的CPU(如,PowerPC、m68k等)通常只实现一个物理地址空间(RAM)。在这种情况下,外设I/O端口的物理地址就被映射到CPU的单一物理地址空间中,而成为存储空间的一部分。此时,CPU可以象访问一个内存单元那样访问外设I/O端口,而不需要设立专门的外设I/O指令。这就是所谓的“存储空间映射方式”(Memory-mapped)。ARM体系的CPU均采用这一模式.简而言之,就是内存(一般是SDRAM)与外设寄存器统一编址。 端口映射而另外一些

3、体系结构的CPU(典型地如X86)则为外设专门实现了一个单独地地址空间,称为“I/O地址空间”或者“I/O端口空间”。这是一个与CPU地RAM物理地址空间不同的地址空间,所有外设的I/O端口均在这一空间中进行编址。CPU通过设立专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元(也即I/O端口)。这就是所谓的“I/O映射方式”(I/O-mapped)。与RAM物理地址空间相比,I/O地址空间通常都比较小,如x86CPU的I/O空间就只有64KB(0-0xffff)。这是“I/O映射方式”的一个主要缺点。而且必须要专门的汇编语言才能处理. 内存映射模

4、式下,对寄存器的访问就是某一个地址的操作,因此C语言的指针即可完成此操作。这样编程相当方便。Linux最早是在在X86运行,对硬件地址采用端口映射,后来又扩展到ARM之类运行.为了简化操作,Linux在所以CPU上都采用I/O端口概念.如果是象ARM这样内存映射.也被模拟成端口. SOC的外设地址编址-----------------------------------------------------------------------------------------------对于S3C2440/S3C6410这种集成很多外设模块的SOC来说,外设的地址编址分

5、成两种类型。 一种是CPU内部集成的外设,这里物理地址是固定的。这个查CPU的DataSheet即可知道。另外一种是物理上与CPU分离的IC,如NorFlash,SDRAM网络控制器,它们通过片选信号来确定自己的物理地址.还有一类IC的不直接映射到物理空间之上。这一类往往通过相应寄存器来间接控制。不在此讨论之列内部模块固定地址 比如S3C2440内部模块地址 S3C6410的映射地址 外部模块地址分配    在CPU上都会引出多个片选线。每一个片选线表示对应一个固定的地址范围,在术语上称为(Bank).以S3C2440为例,参见如下对应关系在硬件设计上,第一片的SDRA

6、M的片选线接在nGCS36上,参考上表,这片SDRAM的物理地理就是0x30000000.DM9000的网络控制接在nGCS3这个硬件联线上,这样网络处理器的硬件地址起始地址在0x18000000.以S3C6410为为例,它的第一步选是片选线nGCS3,SDRAM的起始地址是0x5000000之上.软件如何读写外设-----------------------------------------------------------------------------------------------在内存映射模式下。对于外设的访问实际就是对内存地址的访问.在C语言里,

7、即指针操作。为了增加阅读性,往往采用如下的宏定义.#definerGPGCON   (*(volatileunsigned*)0x56000060)//PortGcontrol这个宏定义非常之复杂,所以我经常用如下五个问题来问学生或者来面试讲师的人。1.为什么要用绝对地址,地址怎么来的?2.unsigned*表示什么?•3.为什么要用unsigned?4.最左边的*表示什么?5.volatile表示什么含意?6.完成同样一个功能,在不同字节序下,设置的寄存器的数字是不是一样?第一个问题比较好答.内存映射模式是直接内存访问。编址的来源看上两

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。