实验2.13存储器重映射

上传人:仙*** 文档编号:35134053 上传时间:2021-10-26 格式:PPT 页数:37 大小:3.16MB
收藏 版权申诉 举报 下载
实验2.13存储器重映射_第1页
第1页 / 共37页
实验2.13存储器重映射_第2页
第2页 / 共37页
实验2.13存储器重映射_第3页
第3页 / 共37页
资源描述:

《实验2.13存储器重映射》由会员分享,可在线阅读,更多相关《实验2.13存储器重映射(37页珍藏版)》请在装配图网上搜索。

1、ARM期末大作业期末大作业江南大学信息工程学院江南大学信息工程学院 微电子微电子0701 黄兆丰黄兆丰 0301070112什么叫重映射?什么叫重映射? 为存储器分配地址的过程称为为存储器分配地址的过程称为存储器映射存储器映射。但是为了增加系统的灵活性,系统中有部但是为了增加系统的灵活性,系统中有部分存储单元可以同时出现在不同的地址上,分存储单元可以同时出现在不同的地址上,这称为存储器这称为存储器 重映射重映射。ARM芯片的地址重映射芯片的地址重映射 映射就是一一对应的意思。重映映射就是一一对应的意思。重映射就是重新分配这种一一对应的关系。射就是重新分配这种一一对应的关系。 我们可以把存储器看

2、我们可以把存储器看成一个具有输出和输入口的黑盒子。如下图所示,输入量是成一个具有输出和输入口的黑盒子。如下图所示,输入量是地址,输出的是对应地址上存储的数据。当然这个黑盒子是地址,输出的是对应地址上存储的数据。当然这个黑盒子是由很复杂的半导体电路具现的,具体的实现的方式我们现在由很复杂的半导体电路具现的,具体的实现的方式我们现在不管。存储单位一般是字节。这样,每个字节的存储单元对不管。存储单位一般是字节。这样,每个字节的存储单元对应一个地址,当一个合法地址从存储器的地址总线输入后,应一个地址,当一个合法地址从存储器的地址总线输入后,该地址对应的存储单元上存储的数据就会出现在数据总线上面。该地址

3、对应的存储单元上存储的数据就会出现在数据总线上面。课本P148-154 / 核心板上的存储块 储存器映射储存器映射给芯片内、外的Flash、RAM、BootBlock和外设进行统一编址。即用地址表示对象。 一般芯片厂商都把这些地址分配好了,用户只能用而不能改。如LPC2290如下表。U13 SST39VF1601 Nor Flash(2M)核心板正面核心板正面核心板背面核心板背面U3 K9F2808U0CNand Flash(16M)片内SRAM(16K)U12MT45W4MW16 PSRAM(8M)U5 CAT1025E2PRAM(2KB)LPC2290片内没有ROM,也是外扩片外的Flas

4、h复习映射示意图复习LPC2290映射图,(三) P9片内SRAM(16K)U3 K9F2808U0CNand Flash(16M)U13 SST39VF1601 Nor Flash(2M)U12MT45W4MW16 PSRAM(8M)U5 CAT1025E2PRAM(2KB)普通的单片机把可执行代码和数据存放到存储器中。普通的单片机把可执行代码和数据存放到存储器中。单片机中的单片机中的CPU从储器中取指令代码和数据。其中存储器从储器中取指令代码和数据。其中存储器中每个物理存储单元与其地址是一一对应而且是不可变的。中每个物理存储单元与其地址是一一对应而且是不可变的。如下图,如下图,CPU读取读

5、取0 x00000000地址上存储单元的过程。地址上存储单元的过程。ARM比较复杂。比较复杂。ARM芯片与普通单片机在存储器地址方面的不芯片与普通单片机在存储器地址方面的不同在于:同在于:ARM芯片中有些物理存储单元的地址可以根据设置变换。芯片中有些物理存储单元的地址可以根据设置变换。就是说一个物理存储单元现在对应一个地址,经过设置以后,这个存就是说一个物理存储单元现在对应一个地址,经过设置以后,这个存储单元就对应了另外一个地址了。下图是随意举了个例子(不要与储单元就对应了另外一个地址了。下图是随意举了个例子(不要与ARM芯片对应),旨在说明地址重映射的过程。下图表示把芯片对应),旨在说明地址

6、重映射的过程。下图表示把0 x00000000地址上的存储单元映射到新的地址地址上的存储单元映射到新的地址0 x00000007上。上。CPU存取存取0 x00000007就是存取就是存取0 x00000000上的物理存储单元。上的物理存储单元。下面图下面图a,图,图b是对是对ARM芯片的两种地址重映射方式的图示。芯片的两种地址重映射方式的图示。 一、一、假设假设我们的应用程序存放在外扩我们的应用程序存放在外扩FLASH当中,那么应用程序的异常向当中,那么应用程序的异常向量表就存放在量表就存放在0 x80000000起始的起始的64个(其中有个(其中有32个存放异常向量)物理存储个存放异常向量

7、)物理存储单元中。但是单元中。但是ARM核发生异常(中断)后是从核发生异常(中断)后是从0 x000000000 x0000003F地址地址范围取异常向量的。所以要把范围取异常向量的。所以要把0 x800000000 x8000003F范围内的存储单元重新范围内的存储单元重新映射到映射到0 x000000000 x0000003F地址范围上。以后地址范围上。以后CPU存取存取0 x000000000 x0000003F地址就是存取地址就是存取0 x800000000 x8000003F范围内的存范围内的存储单元。图储单元。图a、b只显示出第一个异常向量的地址重映射,整个异常向量表的地只显示出第

8、一个异常向量的地址重映射,整个异常向量表的地址重映射等同这个过程。址重映射等同这个过程。 图图a二、图图b描述示了描述示了ARM芯片的另外一种映射方式。这个映射可以由用户决定采用还是不芯片的另外一种映射方式。这个映射可以由用户决定采用还是不采用(相关代码在工程文件的采用(相关代码在工程文件的startup.s中,这个文件是第三方提供,用户可以修改)。这中,这个文件是第三方提供,用户可以修改)。这个映射主要是为了提高应用程序异常相应得速度。当我们把应用程序存放在片内个映射主要是为了提高应用程序异常相应得速度。当我们把应用程序存放在片内FLASH的的时候,异常向量表存放在时候,异常向量表存放在0

9、x000000000 x0000003F存储单元内。每次发生异常,存储单元内。每次发生异常,CPU从从0 x000000000 x0000003F地址上取异常向量。但是对地址上取异常向量。但是对RAM的存取速度远高于对的存取速度远高于对FLASH的的存取速度,所以为了提高异常相应速度我们采取以下做法:存取速度,所以为了提高异常相应速度我们采取以下做法: 图图bStep 1:先把0 x000000000 x0000003F(FLASH)存储单元内的异常向量表复制到0 x400000000 x4000003F(片内RAM的最低端64个字节的存储单元)范围内存储单元中。 Step 2: 把0 x40

10、0000000 x4000003F范围内存储单元地址重新映射到0 x000000000 x0000003F地址范围。 这样做了以后,当异常发生的时候,CPU取异常向量就是从RAM区中的异常向量表中区,速度快了。比如复位中断发生,CPU从地址0 x00000000取指令,但此时由于已经过地址重新映射,这个0 x00000000被地址转换器转换成0 x40000000,CPU实际上是取的RAM区中0 x400000000这个存储单元内的指令(异常向量)。 当然用户可以不进行这种映射。片内FLASH中0 x000000000 x0000003F存储单元具有一模一样的异常向量表。只不过不进行这种处理,

11、异常相应速度慢一点。但是这种速度上的差别很多情况下是不必要在意的。 图中的地址转换器受控制寄存器MENMAP的控制,用户可以设置MENMAP实现对地址重映射的控制。这个地址转换器显然是通过内部硬件电路实现的。 如LPC2290没有片内Flash存储器映射控制寄存器存储器映射控制寄存器MENMAP课本P1650 x000000000 x400000000 x800000000 x7FFFE000存储空间0 xFFFFFFFF内核地址总线存储器地址总线内部Flash内部SRAM外部存储器Boot Block异常向量表32位ARM指令0 x0000003F0 x4000003F0 x7FFFE03F

12、0 x8000003F地址转换器0 x000000000 x0000003F0 x00000040映射的目标存储块MEMMAP11001001内核执行的异常向量表地址范围地址转换器物理存储器的地址空间内核与物理存储器的关系 存储器映射控制原理存储器映射控制原理当MENMAP=2时,如果访问0 x00 x3F的数据,实际上是在对0 x400000000 x4000003F进行访问。同样MENMAP=3时,同样对0 x00 x3F进行访问,就变成访问0 x800000000 x8000003F中的数据/指令了。 LPC2210处理器的重映射机制处理器的重映射机制实验2.13LPC2210处理器重映

13、射原理图 在实验中,程序将首先从外部Flash启动,然后将异常向量表从Flash存储器拷贝到片内SRAM中,并进行存储器重映射,将异常向量表映射到片内SRAM。 片外片外Flash MEMMAP=0MEMMAP=0:开机默认值,Boot装载模式-向量表(0 x00000000-0 x0000003c)映射的是0 x7FFFE000-0 x7FFFF03c中的BootBlock;芯片复位时,启动boot装载程序,boot装载程序检查P0.14口的状态和用户的异常向量,判断是进入ISP状态还是启动用户程序,若启动用户程序,则自动设置MEMMAP=1(片内flash启动)或3(片外程序存储器启动)。

14、 很奇怪的,实验中,当使用无片内flash的LPC2210时即使设置P0.14为高低都没关系,芯片会跳过继而执行片外flash中的代码. MEMMAP=1MEMMAP=1:中断向量表就在片内flash中,地址就是0 x00000000-0 x0000003c,相当于没有映射; MEMMAP=2MEMMAP=2:最为主要的设置,即是重映射的关键之所在,当设置MEMMAP=2时,中断向量表(0 x00000000-0 x0000003c)映射的是片内SRAM中的0 x40000000-0 x4000003c中的值,而因为是SRAM,所以在程序运行的过程中是可以改变的,这样就可以达到重映射的目的啦(

15、中断向量表可以随时修改)。 MEMMAP=3MEMMAP=3:中断向量表就在片外flash中,中断向量表(0 x00000000-0 x0000003c)映射到的是片外flash中的0 x80000000-0 x8000003c中的值;功能上与MEMMAP=1时的差不多,因为一旦程序固化到flash中,即为只读,只是数值映射而已。*实验2.13存储器重映射实验存储器重映射实验1.实验目的实验目的通过实验,熟悉通过实验,熟悉LPC2000系列系列ARM7微控制器的微控制器的存储器重映射机制。存储器重映射机制。2.实验设备实验设备 硬件硬件:PC机一台,机一台,MagicARM2200教学实验开发

16、教学实验开发平台一套。平台一套。 软件软件:Windows98/XP/2000系统,系统,ADS1.2集成集成开发环境。开发环境。3.实验内容实验内容 (1)设置设置MEMMAP=2首先将首先将 0 x400000000 x4000003F地址上的存地址上的存 储单元全部写入储单元全部写入0 x55,单步运行,单步运行 ,同时观,同时观察察 0 x000000000 x0000003F地址上的数地址上的数 据;据;再写入再写入0 xAA,同时观察,同时观察 0 x000000000 x0000003F地址上的数据。地址上的数据。 (2)设置设置MEMMAP=0,观察,观察0 x00000000

17、 0 x0000003F地址上的数据是否地址上的数据是否 与与0 x7FFFE0000 x7FFFE03F地址上的地址上的 数据一致。数据一致。内部SRAMBoot装载程序模式即假设其为中断向量值4.实验预习要求实验预习要求仔细阅读参考文献【仔细阅读参考文献【1】第】第5.3节存储器重节存储器重 映射的说明,第映射的说明,第5.4.8节节P165的存储器映射控制。的存储器映射控制。5.实验步骤实验步骤(1)启动)启动ADS1.2,使用,使用ARM Executable Image for MagicARM2200工程模版建工程模版建 立一个工程立一个工程ReMap_c。(2)在)在user组中

18、的组中的main.c中编写主程序代码。中编写主程序代码。(3)选用)选用DebugInExram生成目标,然后编生成目标,然后编 译连接工程。译连接工程。片外RAM调试模式(4)选择【)选择【Project】【Debug】,】, 启动启动AXD进行进行JTAG仿真测试。仿真测试。(5)打开存储器观察窗口()打开存储器观察窗口(Memory) 设置观察地址为设置观察地址为0 x0, (6)单步运行程序,观察)单步运行程序,观察 0 x000000000 x0000003F地址地址 上的数据。上的数据。 (7)当运行)当运行MEMMAP=0之后,观察之后,观察 0 x000000000 x0000

19、003F地址上地址上 的数据是否与的数据是否与0 x7FFFE000 0 x7FFFE03F地址上的数据是否地址上的数据是否 一致。一致。 6.实验参考程序实验参考程序 存储器重映射实验的参存储器重映射实验的参 考程序见程序清单。考程序见程序清单。贴这个程序是不对的,应该是main.c程序运行前各个存储器的值64字节的中断向量值SRAM中的随机值执行到mina.c断点处 0 x0全清零 MEMMAP=2设置了MEMMAP=2,就等于使得地址0 x0和地址0 x40000000之后的64字节的内容相等实验结果证明重映射正确实验结果证明重映射正确续 结果正确程序运行前各个存储器的值64字节的中断向

20、量值设置了MEMMAP=0,就等于使得地址0 x0和地址0 x7FFFE000之后的64字节的内容相等MEMMAP=0实验结果实验结果在在MEMMAP=2(二进制为(二进制为10)时,进入用户)时,进入用户片内片内RAM模式。单步运行模式。单步运行 ,数据存储单元中的数,数据存储单元中的数据会按照程序由据会按照程序由“00”变成变成“55”。依次点击单步运行依次点击单步运行 ,可以看见观察窗口,可以看见观察窗口表中的数据依次从表中的数据依次从“00”变成变成“55”。如此循环。如此循环。第一个循环结束之后,继续点击单步运第一个循环结束之后,继续点击单步运行行 ,进行第二个循环,将,进行第二个循

21、环,将“55”改成了改成了“AA”。依次点击单步运行,可以清楚看到,观依次点击单步运行,可以清楚看到,观察窗中表内数据察窗中表内数据“55”依次被更改为依次被更改为“AA”。第二个循环结束后,进入第二个循环结束后,进入MEMMAP=0(二进(二进制制00)模式,即)模式,即Boot Block(引导块)模式。如图(引导块)模式。如图所示是观察窗所示是观察窗Tab1中的数据。中的数据。如上图所示为如上图所示为Tab2中的数据,是中的数据,是0 x7fffe000之后一段地之后一段地址的上的数据,对比址的上的数据,对比Tab1中的数据中的数据,不难发现不难发现0 x7FFFE0000 x7FFFE

22、030与与0 x000000000 x00000030上的数据是相同上的数据是相同的。的。对实验结果的分析对实验结果的分析实验开始执行程序,首先进入的是用户片内实验开始执行程序,首先进入的是用户片内RAM模式,模式,即即MEMMAP=2(二进制(二进制10),此模式下,将存储器重映),此模式下,将存储器重映射到片内射到片内RAM 上。上。 即将即将0 x000000000 x0000003F中的数中的数据重映射到片内据重映射到片内RAM0 x400000000 x4000003F 这段地这段地址上。址上。 实验程序中,更改了实验程序中,更改了RAM 上上0 x400000000 x400000

23、3F 这段地址所对应的数据,由于重映射机制的原因,以上这段地址所对应的数据,由于重映射机制的原因,以上两段地址都同时指向这段数据,因此,两段地址都同时指向这段数据,因此, 0 x400000000 x4000003F 上的数据被更改,上的数据被更改, 0 x000000000 x0000003F上上所显示的数据也自然有同样的变化。所显示的数据也自然有同样的变化。当进入当进入Boot Block引导块模式,即引导块模式,即MEMMAP=0(二进(二进制制00),此模式下,将存储器重映射到),此模式下,将存储器重映射到Boot Block上。上。0 x000000000 x0000003F 指向指

24、向0 x7FFFE0000 x7FFFE03F所所对应的数据,这两段地址都指向相同的数据,显示结果相同。对应的数据,这两段地址都指向相同的数据,显示结果相同。7.思考思考(1)实验工程中的启动代码)实验工程中的启动代码Target.c文件,文件, 在在TargetResetInit()函数的()函数的 MEMMAP寄存器的设置依据是什么?寄存器的设置依据是什么?(2)请说明存储器重映射机制在)请说明存储器重映射机制在JTAG调试调试 时的作用。时的作用。(1)实验工程中的启动代码)实验工程中的启动代码Target.c文件,在文件,在Target ResetInit()函数的()函数的MEMMA

25、P寄存器的设置依据寄存器的设置依据 是什么?是什么? MENMAP寄存器:存储器映射控制寄存器。寄存器:存储器映射控制寄存器。MEMMAP寄存器是依据操作对象的情况设置。寄存器是依据操作对象的情况设置。 当当MEMMAP【1:0】=00(Boot Block模式)模式) 当当MEMMAP【1:0】=01(用户片内用户片内Flash模式模式) 当当MEMMAP【1:0】=10(用户片内用户片内RAM模式)模式) 当当MEMMAP【1:0】=11(用户外部存储器模式)用户外部存储器模式) (2)请说明存储器重映射机制在)请说明存储器重映射机制在JTAG调试调试 时的作用。时的作用。 CPU一启动,总是要从一启动,总是要从0地址处取指令来执地址处取指令来执行,行,JTAG调试之后,会从调试之后,会从0地址开始取指令和执地址开始取指令和执行,但是实验理想的开始位置并不在行,但是实验理想的开始位置并不在0地址处,地址处,那么就要通过重映射,把理想开始地址对应的存那么就要通过重映射,把理想开始地址对应的存储单元映射到储单元映射到0地址位置。此时,这些存储单元地址位置。此时,这些存储单元就同时出现在不同的地址上。通过以上方式就可就同时出现在不同的地址上。通过以上方式就可以从理想的位置开始处理数据了,使得系统更灵以从理想的位置开始处理数据了,使得系统更灵活。活。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!