- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * CP15即所谓的系统控制协处理器(System Control Coprocessor)。在基于ARM的嵌入式系统中,诸如Cache配置、写缓存配置之类的存储系统管理工作由协处理器CP15完成。在一些没有标准存储管理的系统中,CP15是不存在的。在这种情况下,针对协处理器CP15的操作指令将被视为未定义指令。 * ARM处理器的MMU部件主要完成以下工作: ◇虚拟存储空间到物理存储空间的映射。ARM采用了页式虚拟存储器管理。页的大小有两种:粗粒度和细粒度;换言之有粗页和细页二种之分。 ◇存储器访问权限的控制。 ◇设置虚拟存储空间的缓冲特性 * 保护单元(PU,Protection Unit)提供了一个相当简单的替代MMU的方法来管理存储器。对于不需要MMU的嵌入式系统而言,PU简化了硬件和软件,主要表现在不使用转换表,这样免去了硬件遍历转换表和软件建立与维护转换表。包含Cache的PU操作流程示意图在图4-17中示出。当然,PU的简化处理是有代价的。如果使用PU,则通过MMU获得的高精度存储管理将丧失殆尽。 * 参看沈建华译的图书《ARM嵌入式系统开发》第13章 * S3C44B0X处理器的写缓存区由4个写缓存寄存器构成。每一个写缓存寄存器包括一个32位数据字段,一个28位地址字段和一个2位状态字段。可以通过指令使能或者禁能写缓存器。图4-21给出了写缓存区的结构示意图。 左边的[27:0]地址字段指示写数据的地址;右边的[31:0]数据字段值是将要被写入外部存储器的数据。MAS[1:0]是Memory Access Size信号。用于指示存储系统在读和写周期所要求的数据传送的大小(字节、半字和字)。MAS取值00=8位模式,01=16位模式,10=32位模式,11=保留值。 * * IRQ、FIQ和ABT(指令预取)异常中断处理程序的返回 发生IRQ或者FIQ异常中断时,指令已经执行完毕,PC指向当前指令后面的第3条指令。因此IRQ或者FIQ的异常中断发生时,处理器将程序计数器的计算值(PC-4)保存到LR_IRQ或者LR_FIQ寄存器中。这时LR_IRQ或者LR_FIQ寄存器的值指向当前指令后的第2条指令。参看图4-31。 在指令预取时如果目标地址是非法的,该指令将被标记成有问题的指令,处理器产生指令预取ABT异常。此刻PC的值还没有更新,它指向当前指令后的第2条指令。指令预取ABT异常中断发生时,处理器将程序计数器的计算值(PC-4)保存到异常模式LR_ABT。这时LR_ABT寄存器的值指向当前指令后的第1条指令。 当IRQ、FIQ和ABT(指令预取)异常中断处理程序退出时,前两种情况下应该执行断点的下一条指令,后一种情况下程序应该返回到有问题的指令处(即断点指令),重新读取并执行。无论上述三种情况的那一种,返回操作都应该通过SUBS PC, LR, #4指令实现。该指令将寄存器LR中的值复制到程序计数器PC中,实现程序返回,同时将SPSR_SVC或者SPSR_UND寄存器的内容复制到CPSR中。 如果进入上述三种异常中断处理子程序时使用了数据栈保存执行现场,则退出异常中断处理程序时可以按照下面的指令序列恢复被中断程序的执行现场。参看示例代码4-5。 * IRQ、FIQ和ABT(指令预取)异常中断处理程序的返回 发生IRQ或者FIQ异常中断时,指令已经执行完毕,PC指向当前指令后面的第3条指令。因此IRQ或者FIQ的异常中断发生时,处理器将程序计数器的计算值(PC-4)保存到LR_IRQ或者LR_FIQ寄存器中。这时LR_IRQ或者LR_FIQ寄存器的值指向当前指令后的第2条指令。参看图4-31。 在指令预取时如果目标地址是非法的,该指令将被标记成有问题的指令,处理器产生指令预取ABT异常。此刻PC的值还没有更新,它指向当前指令后的第2条指令。指令预取ABT异常中断发生时,处理器将程序计数器的计算值(PC-4)保存到异常模式LR_ABT。这时LR_ABT寄存器的值指向当前指令后的第1条指令。 当IRQ、FIQ和ABT(指令预取)异常中断处理程序退出时,前两种情况下应该执行断点的下一条指令,后一种情况下程序应该返回到有问题的指令处(即断点指令),重新读取并执行。无论上述三种情况的那一种,返回操作都应该通过SUBS PC, LR, #4指令实现。该指令将寄存器LR中的值复制到程序计数器PC中,实现程序返回,同时将SPSR_SVC或者SPSR_UND寄存器的内容复制到CPSR中。 如果进入上述三种异常中断处理子程序时使用了数据栈保存执行现场,则退出异常中断处理程序时可以按照下面的指令序列恢复被中断程序的执行现场。参看示例代码4-5。 * IRQ、FIQ和ABT(指令预取)异常中断处理程序的返回 发生IRQ或者FIQ异
文档评论(0)