您的位置 首页 数字

S3C2440地址空间的分配及发动进程

一、S3C2440地址空间的分配1.s3c2440A的存储器控制器有以下特性:l大小端(通过软件选择)l地址空间:每个bank有128M的字节(总共1G字节/8…

一、S3C2440地址空间的分配

1.s3c2440A的存储器操控器有以下特性:

l巨细端(经过软件挑选)

l地址空间:每个bank有128M的字节(一共1G字节/8个banks)

l可编程的拜访位宽,bank0(16/32位),其他bank(8/16/32位)

l共8个存储器banks

l6个是ROM,SRAM等类型存储器bank

l2个是能够作为ROM、SRAM、SDRAM等存储器bank

l7个固定的存储器bank开端地址

l最终一个bank的开端地址可调整

l最终两个bank巨细可编程

l一切存储器bank的拜访周期可编程

l总线拜访周期可经过刺进外部wait来延伸

l支撑SDRAM的自刷新和掉电形式

2.寻址空间

s3c2440是32位的,所以理论上能够寻址4GB空间,内存(SDRAM)和端口(特别寄存器),还有ROM都映射到同一个4G空间里。可是,芯片引脚上只给出了27根地址(ADDR[26:0]),单靠芯片上的27根引脚,它只能操控128M的空间,剩余的在哪里?

在cpu芯片手册上,查它的内部寄存器的地址,咱们能够找到一部分答案。比方这次总结笔记要讲的存储器操控寄存器,13个寄存器,每个寄存器的地址,都大于0X4000 0000的地址。而0x4000 0000(1G)是1G空间的分界线,也便是说,1G~3G之间的空间,实践上都是被芯片自己占用了。实践上,给用户的运用的空间,只需1G。

咱们方才说了,咱们运用了128M,用了27根地址线。而1G空间,需求30根地址线。剩余的3根用在什么地方?查了材料,忽然理解了。这三根被三星公司偷偷地用在了3-8译码器的输入端去了。而这个3-8译码器的输出端,便是对应这nGCS0~7,对应着8个bank。很明显了,三星的2440留给用户运用的这1G空间,27根线用于芯片引脚来操控详细的bank了,剩余的三根,用于挑选当时处于哪个bank。

二、S3C2440体系发动

手册里说,2440发动方法决定于bank0,以及OM[1:0]。

Arm的发动都是从0地址开端,所不同的是地址的映射不一样。在arm开电的时分,要想让arm知道以某种方法(地址映射方法)运转,不可能经过你写的某段程序操控,由于这时分你的程序还没发动,这时分arm会经过引脚的电平来判别。

S3C2440支撑两种发动方法:NandFlash和非NandFlash(例NorFlash)发动。

从NorFlash发动时,与nGCS0相连的NorFlash就被映射到nGCS0片选的Bank0空间,其地址被映射为0x0000 0000;

从NandFlash发动时,S3C2440芯片内部自带的一块容量为4K的被称为“Steppingstone”(起步石)的BootRAM被映射到nGCS0片选的Bank0空间,其地址被映射为0x0000 0000。当体系上电或复位时,程序会从0x0地址处开端履行,因而咱们编写的发动代码要确保存储在0地址处。在实践的开发中,一般能够把bootloader烧入到Norflash,程序运转能够经过串口交互,进行必定的操作,比方下载,调试。这样就很能够很便利的调试你的一些代码。Norflash中的Bootloader还能够烧录内核到Norflash等等功用。

NorFlash发动时,没有额定需求考虑的问题,由于这种情况下程序在体系发动前就存储在NorFlash中,咱们只需确保将发动代码保存在NorFlash开端的方位即可,体系上电或复位时,0地址处的发动代码就会被履行。

NandFlash发动时,体系发动前一切的程序存储在NandFlash中,体系的发动进程略微有点杂乱:体系上电或复位时,0地址处为S3C2440内部自带的BootSRAM,发动前里边没有任何存储内容,发动后S3C2440先经过硬件机制将NandFlash前4k的内容复制到BootSRAM中,然后再运转里边的程序(从0地址处开端)。这种情况下咱们需求确保将发动代码保存在NandFlash开端的方位,而且发动代码的巨细要小于4K。

假如体系的一切程序在编译链接后的巨细小于4K,那在体系的发动代码中无需考虑将程序从NandFlash转移到SDRAM这个问题,由于一切的程序在发动时即悉数由NandFlash复制至BootSRAM,程序在BootSRAM中运转即可;假如体系的一切程序在编译链接后的巨细大于4K,那在体系的发动代码中就需求包括一段将体系的悉数程序从NandFlash转移到SDRAM的代码,由于体系发动时只将NandFlash的前4K复制到了BootSRAM中,还有部分程序在NandFlash中,而程序在NandFlash中是无法运转的,需求将一切程序复制至SDRAM并在其间运转,所以体系的发动代码中要包括这段有关程序复制的代码,并在一切程序复制完成后使程序跳转到SDRAM中运转。也便是说NandFlash发动时需求考虑到触及的两次搬移,第一次转移是S3C2440硬件机制主动完成的,无需干涉,第2次转移需求程序员来完成,转移程序量巨细是体系的一切程序。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/276476.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部