ARM基础:MMU 异常向量表 重映射
2014-11-21 09:04
204 查看
/******************************************************************************************************************
参考:
说明:在学习裸机中断时重新遇到这个几个词,这次就要搞明白了。
******************************************************************************************************************/
这个三个词好长时间都没有搞懂,今天略微有点明白就记下来。物理地址是主线,其它都是陪衬。CPU是只会沿着这条路走的,这路有什么是靠MMU来说的,在0x30000000处以后的地址是内存。只说一点:为什么中断要用MMU。
这是因为异常后,CPU会自动跑到0地址处运行,但是程序在内存中启动后,但是向量表没有在真正的0地址处,在0x30000000这个时候就要出现一个忽悠的,骗它0x30000000就是0地址处,这样才可以。MMU就是一个骗子,CPU是一个憨厚的一个人,它还会跑到0地址处,但是实质的内容其实是和0x30000000地址开始的一样的内容。这就是一个重映射的过程。
中断后也有一个地址,8种不同异常类型对就8个地址,会自动跑到各个地址处执行,但是这个地址是什么代码要靠自己决定的,可以让它"Hello World",也可以什么都不做。
linux分用户态、核心态。两种状态;ARM处理器有7种运行模式。
这之间有什么联系吗?如果有,这两种状态和这7中运行模式是怎么对应的?切换的动作是怎么实现的?
答:
http://blog.csdn.net/kangear/article/category/1331795/3
参考:
说明:在学习裸机中断时重新遇到这个几个词,这次就要搞明白了。
******************************************************************************************************************/
这个三个词好长时间都没有搞懂,今天略微有点明白就记下来。物理地址是主线,其它都是陪衬。CPU是只会沿着这条路走的,这路有什么是靠MMU来说的,在0x30000000处以后的地址是内存。只说一点:为什么中断要用MMU。
这是因为异常后,CPU会自动跑到0地址处运行,但是程序在内存中启动后,但是向量表没有在真正的0地址处,在0x30000000这个时候就要出现一个忽悠的,骗它0x30000000就是0地址处,这样才可以。MMU就是一个骗子,CPU是一个憨厚的一个人,它还会跑到0地址处,但是实质的内容其实是和0x30000000地址开始的一样的内容。这就是一个重映射的过程。
中断后也有一个地址,8种不同异常类型对就8个地址,会自动跑到各个地址处执行,但是这个地址是什么代码要靠自己决定的,可以让它"Hello World",也可以什么都不做。
linux分用户态、核心态。两种状态;ARM处理器有7种运行模式。
这之间有什么联系吗?如果有,这两种状态和这7中运行模式是怎么对应的?切换的动作是怎么实现的?
答:
linux kernel只用到ARM的user和svc模式。 用户态 -- user 内核态 -- svc |
相关文章推荐
- ARM基础:MMU 异常向量表 重映射
- arm926t 异常向量的映射,(如何从0地址到0x20000000地址)
- ARM 中断向量重映射问题
- ARM64的启动过程之(六):异常向量表的设定
- ARM基础学习-SWI异常中断处理
- ARM基础学习-异常中断处理
- ARM初始化及异常向量表
- linux arm mmu基础
- ARM 结构的异常向量表
- ARM的异常及向量表
- 【ARM学习笔记】实验四:内存管理单元MMU的虚拟地址映射实验
- ARM的启动代码(3):异常向量
- arm 异常向量表(中断向量表)问题的扩展
- ARM 异常向量表及寄存器 (转)
- arm mmu地址重映射
- ARM的启动代码(3):异常向量
- ARMv6 架构下MMU虚拟地址到物理地址二级映射过程
- [转载] ARM64的启动过程之(六):异常向量表的设定
- ARM的异常处理过程分析(异常向量/工作模式)