今天小编要和大家分享的是存储技术相关信息,接下来我将从基于S3C4510B微处理器和uClinux实现存储系统的设计,p89cv51rc2fbc 厂家现货直销 恩智浦/nxp代理 嵌入式微处理器这几个方面来介绍。

存储技术相关技术文章基于S3C4510B微处理器和uClinux实现存储系统的设计p89cv51rc2fbc 厂家现货直销 恩智浦/nxp代理 嵌入式微处理器

存储技术相关技术文章基于S3C4510B微处理器和uClinux实现存储系统的设计

1.引言

对于嵌入式系统的开发人员来说,深刻地理解其存储系统的寻址原理和有效的管理存储系统对正确高效地设计嵌入式系统的硬件和底层软件编程具有重要的意义。目前嵌入式系统中最常用的存储器包括有EEPROM、FLASH、NormalDRAM和Sync.DRAM等。本文所采用的存储器包括有SDRAM和FLASH。S3C4510B(以下简称4510)微处理器是构建在ARM核ARM7TDMI之上的,ARM7TDMI的地址总线为32位的,4510的内部系统总线却是26bit:SA[25:0],它的外部地址总线却是22bit:ADDR[21:0],它们之间是如何译码的,而仅用14根外部地址总线为什么能够访问多达16MB的内存地址空间,本文就试图回答这些问题。最后还介绍了基于S3C4510B的存储系统在硬件级别上的设计即接口设计和uClinux中对存储系统编程的实现。

2.基于S3C4510B的存储系统原理

2.1.32位地址总线与26位内部系统总线的关系

ARM7TDMI把存储器看作是从零向上增长的许多字节的线性集合,0字节到3字节为第一个字,4字节到7字节为第二个字如此等等,它的地址总线是32位的,而4510的内部系统总线却是26bit的,也就是说它能够寻址的最大空间是226byte,即64MB的地址空间0x0000000~0x3FFFFFF。很显然构建在ARM7TDMI上的RISC微控制器4510的内部地址总线仅用到了ARM7TDMI的32位地址总线的低26位,并且是一一对应的相连。

2.2.4510寻址原理

基于S3C4510B微处理器和uClinux实现存储系统的设计

4510采用了统一编址的方式,将系统的片内、片外存储器、特殊功能寄存器和外部的I/O设备都映射到了64MB的地址空间,同时为便于管理,又将地址空间分为若干个存储器组(Bank),包括6个ROMBank、4个DRAMBank、内部SRAM和特殊寄存器组等,每一个存储器组都对应一个控制寄存器,可以通过配置其中的基指针(BasePointer)和尾指针(EndPointer)来设定每个存储器组的大小和位置。上图是DRAM#(#取0~3)组的控制寄存器。[19:10]是DRAM组基指针,该设定值左移16位即为DRAM#组的起始物理地址。因此我们可以推出每个存储器组的位置是通过4510的26位系统地址总线中高10位SA[25:16]来设定和区分的。[29:20]是DRAM组尾指针,该设定值左移16位-1即为DRAM#组的结束物理地址。因此我们还可以推出只要设定了任意一组控制寄存器中的基指针和尾指针,也就确定了该组存储器在4510可寻址空间64MB中的位置和该组存储器的大小,另一方面还可以得出如下结论:对于任一要寻址的系统地址,可以通过该地址的高10位来判断它属于哪一个存储器组,而该地址的低16位就是它在所判断存储器组中的偏移地址。事实上4510正是通过这种机制来寻址的。4510把请求地址的高10位与所有的存储器组的基指针相减来实现组选择和计算偏移地址。当选定了组和计算出偏移地址,4510就会产生相应的组选择信号并且通过物理地址总线用偏移地址去寻址外部存储器,从而完成了寻址的全过程。