arm异常&mmu

原创 2004年08月12日 20:15:00

异常(Exception):
 是由内/外部源引起的需要处理器干预的一个事件,
每种异常模式有自己的特殊功能寄存器,堆栈。
处理异常需要保护处理器的当前状态,以便在异常处理后可以恢复执行。
当异常发生时,系统强制从固定的地址执行程序

进入异常时,PC->R14和CPSR->SPSR保存PC和处理器状态,返回时则,CPSR->SPSR,R14->PC.

中断是异常的一个子集。未用中断通常指向一个空函数。
ARM提供了两种中断源IRQ,FIQ,发生中断时,会进入相应的IRQ,FIQ异常模式,
由异常处理程序识别不同的中断,调用相应的中断服务程序.


ARM的异常向量表位置:从0x0地址开始,连续8×4字节的空间,具体分配下:

HandleReset # 4
HandleUndef # 4
HandleSwi # 4
HandlePrefetch # 4
HandleAbort # 4
HandleReserv # 4
HandleIrq # 4
HandleFiq # 4


vxWorks下处理:
把相应的异常处理函数指针(或地址)存放在内存0x100处,在0x0的异常向量表存放
PC指针加载指令, LDR PC,[PC,#100],来加栽0x100处的异常处理函数.

vxWorks for arm 只使用了IRQ异常,所有外部中断ISR都以IRQ异常处理例程为入口.
当外部中断引起IRQ异常时,由IRQ异常处理例程调用挂在中断向量表中的ISR.  

中断嵌套:
一般,vxWorks以不可重入方式使用中断,在config.h中定义:
  #define INT_MODE    INT_NON_PREEMPT_MODEL

使用可重入中断方式时,存在中断嵌套,需要保存堆栈和返回地址.(SVC保护模式).

详略...


MMU:
MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。
MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。
此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM内
还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。

一般,使用MMU解决了如下几个问题:

①使用DRAM作为大容量存储器时,如果DRAM的行列是非平方的,
会导致该DRAM的物理地址不连续,这将给程序的编写调试造成极大不便,
而适当配置MMU可将其转换成虚拟地址连续的空间。

②ARM内核的中断向量表要求放在0地址, 对于ROM在0地址的情况,无法调试中断服务程序,
所以在调试阶段有必要将可读写的存储器空间映射到0地址。

③系统的某些地址段是不允许被访问的,否则会产生不可预料的后果,为了避免这类错误,
可以通过MMU匹配表的设置将这些地址段设为用户不可存取类型。

在IXP1200中,SDRAM的物理地址0--24M被提供给微码使用,物理地址0x1800000被映射到
虚拟地址0x0.

注意:在使能MMU后,程序继续运行,程序计数器的指针已经改变,指向了相应的虚拟地址,
在调试中要注意。

 

arm异常&mmu

异常(Exception): 是由内/外部源引起的需要处理器干预的一个事件,每种异常模式有自己的特殊功能寄存器,堆栈。处理异常需要保护处理器的当前状态,以便在异常处理后可以恢复执行。当异常发生时,系统...
  • pluder
  • pluder
  • 2004-08-12 20:15:00
  • 1633

MMU管理机制

from: http://hi.baidu.com/ting160/blog/item/419ba1eb1bce7c38adafd574.html MMU:存储器管理单元         ...
  • hw_henry2008
  • hw_henry2008
  • 2011-09-04 18:56:54
  • 4329

ARM体系之MMU

转载地址:http://blog.csdn.net/lq_automatic/article/details/6973560 1  什么是MMU,MMU的作用 MMU是MemoryMana...
  • qingfengtsing
  • qingfengtsing
  • 2014-05-02 20:54:31
  • 4498

追求卓越之--arm MMU详解

一、MMU的产生       许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可...
  • lutherarcher
  • lutherarcher
  • 2016-07-21 11:13:48
  • 621

WINCE异常向量地址问题

    根据S3C2410芯片的CP15协处理器,可以将其异常向量的地址选择是高地址或是低地址。比如高地址的复位向量是0xFFFF 0000, 低地址的复位向量是0x0000 0000。对于使用ADS...
  • leo_zhang_
  • leo_zhang_
  • 2008-06-02 16:03:00
  • 310

ARM基础:MMU 异常向量表 重映射

/***************************************************************************************************...
  • kangear
  • kangear
  • 2013-01-28 10:14:47
  • 2524

ARM MMU工作原理解析(转载)

最近在学习bootloader制作,学到内存管理单元(MMU)时,对其原理不甚了解,遂在网上搜索了部分相关文章,读到该篇时,发现其对MMU中虚拟地址与物理地址之间的映射讲解比较清晰,易于理解,但在访问...
  • LNF_2373837248
  • LNF_2373837248
  • 2015-12-04 22:58:35
  • 908

ARM存储管理系统MMU

一、虚拟地址和物理地址的区别         CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分。如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有...
  • y695385603
  • y695385603
  • 2013-10-30 18:09:40
  • 3706

详谈 UNIX 环境进程异常退出

原文链接:http://www.ibm.com/developerworks/cn/aix/library/1206_xiejd_unixexception/ 详谈 UNIX 环...
  • sky101010ws
  • sky101010ws
  • 2016-05-23 15:14:20
  • 10502

异常处理表

平台:linux3.10.44 译文:    Linux内核异常处理   原作者:Joerg Pommnitz joerg@raleigh.ibm.com> 当进程陷入内核后,内核经...
  • zangdongming
  • zangdongming
  • 2014-08-13 21:46:51
  • 589
收藏助手
不良信息举报
您举报文章:arm异常&mmu
举报原因:
原因补充:

(最多只允许输入30个字)