第5章 ARM系统中的存储器设计与管理
存储器管理的课程设计

存储器管理的课程设计一、课程目标知识目标:1. 学生理解存储器管理的基本概念,包括内存分配、回收、碎片处理等。
2. 学生掌握存储器管理的主要技术,如分页管理、分段管理、虚拟内存等。
3. 学生了解不同操作系统中的存储器管理策略及其优缺点。
技能目标:1. 学生能够运用所学知识,设计简单的内存分配算法,解决实际问题。
2. 学生能够分析并优化存储器管理策略,提高内存利用率和系统性能。
3. 学生通过案例分析和实践操作,培养解决问题的能力和团队协作精神。
情感态度价值观目标:1. 学生培养对计算机操作系统和存储器管理技术的兴趣,提高学习积极性。
2. 学生认识到存储器管理在计算机系统中的重要性,增强对操作系统整体架构的认识。
3. 学生在课程学习过程中,培养严谨、客观、合作、创新的精神风貌。
课程性质分析:本课程属于计算机科学领域,涉及操作系统原理及其应用。
针对高年级学生,课程内容具有一定的理论深度和实用性。
学生特点分析:学生具备一定的编程基础和操作系统知识,具有较强的逻辑思维能力和动手能力。
在学习过程中,注重理论与实践相结合,培养学生的实际操作能力。
教学要求:1. 结合教材内容,注重知识点的深入讲解和实际应用。
2. 采用案例教学,引导学生主动参与,培养解决问题的能力。
3. 强化实践环节,让学生在实际操作中掌握存储器管理的核心技术和方法。
4. 注重课堂互动,激发学生的学习兴趣,提高课堂教学效果。
二、教学内容1. 存储器管理概述:介绍存储器管理的基本概念、作用和重要性。
- 内存分配与回收- 内存碎片处理- 存储器保护机制2. 分页管理技术:讲解分页管理的原理、实现方法及其优缺点。
- 分页机制- 页表- 分页置换算法3. 分段管理技术:分析分段管理的原理、实现方法及其优缺点。
- 分段机制- 段表- 段页式管理4. 虚拟内存技术:探讨虚拟内存的基本概念、实现方法及其在操作系统中的应用。
- 虚拟内存原理- 请求分页/分段- 页面置换策略5. 存储器管理案例分析:分析典型操作系统中的存储器管理策略。
1-5章《ARM嵌入式C编程标准教程》

高等学校嵌入式系统设计教材
ARM9处理器C语言编程标准教程
侯殿有 才华 编著
人民邮电出版社
第一章 ARM技术简介
1.1 ARM处理器简介
火龙果整理
ARM处理器是一种低功耗高性能的32位RISC (精简指令系统) 处理器。本章将其从结构入手进行分析,基于目前流行的 ARM920T核详细描述其硬件结构和编程。 ARM处理器共有31个32位寄存器,而其中16个可以在任何模 式下看到。它的指令为简单的加载与存储指令(从内存加载某个 值,执行完操作后再将其放回内存)。ARM一个有趣的特点是 它所有的指令都带有条件。例如用户可以测试某个寄存器的值, 但是直到下次使用同一条件进行测试时,才能有条件地执行这些 指令。另一个特征是可以在加载数值的同时进行算术和移位操作。 它可以在几种模式下操作,包括通过使用SWI(softwarinterrupt 软件中断)指令从用户模式进入到系统模式。
火龙果整理
· 5级流水线结构,即取指(F)、指令译码(D)、 执行(E)、数据存储访问(M)和写寄存器 (W)。 · 16K字节数据缓存,16K字节指令缓存。 · 写缓冲器:16字的数据缓冲器,4地址的地址 缓冲器,软件控制消耗。 · 标准的ARMv4存储器管理单元(MMU): 区域访问许可,允许以1/4页面大小对页面进行访 问,16个嵌入域,64个输入指令TLB及64个输入 数据TLB。 · 8位、16位、32位的指令总线与数据总线。
1.1.1 ARM7系列微处理器
火龙果整理
ARM7系列微处理器是低功耗的32位RISC处理器,最适合用于 对价位和功耗要求较低的消费类应用。ARM7系列有如下特点: ·具有嵌入式ICE—RT (Internet Communications Engine-Route 因特网通信)逻辑,调试开发方便。 ·极低的功耗,适合对功耗要求较低的应用,如便携式产品。 ·能够提供0.9MIPS(Million Instructions Per Second百万条/ 秒)/MHz的三级流水线结构。 ·对操作系统的支持广泛,如Windows CE、Linux、Palm OS等。 ·指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便 于用户的产品升级换代。 ·主频最高可达130MHz,高速的运算处理能力能胜任绝大多数 的复杂应用。
第五章 存储器接口设计与应用

综上所述,一个较大的存储系统是由各种不同类 型的存储设备构成,是一个具有多级层次结构的 存储系统。该系统既有与CPU相近的速度,又有 极大的容量,而成本又是较低的。其中高速缓存 解决了存储系统的速度问题,辅助存储器则解决 了存储系统的容量问题。采用多级层次结构的存 储器系统可以有效的解决存储器的速度、容量和 价格之间的矛盾。
5.2.2 SDRAM工作原理
SDRAM在系统中主要用作程序的运行空间、数据 及堆栈区。当系统启动时,CPU首先从复位地址 0x0处读取启动代码,在完成系统的初始化后,程 序代码调入SDRAM中运行以提高系统的运行速度 ,同时,系统及用户堆栈、运行数据也都放在 SDRAM中。 SDRAM存储一个位的消息只需要一只晶体管,但 是需要周期性地充电,才能使保存的信息不消失 。 SDRAM共用它的行、列地址线,行地址和列地址 的选通分别有行地址选通引脚CAS和列地址选通 引脚RAS来进行分时控制。
3
5.1 存储器概述
存储器是计算机系统中的记忆设备,用来存放程 序和数据。CPU执行指令,而存储器为CPU存放 指令和数据,从物理层面上来说,存储器系统是 一个线性的字节数组,而CPU可以访问每个存储 器位置。计算机中全部信息,包括插入的原始数 据、计算机程序、中间运行结果和最终运行结果 都保存在存储器中,它根据控制器指定的位置存 入和取出信息。有了存储器,计算机才有记忆功 能,才能保证正常工作。
S5PV210的引导区分为两部分,分别是0x00000x1FFF_FFFF和0XD002_0000-0xD003_7FFF的空 间。系统上电后,从引导区开始执行Boot Loader 程序。 S5PV210的SROM分为6个Bank,每个Bank有 128MB。可以支持8/16位的NOR Flash、PROM和 SRAM存储器,并且支持8/16位的数据总线。 比较特殊的是Bank0,它只支持16位带宽,不能改 变。
ARM存储管理单元MMU和存储保护单元MPU

ARM存储管理单元MMU和存储保护单元MPU展开全文MMU提供的一个关键服务是,能使各个任务作为独立的程序在其自己的私有存储空间运行.地址转换过程允许运行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置.区域可以是活跃的,也可以是睡眠的:活跃区域包含当前系统正在使用的代码或数据;睡眠区域包含当前不使用,但可能在短时间内变为活跃的代码或数据.睡眠区域是被保护的,因此当前正在运行的任务是不能访问的.MPU和MMU的主要区别是,MMU中增加了额外的硬件,以支持虚存.一个重定位寄存器只能转换一块存储空间.这块存储空间的大小由虚拟地址的偏移量部分所占的位数所决定.ARM的MMU中临时存放转换数据的一组重定位寄存器实际上是一个由64个重定位寄存器组成的全相联cache.这个cache就是转换旁路缓冲器--TLB.TLB缓存最近被访问的页的转换数据.MMU 还使用主存中的表来存放描述系统中用到的虚拟存储器映射数据,这些转换数据的表就是页表.页表中的每个项代表了将虚拟存储器的一个页转换到物理存储器的一个页帧所需要的所有信息.在MMU中,区域被定义为一组页表的集合,并作为虚存中的连续页完全由软件控制.除了L1一级页表外,所有其他的页表都代表虚存的1MB空间.如果一个区域的大小大于1MB或者它跨过页表的1MB边界地址,那么就必须使用一组页表来描述这个区域.页表可以驻留在存储器中,而不必映射到MMU硬件.当在2个应用程序任务间实现上下文切换时,处理器其实要发生多次上下文切换.它先从用户模式任务切换到内核模式任务,以处理准备运行下一个应用程序任务时的上下文数据的移动;然后,它从内核模式任务切换到下一个上下文的新的用户模式任务.MMU在转换一个地址时失败,就会产生一个中止异常.MMU只有在转换失败,权限错误和域错误时,才会中止.L1住页表包含2种类型的页表项:保存指向二级页表起始地址指针的页表项和保存用于转换1MB页的页表项.L1页表也称为段页表.当L1页表作为页目录时,其页表项包含的是1MB虚拟空间的L2粗页表或L2细页表指针;当L1页表用于转换一个1MB的段时,其页表项包含的是物理存储器中1MB页帧的首地址.目录页表项和1MB的段页表项可以共存于L1主页表.CP15:c2寄存器保存转换表基地址TTB--指向L1主页表在虚存中的位置.TLB只支持两种类型的命令:清除TLB和锁定TLB中的转换数据.存储器访问时,MMU将虚拟地址的一部分与TLB中的所有值进行比较.如果TLB中已有所要的转换数据,即为一次TLB命中,则由TLB提供物理地址的转换数据.如果TLB中不存在有效的转换数据,即为一次TLB失效,则MMU会由硬件自动处理TLB失效,通过主存中的页表搜索有效的转换数据,并将其装入TLB的64行的一行.如果TLB中的某一行是锁定的,则当TLB清除命令发出时,它仍然保留在TLB中.在受保护的系统中,主要有两类资源需要监视:存储器系统和外围设备.存储器中对区域的访问可以是读/写,只读或不可访问,基于当时的处理器模式--管理模式或用户模式,还有一些附加的权限.区域还有控制cache和写缓冲器属性的cache写策略.当处理器访问主存的一个区域时,MPU比较该区域的访问权限属性和当时的处理器模式.如果请求符合区域访问标准,则MPU允许内核读/写主存;如果存储器请求导致存储器访问违例,则MPU产生一个异常信号.区域与内核是冯.诺依曼结构还是哈佛结构无关.每个区域通过0~7的号码来标识和引用.区域的属性如下:(1)区域可以相互重叠;(2)每个区域都分配有一个优先级,该优先级与分配区域的权限无关;(3)当区域重叠时,具有最高优先级的区域的属性可以覆盖其他区域的属性,优先级仅作用于重叠部分的地址;(4)区域的起始地址必须是其大小的倍数;(5)区域的大小可以是4KB~4GB之间的任何2的乘幂;(6)访问所定义区域外的存储器将产生异常.如果是内核预取指令,则MPU产生预取指令中止异常;如果是存储器数据请求,则产生数据中止异常.在启用存储器保护单元之前,必须至少定义一个数据区域和一个指令区域,而且必须在启用cache和写缓冲器之前(或同时)启用存储器保护单元.控制器通过设置CP15的主寄存器c1~5来配置MPU.通过配置寄存器c2和c3来设置区域的cache和写缓冲器的属性,寄存器c5控制区域的访问权限,在寄存器c6里有8个或16个次寄存器用来定义每个区域的大小和位置.初始化MPU,cache和写缓冲器需要以下步骤:(1)使用CP15:c6来定义指令和数据区域的大小和位置(2)使用CP15:c5来设置每个区域的访问权限(3)分别使用CP15:c2和CP15:c3来设置每个区域的cache和写缓冲器属性(4)使用CP15:c1来使能cache和MPU每个内核有3个CP15寄存器用来控制区域的cache和写缓冲器属性.其中CP15:c2:c0:0和CP15:c2:c0:1两个寄存器保存D- cache和I-cache区域属性;第三个寄存器,CP15:c3:c0:0用于保存区域写缓冲器属性,并应用于存储器数据区域.当配置数据区域时,区域的cache位和写缓冲器位一起决定区域的策略.写缓冲器位有2个用途:使能和禁止区域的写缓冲器和设置区域的cache策略.区域的cache位控制写缓冲器位的作用.当cache位为0时,写缓冲器位为1,则使能写缓冲器;写缓冲器位为0,则禁用写缓冲器.当cache位为1时,cache和写缓冲器都被使能,此时写缓冲器位决定cache策略.若写缓冲器位为0,则区域使用直写策略;若写缓冲器位为1,则区域使用回写策略.。
第5章.LPC2000系列ARM(1)

串口 JTAG
周立功单片机
5.3 存储器寻址
• 片外Flash编程方法(LPC2200):
在CPU上运行一个装载程序(Loader,一般由用 户编写),该程序通过串口接收要烧写的数据,然 后擦除编程Flash。
ARM7 局部总线 SRAM Flash AHB To VPB 桥 ARM7TDMI-S CPU 系统功能
AHB总线
VIC EMC
外部中断
TIMER0/1 ADC
I2C串行接口
SPI串行接口 UART0 & 1 CAN 看门狗定时器
看门狗定时器带有内部分频器, 可以方便设臵溢出时间,在软 件使能看门狗后只有复位可以 禁止(具有调试模式);
LPC2294
LPC2131 LPC2132 LPC2134
144
64 64 64
16KB
8KB 16KB 16KB
256KB
32KB 64KB 128KB
8
8 8 双8路
4
- - -
LPC2136
LPC2138
64
64
16KB
32KB
256KB
512KB
双8路
双8路
-
-
带1路 DAC
周立功单片机
• 芯片内部框图
周立功单片机
5.2 引脚配置
• LPC2000系列芯片外形
LPC2114/2124
LPC2210/2212/2214
周立功单片机
5.2 引脚配置
• 引脚功能选择使用示例
LPC2000系列微控制器的引脚一般是多个功 能复用,但是同一引脚在同一 引脚在同一时刻只 能使用其中一个功能,这可以通过设臵PINSELx寄 存器来选择,详细介绍见“引脚连接模块”小节。
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系统的硬件设计,指的是基于ARM架构的处理器和相关硬件的设计和开发。
ARM(Advanced RISC Machine)是一种精简指令集(RISC)架构,被广泛应用于移动设备、嵌入式系统和低功耗应用等领域。
1.处理器设计:ARM处理器是ARM系统的核心组件,它负责执行指令和管理系统资源。
处理器设计包括指令集架构的设计和处理器核心的设计。
ARM处理器的指令集包括基本指令、浮点指令和SIMD指令等,它们需要能够满足应用的需求。
处理器核心的设计包括流水线架构、缓存设计、乱序执行和内存管理单元等。
这些设计需要考虑性能、功耗和面积等因素。
2.外设接口设计:ARM系统通常需要与各种外设进行通信,比如存储器、显示器、网络模块和传感器等。
外设接口设计需要考虑物理接口的设计和通信协议的支持。
物理接口的设计包括电气特性和连接器的选择,通信协议的支持包括串行接口(如UART、SPI和I2C)和并行接口(如AHB和APB)等。
外设接口设计需要保证接口的可靠性和兼容性。
3.存储器设计:ARM系统需要存储器来存储程序和数据。
存储器设计包括存储器类型的选择和存储器控制器的设计。
存储器类型的选择包括内部存储器、外部存储器和缓存存储器等,它们需要能够满足系统的容量和性能要求。
存储器控制器的设计包括存储器接口的设计和存储器访问的调度和控制等。
存储器设计需要考虑时序和电气特性等。
4.总线设计:ARM系统中的各个组件需要通过总线进行通信。
总线设计包括总线的拓扑结构和总线协议的设计。
总线的拓扑结构可以是单总线、多总线或者点对点结构,它需要能够满足系统的容量和性能要求。
总线协议的设计需要保证数据的可靠传输和协调各个组件之间的访问。
5.电源管理:ARM系统需要提供稳定的电源供电。
电源管理设计包括电源管理芯片(PMIC)的选择和电源管理模块的设计。
电源管理芯片需要能够提供多种电压和电流的输出,以满足系统的需求。
电源管理模块的设计需要考虑功耗和散热等因素。
Chap5-基于ARM的硬件系统设计
5
RS-232 串行接口
2
嵌入式
3
开发板
5
第32页,共100页。
32
2410的UART
S3C2410A 的UART (Universal Asynchronous Receiver and Transmitter) 提供了三个独立的异 步串行I/O口,每一个都可以工作在中断模式或 DMA模式,即UART可以产生中断或DMA请求以 在CPU和UART之前传送数据,使用系统时钟, UART最高可以支持230.4K bps 的位传输率。
第28页,共100页。
28
建立通用的I/O接口函数
应用
I/O操作
Create()
Open()
Read()
Write() Close() Loctl()
Destroy()
设备驱动程序
Driver_Create() Driver_Open() Driver_Read() Driver_Write() Driver_Close() Driver_Loctl() Driver_Destroy()
0X0000
I/O设备1
0X0000
主要优点:内存地址空间与I/O接口地址空间分开,互不影响,译码电路较 简单,并设有专门的I/O指令,所以编程序易于区分,且执行时间短,快 速性好。
缺点:只用I/O指令访问I/O端口,功能有限且要采用专用I/O周期和专用I/O控制 线,使微处理器复杂化。
第25页,共100页。
37
第38页,共100页。
38
UART的操作
串口初始化
将寄存器ULCONn、UCONn置零 设置寄存器ULCONn、UCONn、
UBRDIV 延时
操作系统实验报告三存储器管理实验
操作系统实验报告三存储器管理实验操作系统实验报告三:存储器管理实验一、实验目的本次存储器管理实验的主要目的是深入理解操作系统中存储器管理的基本原理和方法,通过实际操作和观察,掌握内存分配与回收的算法,以及页面置换算法的工作过程和性能特点,从而提高对操作系统资源管理的认识和实践能力。
二、实验环境本次实验使用的操作系统为 Windows 10,编程语言为 C++,开发工具为 Visual Studio 2019。
三、实验内容1、内存分配与回收算法实现首次适应算法(First Fit)最佳适应算法(Best Fit)最坏适应算法(Worst Fit)2、页面置换算法模拟先进先出页面置换算法(FIFO)最近最久未使用页面置换算法(LRU)时钟页面置换算法(Clock)四、实验原理1、内存分配与回收算法首次适应算法:从内存的起始位置开始,依次查找空闲分区,将第一个能够满足需求的空闲分区分配给进程。
最佳适应算法:在所有空闲分区中,选择能够满足需求且大小最小的空闲分区进行分配。
最坏适应算法:选择空闲分区中最大的分区进行分配。
2、页面置换算法先进先出页面置换算法:选择最早进入内存的页面进行置换。
最近最久未使用页面置换算法:选择最近最长时间未被访问的页面进行置换。
时钟页面置换算法:给每个页面设置一个访问位,在页面置换时,从指针指向的页面开始扫描,选择第一个访问位为0 的页面进行置换。
五、实验步骤1、内存分配与回收算法实现定义内存分区结构体,包括分区起始地址、大小、是否已分配等信息。
实现首次适应算法、最佳适应算法和最坏适应算法的函数。
编写测试程序,创建多个进程,并使用不同的算法为其分配内存,观察内存分配情况和空闲分区的变化。
2、页面置换算法模拟定义页面结构体,包括页面号、访问位等信息。
实现先进先出页面置换算法、最近最久未使用页面置换算法和时钟页面置换算法的函数。
编写测试程序,模拟页面的调入和调出过程,计算不同算法下的缺页率,比较算法的性能。
《嵌入式系统基础教程》第09讲第5章ARM指令集特点寻址方式和指令
标志
C=1,Z=0 C=0,Z=l
N=V N!=V Z=0,N=V Z=1,N!=V 任何 ARMv3之前
含义
无符号数大于 无符号数小于或等于 有符号数大于或等于 有符号数小于 有符号数大于 有符号数小于或等于 无条件执行(指令默认条件) 该指令从不执行
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
《嵌入式系统基础教程 》第09讲第5章ARM指 令集特点寻址方式和指
令
2023/5/9
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
第5章 ARM指令集和汇编语言程序
l 本章主要介绍以下内容:
l ARM指令集的基本特点 l 与Thumb指令集的区别 l 与x86处理器的区别 l ARM指令格式
l 举例:
l SUB R1,R1,R2 ;R1-R2→R1 l MOV PC,R0 ;PC←R0,程序跳转到指定地址 l LDR R0,[R1],-R2
;读取R1地址上的存储器单元内容并存入R0, ;且R1=R1-R2,后索引偏移 l AND R0,R5,R2 ;R2中存放的是第2操作数 ;该数据属于寄存器方式的第2操作数
运算指令能够访问存储器
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
ARM指令集的编码格式
l 参看ARM指令集编码格式PDF文件
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
ARM指令集的语法
l 一条典型的ARM指令语法如下所示:
寄存器寻址
l 操作数的值在寄存器中,指令中的地址码字段指 出的是寄存器编号,指令执行时直接取出寄存器 值来操作。寄存器寻址指令举例如下:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章ARM系统中的存储器设 计与管理
0x10000000
嵌入式系统软硬件开发与应用实践杨维剑
SDRAM
0x0F000000
DRAM
0x04000000
ROM
0x00000000
图5-2 ROM位于地址0x0的例子
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
5.1 ARM存储器系统概述
• ARM存储系统的体系结构适应不同的嵌 入式应用系统的需要差别很大。最简单 的存储系统使用平板式的地址映射机制, 就像一些简单的单片机系统中一样,地 址空间的分配方式是固定的,系统各部 分都使用物理地址。而一些复杂系统可 能包括下面的一种或几种技术,从而提 供更为强大的存储系统。
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• (1)设置初始入口地址。一个可执行映像必 须有一个入口。一个嵌入式ROM映像入口地址 通常在0,入口可以通过汇编语言ENTRY来定 义。系统中可能有多个入口,当系统中有多个 入口时,其中某个入口必须通过 _entry来指定 为初始入口。如果包含C程序的系统程序中有 main()函数,在C运行时库初始化代码中也 有—个入口。 • (2)设置中断向量。初始化代码必须按如下 原则初始化中断向量:如果ROM位于0,中断 向量包含一系列不能修改的指令跳转到各异常 的响应程序;如果ROM位于其他位置,中断向 量必须被初始化代码动态修改。
• 然而,这种方法有些缺点。ROM通常数 据宽度小(8位或16位),而且与RAM相比 访问速度低,这将大大降低处理器异常 (特别是中断)的响应速度,而且,如果中 断向量表位于ROM中,它将不能在程序 中在线修改。
四川理工学院
杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
图5-3 一个RAM映射到地址0x0的例子
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• 在运行中RAM映射到0需要在复位后运行一定的程序,下面讲述这 样的一个例子: • (1)上电时处理器从地址0取复位向量处的指令; • (2)执行该指令,该指令将跳转到下一条ROM指令的实际地址; • LDR PC,=0x0F000000H • (3)写REMAP寄存器,设置REMAP=l,将RAM映射到地址O; • (4)完成其他的初始化代码。 • 对地址空间进行重映射的存储器解码器,可以通过下面的简单操 作实现。 • Case ADDR(31:24) is • When “0x00” • If REMAP=0 then • Select ROM • Else • Select SRAM • When “0xF0” • Select ROM • When …
四川理工学院 杨பைடு நூலகம்剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• 2.存储器组织 • 在以字节为单位寻址的存储器中有小端和大端 2种方式存储字。这2种方式是根据最低有效字 节与相邻较高有效字节相比,是存放在较低的 地址还是较高的地址来划分的。2种存储方式 如图5-1所示 • 小端格式:较高的有效字节存放在较高的存储 器地址,较低的有效字节存放在较低的存储器 地址。 • 大端格式:较高的有效字节存放在较低的存储 器地址,较低的有效字节存放在较高的存储器 地址。 • ARM处理器能方便地配置为其中任何一种存储 器方式,但其缺省设置为小端格式。
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
0x10000000
ROM位于系统编码地址 0x00000000
嵌入式系统软硬件开发与应用实践杨维剑
代码写入到内存映射寄存器 RPS REMAP
ROM
0x0F000000
ROM
DRAM
0x04000000
DRAM
ROM
0x00000000
RAM
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
图5-1 小端和大端存储路组织
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• 5.2.2 ARM的存储器层次简介 • 存储器层次对用户来说是透明的。存储层次的管理由计算机硬件 和操作系统来完成。高速存储器的每位价格远高于低速存储器, 因此采用层次存储器的目的,还在于以接近低速存储器的平均每 位价格,得到接近高速存储器的性能。典型的计算机存储层次由 多级构成,每级都有特定的容量及速度。 • 1.寄存器组 • 微处理器寄存器组可看作存储器层次的顶层。典型的RISC微处理 器大约有32个32位寄存器,总共128字节,其访问时间为几个ns。 • 2.片上RAM • 如果微处理器要达到最佳性能.采用片上存储器是必需的。它和 片上的寄存器组具有同级的读写速度。与片外存储器相比,它有 较好的功耗效率.并减少了电磁干扰。许多嵌入式系统中采用简 单的片上RAM而不是Cache,因为它简单、便宜、功耗低。但片 上RAM又不能太快(消耗太多功率)、太大(占用太多芯片面积), 因为片上RAM和片上寄存器组具有较高的实现成本,所以一般片 上集成RAM的容量是必须考虑的。
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• 系统中可能包含多种类型的存储器,如 FLASH,ROM,RAM,EEPROM等,不同类型的存储器 的速度和宽度等各不相同。 • 通过使用CACHE及WRITE BUFFER技术缩小处理器 和存储系统速度差别,从而提高系统的整体性能。 • 内存管理部件通过内存映射技术实现虚拟空间到物理 空间的映射。在系统加电时,将ROM/FLASH映射为 地址0x00000000,这样可以进行一些初始化处理;当 这些初始化完成后将RAM地址映射为0x00000000,并 把系统程序加载到RAM中运行,这样很好地解决了嵌 入式系统的需要。 • 引入存储保护机制,增强系统的安全性。 • 引入一些机制保证I/O操作映射为成内存操作后,各种 I/O操作能够得到正确的结果。
• 2.地址0x0处为RAM • 通常RAM比ROM速度快,数据总线宽。 基于这个原因,RAM是存放中断向量表 和中断处理程序更好的选择。然而,如 果上电时RAM位于地址0x0,处理器复位 后将不能取到正确的指令。因此,上电 时ROM必须位于0x0,而正常运行过程 中RAM位于0x0。从复位到正常运行状态 的转变通过写内存映射寄存器来完成, 如图5-3所示。
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
第5章 ARM系统中的存储器设计与管理
主要内容
• • • • • • 5.1 5.2 5.3 5.4 5.5 5.6 ARM存储器系统概述 ARM存储器系统结构 ARM存储器配置 ARM存储器访问与扩展 ARM存储器管理及应用编程 习 题
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• 5.2.1 ARM存储数据类型和存储格式 • 1.ARM支持的数据类型 • ARM处理器支持以下6种数据类型(较早的ARM 处理器不支持半字和有符号字节)。 • 8位有符号和无符导字节。 • 16位有符号和无符导半字,它们以2字节的边 界对齐。 • 32位有符号和无符号字,它们以4字节的边界 对齐。 • ARM指令全是32位的字,并且必须以字为单位 边界对齐且必须以2字节为单位边界对齐。
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• 1.初始化运行环境 • 应用程序开始执行前,一些运行环境必 须被初始化。如果应用程序有操作系统 支持,初始化被BootLoader完成;如果 应用程序没有操作系统,可以通过C运行 时库完成运行环境初始化,并在main()中 调用应用程序。ARM处理器复位后处于 Svc模式,中断禁止和ARM状态。 • 主要完成以下:
四川理工学院 杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• (3)初始化存储器系统。如果系统中有 内存管理或保护单元,必须在初始化前 做两件事情:其一是中断禁止;其二是 没有进行依赖于RAM的程序调用。 • (4)初始化堆栈。初始化代码、初始化 堆栈指针寄存器,可以初始化部分或所 有的堆栈指针。如表5-l所示,这取决于 系统中用到的中断和异常。 • 通常,SP_abt和SP_und在简单系统中没 有用到,当然也可以初始化它们以用于 调试。当在处理器切换到用户模式,开 始执行应用程序前设置SP_und。
四川理工学院
杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑
• 3.片上Cache • 片上Cache存储器的容量为8~32KB,访问时间大概 为10ns。第2级片外Cache,其容量为几百KB,访问 时间为几十ns。 • 4.主存储器 • 高性能PC机系统可能有主存储器可能是几兆字节到 1GB的动态存储器,访问时间大概为50 ns。 • 5.硬盘 • 硬盘作为后缓存储器.容量可能从几百兆字节到几十 个GB,访问时间为几十ms。 • 嵌入式系统通常没有硬盘,因此也不采用页方式。但 是许多嵌入式系统采用Cache,ARM CPU芯片采用了 多种Cache组织结构。
四川理工学院
杨维剑
第5章ARM系统中的存储器设 计与管理
嵌入式系统软硬件开发与应用实践杨维剑