ARM内存映射与存储器接口
关于ARM地址映射的理解

对于刚刚学习ARM嵌入式的人来说,遇到的第一个难点我觉得就是地址映射的原理,往往会被一些概念弄得稀里糊涂(比如像我这种智商不高的)。
所以就静下心自己好好研读了以下杜春雷《ARM体系结构与编程》有关MMU和地址映射的讲解,个人感觉写得比较清晰,以下是自己在读的时候理解的内容,如有不正,请指出!对于32为ARM处理器,最大寻址空间为4GB(2^32),但是物理空间并没有配置到这么大,所以对于VA来说,其地址为0x00000000~0xFFFFFFFF,对于PA来说,其地址应小于或等于0xFFFFFFFF。
地址映射原理:把虚拟地址划分为一定大小空间的存储块,同样,物理空间也划分为同样大小的块。
然后,依照存储块的大小,可分为:1、段(1MB)2、大页(64KB)3、小页(4KB)4、极小页(1KB)第一种称为段模式,后面三种称为页模式这些映射,都是通过页表实现的,页表又可可以分为:一级页表(用于段模式)二级页表(用于页模式)什么是页表呢?页表就是存储在内存中(会被拷贝到SDRAM中存放,以供MMU查询),用于表示VA与PA的映射关系的一个表格。
表格中每项称为条目,条目里的内容称为描述符(段描述符和页描述符)。
段模式:以段模式映射时,因为VA大小位4GB,段模式每个条目表为1MB大小的空间,所以全映射时,条目总数(全映射时页表所占内存空间)=4GB / 1MB =4096条(每条32位,即4字节,共4 KB)。
其中,所谓的每个条目大小为1MB,意思是,CPU发出的一段地址范围为1MB的VA (假如0x00000000~0x000FFFFF),这一段VA经过MMU变换,都会索引(查找)到同一个条目。
该条目再次结合VA(PA的[19:0]位,称为段内地址偏移量),形成真正的PA地址。
具体请看下图对于段模式,其只需要使用一级页表。
页表中,条目中存储的描述符格式如下:1、段基址:在设计地址映射时,要映射的物理地址要1MB对齐,段基址就是这段1MB物理地址起始地址的高[31:20]位,每个条目中的描述符的段基址都不一样(以段来说,相差1MB)。
arm构架的存储器参数

arm构架的存储器参数
1. 地址空间:ARM体系使用单一的地址空间,大小通常为2^32个8位字节,即4GB。
这些字节单元的地址都是无符号的32位数值,取值范围是0到2^32-1。
此外,ARM的地址空间也可以看作是2^30个32位的字单元或2^31个16位的半字单元。
2. 数据类型与存储格式:ARM处理器支持多种数据类型,包括字节(Byte,8位)、半字(Half-Word,16位)和字(Word,32位)。
存储器的格式可以是大端模式或小端模式,大端模式是指字的高字节存储在低地址字节单元中,而字的低字节存储在高地址字节单元中。
3. 寄存器:ARM处理器通常包含一定数量的通用寄存器,用于暂存数据和地址。
例如,ARM处理器可能具有37个寄存器,这些寄存器的读写周期通常小于2ns。
4. Cache和紧耦合存储器(TCM):为了提高内存访问效率,ARM 处理器通常包含片内Cache和TCM。
片内Cache可以优化内存访问,降低系统的总成本,而TCM是为了弥补Cache访问的不确定性增加的片上存储器。
5. 内存类型:ARM构架的嵌入式系统通常使用不同类型的内存,包括片内SRAM(静态随机存取存储器)提供高速内存访问,以及片外DRAM(动态随机存取存储器)或SDRAM(同步动态随机存取存储器)作为主存储器。
这些存储器的容量通常在8MB到512MB之间。
ARM处理器系统初始化过程

ARM处理器系统初始化过程在嵌入式系统中,ARM处理器是最常用的处理器之一。
ARM处理器的系统初始化过程可以分为硬件初始化和软件初始化两个阶段。
本文将介绍ARM处理器系统初始化的具体流程。
硬件初始化在系统上电后,ARM处理器进入硬件初始化阶段。
主要任务是对处理器的外设进行初始化。
1.初始化时钟系统:ARM处理器的时钟系统是处理器运行的根底,因此在初始化过程中需要设置适当的时钟频率和时钟源。
这可以通过配置PLL〔Phase Locked Loop〕或者外部晶振来实现。
2.使能缓存:缓存是提高处理器性能的关键。
在初始化过程中,需要配置L1缓存和L2缓存的大小、映射方式等参数,并使能它们。
3.配置中断控制器:中断是处理器与外设交互的一种方式。
在初始化过程中,需要配置中断控制器,使其能够正确地响应外设发出的中断请求。
4.初始化外设:根据系统的需求,初始化各个外设,包括串口、SPI、I2C等外设。
这些外设的初始化过程涉及到设备的存放器配置、中断使能等操作。
5.设置存储器映射:ARM处理器通过存储器映射来访问外部存储器。
在初始化过程中,需要设置存储器映射表,使处理器能够正确地访问外部存储器。
软件初始化在硬件初始化完成后,ARM处理器进入软件初始化阶段。
主要任务是加载和运行操作系统及应用程序。
1.复位处理器:在软件初始化过程中,可以选择复位处理器,将处理器重新置于初始状态。
这通常通过将Reset引脚拉低来实现。
2.加载引导程序:引导程序是系统启动的第一段代码,其功能是加载操作系统的核心代码。
在软件初始化过程中,需要将引导程序加载到适当的内存位置,并设置处理器的执行起点。
3.初始化操作系统:一旦引导程序加载完成,操作系统开始初始化。
这包括初始化内核数据结构、初始化设备驱动程序、启动任务调度器等。
4.加载应用程序:在操作系统初始化完成后,可以选择加载应用程序。
应用程序的加载可以通过文件系统来实现,将应用程序从存储设备读取并加载到内存中。
ARM外围接口电路工作原理

ARM外围接口电路工作原理ARM11是一种基于ARM架构设计的32位处理器。
它具有较高的计算能力和低功耗特性,被广泛应用于嵌入式系统和移动设备中。
ARM11外围接口电路是ARM11芯片上的硬件模块,用于扩展处理器的功能和连接外部设备。
1.串行接口ARM11芯片上的串行接口可以实现与外部设备的通信。
它一般包括UART(通用异步接收器/发送器)和SPI(串行外设接口)等模块。
UART模块实现了与外部设备的异步串口通信,而SPI模块则是一种同步串行接口,用于高速数据传输。
2.并行接口ARM11芯片上的并行接口通常用于与外部存储器、显示器、键盘等设备的连接。
ARM11芯片一般配备了SRAM接口、SDRAM接口和LCD接口等模块。
SRAM接口和SDRAM接口用于连接外部存储器,实现数据的读写操作。
LCD接口用于连接液晶显示器,实现图像和文字的显示。
3.时钟时钟模块是ARM11芯片中非常重要的一个模块,它用于提供系统的时钟信号。
ARM11芯片一般具有内部和外部时钟源,通过时钟分频器将外部时钟源分频后,提供给不同的模块使用。
时钟模块还负责产生处理器的时钟信号,控制处理器的工作频率。
4.中断控制中断控制模块用于处理外部的中断请求信号,并向处理器发送中断请求。
当外部设备需要与ARM11芯片通信或请求处理器的服务时,会产生中断请求信号。
中断控制模块会接收到这个信号,然后通过处理器的中断控制单元将中断请求传递给处理器,使得处理器能够及时响应和处理。
当需要与外部设备通信时,首先需要配置相关的接口模块。
比如,在使用串行接口进行通信时,需要设置相关的波特率和数据格式;在使用并行接口连接显示器时,需要配置显示器的分辨率和显示模式。
然后,通过编程方式向相应的接口模块写入数据或读取数据,实现与外部设备的数据交互。
在整个工作过程中,时钟模块起着关键的作用。
时钟模块提供稳定的时钟信号,保证各个接口模块按照预定的时序要求工作,从而实现数据的准确传输。
ARM存储系统MMU

编码 0b00 0b01
访问类型 没有访问权限 客户类型
0b10 保留 0b11 管理者权限
含义 这时访问域将产生访问失效
根据页表中地址变换条目的访问权限控制位决定是否 允许特定的存储访问。 将产生不可预知的结果 不会产生访问失效
23
关于快表的操作
1. 使无效快表的内容(由CP15中的C8控制)
指令 MCR p15,0,Rd,c8,c7,0 MCR p15,0,Rd,c8,c7,1 MCR p15,0,Rd,c8,c5,0 MCR p15,0,Rd,c8,c5,1 MCR p15,0,Rd,c8,c6,0 MCR p15,0,Rd,c8,c6,1
不能访问
0b00 0 1 只读
只读
0b00 1 1 不可预测 不可预测
0b01 X X 读/写 不能访问
0b10 X X 读/写 只读
0b11 X X 读/写 读/写
22
MMU中的域
域是段、大页和小页的集合。ARM 结构支持16 个域。
对域的访问由域访问控制寄存器( CP15的寄存器C3 )的两 个位字段控制。即,C3中的每2位控制一个域的访问控制特 性。其编码及含义如下表:
Rd 0 虚拟地址 0 虚拟地址 0 虚拟地址
含义 使无效指令和数据Cache 使无效整个Cache中的单个地址变换条目 使无效指令Cache 使无效指令Cache中的单个地址变换条目 使无效数据Cache 使无效数据Cache中的单个地址变换条目
2. 锁定快表的内容(由CP15中的C10控制)
24
CP15中的寄存器C1
F(bit[10]): 由生产商定义。 Z(bit[11]): 使能跳转预测, 0 = 禁止, 1 = 使能。 I(bit[12]): 当数据和指令cache分开时,使能指令cache。 0 = 禁
arm与内存数据访问有关的指令

arm与内存数据访问有关的指令在计算机科学中,ARM(Advanced RISC Machines)是一种广泛使用的指令集架构(ISA),它适用于各种应用,从移动设备到嵌入式系统和超级计算机。
ARM架构的突出特点之一是其能够高效地访问内存数据的能力。
在本文中,我们将探讨与ARM架构中内存数据访问相关的指令。
ARM架构中的指令具有灵活性和可扩展性,可以执行各种读取和写入内存数据的操作。
下面是一些与内存数据访问相关的指令:1. LDR(Load Register):这个指令用于将内存中的数据加载到寄存器中。
例如,LDR R0, [R1]指令将从存储在地址R1处的内存中获取数据,并将其加载到寄存器R0中。
2. STR(Store Register):这个指令用于将寄存器中的数据存储到内存中的指定位置。
例如,STR R0, [R1]指令将将寄存器R0中的数据存储在地址R1处的内存中。
3. LDM(Load Multiple):这个指令用于从内存中连续加载多个数据到多个寄存器中。
例如,LDM R0!, {R1-R3}指令将从地址R0开始的连续内存区域加载数据到R1、R2和R3寄存器中,同时更新R0的值。
4. STM(Store Multiple):这个指令用于将多个寄存器中的数据一次存储到内存中。
例如,STM R0!, {R1-R3}指令将寄存器R1、R2和R3中的数据一次性存储到地址R0开始的连续内存区域中,并更新R0的值。
5. SWP(Swap Data):这个指令用于原子地交换内存中的数据与寄存器中的数据。
例如,SWP R0, R1, [R2]指令将内存地址R2处的数据与寄存器R0的值进行交换,并将交换前的内存数据加载到R1中。
6. LDRB(Load Register Byte):这个指令用于从内存中加载一个字节大小的数据到寄存器中。
例如,LDRB R0, [R1]指令将从地址R1处的内存加载一个字节的数据,并将其加载到R0寄存器中。
arm9 芯片

arm9 芯片ARM9芯片是一款由ARM公司开发的低功耗、高性能的嵌入式微处理器芯片。
它以其出色的性能和低功耗而在嵌入式系统领域得到了广泛应用。
下面将从架构、特征、应用领域等方面对ARM9芯片进行详细介绍。
首先,ARM9芯片基于ARMv5TE架构,采用了精简指令集(RISC)的设计理念,使得该架构具有高效的指令执行速度和低功耗的优点。
ARM9架构还支持32位数据宽度,具有多种不同的运行模式,如用户模式、系统模式和特权模式,从而适应不同的应用场景。
此外,ARM9还支持多种外部设备的接口,如UART、SPI、I2C等,便于与其他外设进行通信。
其次,ARM9芯片具有出色的性能。
它采用了高度流水线的执行单元,能够以较高的频率运行,同时还具备快速的内存访问能力。
此外,ARM9芯片还配备了独立的存储管理单元(MMU),可以提供虚拟内存映射和内存保护功能,从而提高系统的安全性和稳定性。
ARM9芯片还具有低功耗的优势。
它采用了先进的CMOS工艺,有效降低了功耗。
此外,ARM9芯片通过硬件加速器和高效的数据缓存等技术,能够实现高性能的同时减小功耗。
这使得ARM9芯片非常适合电池供电的移动设备和低功耗要求的嵌入式系统。
ARM9芯片在各个领域都有广泛的应用。
首先,它可以应用于智能手机和平板电脑等移动设备中,提供强大的计算能力和出色的功耗控制。
其次,ARM9芯片也广泛应用于智能家居、智能交通等物联网领域,通过其高度集成和低功耗特性,实现设备的互联互通。
此外,ARM9芯片还可以应用于嵌入式控制系统、工业自动化等需求高性能和低功耗的领域。
综上所述,ARM9芯片作为一款具有出色性能和低功耗的嵌入式微处理器芯片,在各个领域都有广泛的应用前景。
随着技术的不断发展和完善,相信ARM9芯片将会在未来发展更加繁荣。
关于arm的统一编制与内存映射机制

关于arm的统一编制与内存映射机制Arm是统一编址的,也就是外设和内存进行统一的编址,共同形成了4G物理地址空间(32位为例子)。
大家知道操作外设时,实际上操作的是读写设备相关的寄存器,这些与外设相关的寄存器与不同操作模式下R0——R15那些寄存器是不同的,这些寄存器并不是所谓的物理上的寄存器,实际上是所谓的IO端口,通常会有控制、状态、数据的分类。
他们被连续地编址,对于其编址的方式有两种一种是IO映射、一种是内存映射。
IO映射是对x86为例的复杂指令集来说的,需要专门的IO控制指令,不详谈。
内存映射是对于统一编制的精简指令集计算机arm等来说的。
具体的方法就是将IO端口映射成和内存一样的物理地址,然后与内存一起进行统一编址,或者说成为了内存的一部分,当然还可以理解内存映射的意思是可以用访问内存的方式进行IO地址的访问,内存和IO地址一起编码为cpu识别的地址哦。
然后内存+IO端口地址=4GB 的寻址空间。
那么接下来还有个问题就是这种编址的硬件实现?这就要详见arm的AMBA(AdvancedMicrocontroller Bus Architecture)了,这是目前芯片总线的主流标准。
共定义了3组总线:高性能总线(AdvancedHigh Performance Bus,AHB)、系统总线(AdvancedSystem Bus,ASB)和外设总线(Advanced PeripheralBus,APB)。
不同的总线上挂接着不同的外设和存储器,大部分由三态门控制。
比如,当AHB总线上的主设备读写从设备时,发出的地址经过AHB总线的译码器产生该地址所对应从设备的选择信号,选中从设备;这样就可以对从设备进行读写啦。
或者可以这样想AHB总线上的译码器根据地址产生相应的片选信号,选中对应的设备。
对于硬件的实现我们这是简单地理解以便更好地体会上述编址。
涉及到具体的硬件读写操作,地址的硬件实现会提到很多的译码器、三态门、总线、还有时序等等具体情况具体分析,在此不做详述。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NAND Flash控制器结构如图3-2所示。NAND Flash控制器bootloader过程如图3-3 所示。图中符号,CLE:Command Latch Enable,ALE:Address Latch Enable, nFRE:Flash Read Enable,nFCE:Flash Chip Enable,nFWE:Flash Write Enable, FRnB:Flash Ready/Busy output(表Flash Nand芯片状态,高电平表准备好,低电平 表Nand Flash忙)。
⑶ NAND Flash存储器时序
NAND Flash存储器时序如图3-4、3-5所示。
图3-4 CLE和ALE时序(TACLS=1,TWRPH0=0,TWRPH1=0)
图3-5 nWE和nRE时序(TWRPH0=0, TWRPH1=0)
⑷ 引脚配置
● OM[1:0] = 00:使能NAND Flash 存储器引导启动。 ● NCON:NAND Flash存储器选择(普通/先进)。
S3C2440A包含以下特性:
● 大/小端(通过软件选择)。
● 地址空间:每个Bank有128M字节(总共1G/8个Bank)。
● 除了BANK0(16/32位)之外,其它全部BANK都可编程访问宽度(8/16/32位)。
● 总共8个存储器Bank,6个存储器Bank为ROM,SRAM等,其余2个存储器Bank
第三章 ARM内存映射与存储器接 口
本章主要内容
3.1 ARM9存储器接口 3.2 Cortex M4存储器接口 3.3 半导体存储器种类、Nor Flash与Nand Flash存
储器简介 思考与习题
3.1 ARM9存储器接口
3.1.1 S3C2440A存储器控制器
S3C2440A 存 储 器 控 制 器 为 访 问 外 部 存 储 的 需 要 器 提 供 了 存 储 器 控 制 信 号 。
0:普通NAND Flash(256字或512字节页大小,3或4个地址周 期)。
1:先进NAND Flash(1K字或2K字节页大小,4或5个地址周期)。 ● GPG13:NAND Flash存储器页容量选择。
0:页=256字(NCON=0)或页=1K字(NCON=1)。 1:页=512字节(NCON=0)或页=2K字节(NCON=1)。 ● GPG14:NAND Flash存储器地址周期选择。 0:3个地址周期(NCON=0)或4个地址周期(NCON=1)。 1:4个地址周期(NCON=0)或5个地址周期(NCON=1)。 ● GPG15:NAND Flash存储器总线宽度选择。 0:8位宽度。 1:16位宽度。 注意:配置引脚NCON,GPG[15:13]将在复位期间被取出(fetched)。
为ROM,SRAM,SDRAM等。
● 7 个固定的存储器Bank起始地址。
● 1 个可变的存储器Ban周期可编程。
● 外部等待扩展总线周期。
● 支持SDRAM自刷新和掉电模式。
DDR是DR SDRAM的简称,Double Data Rate Synchronous Dynamic Random Access
址是最高位的地址,进行bank选择。
回本章目录
3.1.2 NAND Flash控制器
NOR Flash存储器价格较高,而SDRAM和NAND Flash 存储器更经济,这样促使了一些用户在NAND Flash中执 行引导代码,在SDRAM 中执行主代码。S3C2440A引导 代码可以在外部NAND Flash存储器上执行。为了支持 NAND Flash的BootLoader,S3C2440A配备了一个内置 的 SRAM 缓 冲 器 , 叫 做 “Steppingstone” 。 引 导 启 动 时 , NAND Flash 存 储 器 的 开 始 4K 字 节 将 被 加 载 到 Steppingstone中并且执行加载到Steppingstone的引导代码。 通常引导代码会复制NAND Flash的内容到SDRAM中。 通过使用硬件ECC,有效地检查NAND Flash数据。在复 制完成的基础上,将在SDRAM中执行主程序。
图3-2 NAND Flash控制器结构图[A1]
图3-3 NAND Flash控制器bootloader示意图
⑵ 软件模式
S3C2440A只支持软件模式的访问。使用该模式,你 可以完整的访问NAND Flash 存储器。NAND Flash控 制器支持NAND Flash存储器的直接访问接口。
① 写命令寄存器=NAND Flash存储器命令周期。 ② 写地址寄存器=NAND Flash存储器地址周期。 ③ 写数据寄存器=写入数据到NAND Flash存储器 (写周期)。 ④ 读数据寄存器=从NAND Flash 存储器读取数据 (读周期)。 ⑤ 读主ECC寄存器和备份ECC 寄存器=从NAND Flash存储器读取数据。 注释:软件模式下,你必须用定时查询或中断来检 测RnB状态输入引脚。
Memory。SDRAM的数据线与地址线是分开的。数据线一般是16根(D15~D0)。地
址线的行地址与列地址是复用的。SDRAM有突发长度(Burst Length,BL)和Bank
的概念。突发长度是指同一行中相邻存储单元的长度,即列地址的宽度,是能进行
连续连续数据传输的存储单元的数量。DDR有列地址,行地址和Bank地址。Bank地
⑴ NAND Flash控制器功能特性
NAND Flash控制器功能特性如下: ● 引导启动:引导代码在复位期间被传送到4K 字节的Steppingstone。 传送后,引导代码将在Steppingstone中执行。 ● NAND Flash 存储器接口:支持256 字,512 字节,1K 字和2K 字 节页。 ● 软件模式:用户可以直接访问NAND Flash 存储器,例如此特性 可用于NAND Flash 存储器的读/擦除/编程。 ● 接口:8/16 位NAND Flash 存储器接口总线。 ● 硬件ECC 生成,检测和指示(软件纠错)。 ● SFR I/F:支持小端模式是按字节/半字/字访问数据和ECC 数据寄 存器,和按字访问其它寄存器。 ● SteppingStone 接口:支持大/小端模式的按字节/半字/字访问。 ● SteppingStone 4KB 内部SRAM 缓冲器可以在NAND Flash引导启 动后用于其他用途。