第九次课硬件系统存储器控制_第1页
第九次课硬件系统存储器控制_第2页
第九次课硬件系统存储器控制_第3页
第九次课硬件系统存储器控制_第4页
第九次课硬件系统存储器控制_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九次课硬件系统存储器控制第一页,共四十四页,2022年,8月28日具备16KB的指令Cache和16KB的数据Cache和MMUARM920T:由内核、高速缓存和内存管理单元(MMU)组成。第二页,共四十四页,2022年,8月28日高性能嵌入式系统的总线标准AMBA扩展高速总线AHB外部存储器管理桥接高速外设总线APBAMBA(AdvancedMicrocontrollerBusArchitecture)标准定义了三组总线:AHB(AMBA高性能总线)、ASB(AMBA系统总线)、和APB(AMBA外设总线)。第三页,共四十四页,2022年,8月28日1个LCD控制器,支持液晶显示屏;4个通道的DMA,支持存储器和I/O口之间的传输;3个通道的UART;SD卡接口和MMC卡接口;2个USB主机接口,1个USB设备接口;第四页,共四十四页,2022年,8月28日时钟管理MPLL;16位看门狗定时器;2个SPI接口;串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。s3C2440有两个PLL(锁相环)一个是MPLL,一个是UPLL。MPLL用于CPU及其他外围器件,UPLL用于USB。第五页,共四十四页,2022年,8月28日1个中断控制器;电源管理,具有普通、空闲、掉电等模式;1个通道的IIC接口;1个通道IIS总线接口;117位通用I/O口;具有日历功能的RTC;8通道的10位ADC4个有PWM功能的16位定时器第六页,共四十四页,2022年,8月28日4.2引脚介绍S3C2440共有289引脚,采用BGA(细间距球栅阵列)封装,17*17,主要分为总线控制信号、各类元器件接口信号以及电源时钟控制信号。其信号可以分成Addr[26:0]、Data[31:0]、nGCS[7:0]、OM[3:0]等等,大部分都是复用的第七页,共四十四页,2022年,8月28日4.3特殊功能寄存器寄存器的状态决定硬件如何工作,为了使硬件工作于某种状态,可以通过修改寄存器的值来实现。例如:S3C2440X处理器的工作频率可达400MHz,但决不是只能工作于该频率。可以通过修改内部寄存器的值,使处理器工作在不同的频率下。在S3C2440的地址空间0x48000000~0x60000000之间,存有大量的SFR(SpecialFunctionRegisters,特殊功能寄存器)用于实现对内部外围模块的控制。第八页,共四十四页,2022年,8月28日4.4最小系统

一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。而大多数基于ARM处理器核的微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但因为这部分在开发时很重要,所以也把这部分也归入最小系统中。第九页,共四十四页,2022年,8月28日嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)可选,因为许多面向嵌入式领域的微控制器内部集成了程序和数据存储器——最小系统框图可选,但是在样品阶段通常都会设计这部分电路第十页,共四十四页,2022年,8月28日嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)4.4.1电源电路设计电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,但却往往被忽略。如果电源系统处理得好,整个系统的故障往往减少了一大半。第十一页,共四十四页,2022年,8月28日复位模块和端口寄存器所需要的电源:1.8V分析需求S3C2440A处理器所需要的电源类型:处理器内核所需电源:1.8V

PLL模块所需要的模拟电源和数字电源:1.8V

RTC模块为时钟电路提供的电源:1.8V存储器端口和普通IO口所诩的数字电源:3.3V

ADC模块所需要的模拟电源:3.3V由此可见,在电源系统中,至少需要3.3V和1.8V的两种直流稳压电源,如果对AD要求精度,模拟电源部分需要单独设计。第十二页,共四十四页,2022年,8月28日嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)4.4.2晶振电路设计目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。2440的时钟发生器包括一个外部晶振的震荡器和两个锁相环MPLL和UPLL,MPLL用于FCLK(CPU),HCLK(AHB总线),PCLK(PHB总线)时钟系统第十三页,共四十四页,2022年,8月28日嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)4.4.3复位电路设计微控制器在上电时状态并不确定,这造成微控制器不能正确工作。为解决这个问题,所有微控制器均有一个复位逻辑,它负责将微控制器初始化为某个确定的状态。这个复位逻辑需要一个复位信号才能工作。上电复位,用户复位.复位及其配置系统第十四页,共四十四页,2022年,8月28日嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)4.5JTAG调试接口设计调试与测试接口不是系统运行必须的,但现代系统越来越强调可测性,调试、测试接口的设计也要重视了。S3C2440A有一个内置JTAG调试接口,

可以对芯片内所有的部件进行访问,通过这个接口可以控制芯片的运行并获取内部信息。调试测试接口第十五页,共四十四页,2022年,8月28日S3C2440A的存储器控制器提供访问外部存储器所需要的存储器控制信号。

存储器控制器

第十六页,共四十四页,2022年,8月28日

支持小/大端(通过软件选择)地址空间:每bank(组,块)有128M字节(总共有8个banks,共1G字节)除bank0(只能是16/32位宽数据存储)之外,其他bank都具有可编程的访问大小(可以是8/16/32位宽数据存储)总共有8个存储器banks(bank0-bank7)其中6个banks用于ROM,SRAM等.(bank0-bank5)剩下2个banks用于ROM,SRAM,SDRAM等.(bank6-bank7)7个固定的存储器bank(bank0-bank6)起始地址最后一个bank(bank7)的起始地址是可调整的最后两个bank(bank6~bank7)的大小是可编程的,且大小必须相等.所有存储器bank的访问周期都是可编程的总线访问周期可以通过插入外部时间等待来延长支持SDRAM的自刷新和掉电模式第十七页,共四十四页,2022年,8月28日存储器映射第十八页,共四十四页,2022年,8月28日第十九页,共四十四页,2022年,8月28日S3C2440的Bank6/7地址分布地址

2MB

4MB

8MB

16MB

32MB

64MB

128MB

Bank6(S3C2440)

起始地址

0x30000000

0x30000000

0x30000000

0x30000000

0x30000000

0x30000000

0x30000000

终止地址

0x301fffff

0x303fffff

0x307fffff

0x30ffffff

0x31ffffff

0x33ffffff

0x37ffffff

Bank7(S3C2440)

起始地址

0x30200000

0x30400000

0x30800000

0x31000000

0x32000000

0x34000000

0x38000000

终止地址

0x303fffff

0x307fffff

0x30ffffff

0x31ffffff

0x33ffffff

0x37ffffff

0x3fffffff

第二十页,共四十四页,2022年,8月28日S3C2440BANK0存储器数据宽度选择,由引脚OM[1:0]的值决定.其他存储器组的数据宽度在总线宽度/等待控制寄存器中设置OM1(操作模式1)

OM0(操作模式0)

引导ROM数据宽度

0

0

S3C2440NandFlash模式

0

1

16bit

1

0

32bit

1

1

测试模式

第二十一页,共四十四页,2022年,8月28日

存储器的控制寄存器 内存控制器为访问外部存储空间提供存储器控制信号,S3C2440X存储器控制器共有13个寄存器。寄存器地址功能操作复位值BWSCON0x48000000总线宽度和等待控制读/写0x0BANKCON00x48000004BANK0控制读/写0x0700BANKCON10x48000008BANK1控制读/写0x0700BANKCON20x4800000CBANK2控制读/写0x0700BANKCON30x48000010BANK3控制读/写0x0700BANKCON40x48000014BANK4控制读/写0x0700BANKCON50x48000018BANK5控制读/写0x0700BANKCON60x4800001CBANK6控制读/写0x18008BANKCON70x48000020BANK7控制读/写0x18008REFRESH0x48000024SDRAM刷新控制读/写0xAC0000BANKSIZE0x48000028可变的组大小设置读/写0x0MRSRB60x4800002CBANK6模式设置读/写xxxMRSRB70x48000030BANK7模式设置读/写xxx第二十二页,共四十四页,2022年,8月28日第二十三页,共四十四页,2022年,8月28日第二十四页,共四十四页,2022年,8月28日第二十五页,共四十四页,2022年,8月28日第二十六页,共四十四页,2022年,8月28日第二十七页,共四十四页,2022年,8月28日NANDFLASH控制器第二十八页,共四十四页,2022年,8月28日NANDFlash和NORFlashNorflash特点:容量小,价格贵,可靠性高,寿命短,读速快。系统可以直接在NORFLASH运行指令,用于启动和引导系统。主要用于存放启动代码。(相当于PC的Rom)Nandflash特点:容量大,价格低,寿命长,写速快。而NANDFLASH不能用于主存,只能进行按扇区读写,可以用作小硬盘。主要用于存放数据和程序。(相当于PC机的硬盘)因此,一些用户希望从NANDFLASH启动和引导系统,在SDRAM上执行主程序。第二十九页,共四十四页,2022年,8月28日接口差别

NORflash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。

NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,因此,基于NAND的存储器就可以取代硬盘或其他块设备。

第三十页,共四十四页,2022年,8月28日2、在掌上电脑里要使用NANDFLASH存储数据和程序,但是必须有NORFLASH来启动。除了SAMSUNG处理器,其他用在掌上电脑的主流处理器还不支持直接由NANDFLASH启动程序。因此,必须先用一片小的NORFLASH启动机器,在把OS等软件从NANDFLASH载入SDRAM中运行才行第三十一页,共四十四页,2022年,8月28日3、NANDFLASH不能够执行程序NANDFLASH本身是连接到了控制器上而不是系统总线上。CPU启动后是要取指令执行的,如果是SROM、NORFLASH等之类的,CPU发个地址就可以取得指令并执行,NANDFLASH不行,因为NANDFLASH是管脚复用,它有自己的一套时序,这样CPU无法取得可以执行的代码,也就不能初始化系统了。NANDFLASH是顺序存取设备,不能够被随机访问,程序就不能够分支或跳转,这样你如何去设计程序。第三十二页,共四十四页,2022年,8月28日最重要的区别:Norflash:拥有SRAM接口,即数据和地址线是分开的,可以直接接系统总线,应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。这种称为芯片内执行(XIP,eXecuteInPlace)。Nandflash:使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。所以不能直接执行程序。第三十三页,共四十四页,2022年,8月28日一块NandFlash被分为若干Block,每个Block又被分为若干Page。

flash中Byte(字节),Page(页),Block(块)3个单位之间的关系为:1Page=512BytesDataField(放置用户数据)+16BytesSpareField(放置ECC代码,坏块信息等)1Blcok=32Pages我们讨论的K9F1208U0B总共有4096个Blocks,故我们可以知道这块flash的容量为4096*(32*528)=69206016Bytes=66MB第三十四页,共四十四页,2022年,8月28日这528Bytes按功能分为DataField和SpareField,其中SpareField占528Bytes里的16Bytes,这16Bytes是用于在读写操作的时候存放校验码用的,一般不用做普通数据的存储区,除去这16Bytes,剩下的512Bytes便是我们用于存放数据用的DataField,所以一个Page上虽然有528个Bytes,但我们只按512Bytes进行容量的计算。实际可操作的芯片容量为4096*(32*512)=67108864Bytes=64MB。

第三十五页,共四十四页,2022年,8月28日NandFlash控制器工作原理对NandFlash存储芯片进行操作,必须通过NandFlash控制器的专用寄存器才能完成。所以,不能对NandFlash进行总线操作。而NandFlash的写操作也必须块方式进行。对NandFlash的读操作可以按字节读取。第三十六页,共四十四页,2022年,8月28日NandFlash控制器工作原理NandFlash控制器在其专用寄存器区(SFR)地址空间中映射有属于自己的特殊功能寄存器,就是通过将NandFlash芯片的内设命令写到其特殊功能寄存器中,从而实现对Nandflash芯片读、检验和编程控制的。特殊功能寄存器有:NFCONF、NFCMD、NFADDR、NFDATA、NFSTAT、NFECC。第三十七页,共四十四页,2022年,8月28日NandFlash控制器的寄存器寄存器地址功能操作复位值NFCON0x4E000000NandFlash配置读/写-NFCMD0x4E000004NandFlash命令读/写-NFADDR0x4E000008NandFlash地址读/写-NFDATA0x4E00000CNandFlash数据读/写-NFSTAT0x4E000010NandFlash状态读/写-NFECC0x4E000014NandFlash纠错读/写-第三十八页,共四十四页,2022年,8月28日1.配置寄存器(NFCONF):用于对NandFlash控制器的配置状态进行控制。NFCONF主要用到了TACLS、TWRPH0、TWRPH1,这三个变量用于配置nandflash的时序。2.命令寄存器(NFCMD):用于存放Nandflash芯片内设的操作命令。3.地址寄存器(NFADDR):用于存放用于对Nandflash芯片存储单元寻址的地址值。4.数据寄存器(NFDATA):Nandflash芯片所有内设命令执行后都会将其值放到该寄存器中。同时,读出、写入Nandflash存储空间的值也是放到该寄存器。5.状态寄存器(NFSTAT):用于检测Nandflash芯片上次对其存储空间的操作是否完成。6.ECC校验寄存器(NFECC):ECC校验寄存器。第三十九页,共四十四页,2022年,8月28日ECC校验码S3C2440A在写/读操作时,自动产生ECC校验码。每512字节数据产生3字节的ECC奇偶编码。24位奇偶代码=18行奇偶+6位列奇偶ECC产生模块执行以下步骤1.当MCU写数据到NAND时,ECC产生模块生成ECC代码。2.当MCU从NAND读数据时,ECC产生代码同时,用户程序将它与先前写入时产生的ECC代码相比较。第四十页,共四十四页,2022年,8月28日NandFlash控制器主要特性 NandFlash模式:支持读/擦/编程Na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论