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

/******************************************************************************************************************
参考:
说明:在学习裸机中断时重新遇到这个几个词,这次就要搞明白了。

******************************************************************************************************************/

这个三个词好长时间都没有搞懂,今天略微有点明白就记下来。物理地址是主线,其它都是陪衬。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
时间: 2024-12-18 10:56:33

ARM基础:MMU 异常向量表 重映射的相关文章

我的RTOS 之一 --S5PV210 异常向量表基址和软中断测试

1.异常向量表基址 s5pv210 默认指定了异常向量基址0xD003_4700, 当异常比如中断触发时,会自动跳转到基址查找异常处理函数s5pv210 默认指定了异常向量基址0xD003_4700, 当异常比如中断触发时,会自动跳转到基址查找异常处理函数 通过代码可以这样实现,通过代码可以这样实现, #define _Exception_Vector 0xD0037400 #define pExceptionRESET ( *((volatile unsigned long *)(_Excep

u-boot分析(四)---设置异常向量表|设置SVC模式

u-boot分析(四) 通过前三篇的分析,我们对u-boot已经有了整体的认识和掌握,但是我们仍然对于其部分硬件是如何初始化的不太清楚,所以接下来几篇博文我将会对我们在http://www.cnblogs.com/wrjvszq/archive/2015/01/10/4215627.html一文中总结出的u-boot的工作流程中的重要环节,结合文档加以分析. 今天我们会用到的文档: 1.        ARM Architecture Reference Manual:http://downlo

20.核心初始化之异常向量表

20.核心初始化之异常向量表 一.异常向量表: 包含:1.异常定义 ???? 2.异常类型 ???? 3.异常入口 ???? 4.向量表 首先异常定义,在ARM Architecture Reference Manual.pdf文档中,2.Programmers' Model的2.6.Exceptions异常: 异常:因为内部或外部的一些事件,导致处理器停下来正在处理的工作,转而去处理这些发生的事件. 2.异常类型 当一种异常发生的时候,ARM处理器会跳转到对应该异常的固定地址去执行异常处理程序

[国嵌笔记][032][异常向量表]

异常定义: 因为内部或外部的一些事件,导致处理器停下正在处理的工作,转而去处理这些发生的事件 异常类型: 1.reset 0x00000000 2.undefine instructions 0x00000004 3.software interrupt(swi) 0x00000008 4.prefetch bort(instruction fetch memory abort)   0x0000000C 5.data abort(data access memory abort) 0x0000

异常向量表设计

在ARM Architecture Reference Manual-A2.6章节给了明确的定义 异常:因为内部或者外部的一些事件,导致处理器停下正在处理的工作,转而去处理这些发生的事件 异常向量:当一种异常发生的时候,ARM处理器会跳转,到对应该异常的固定地址去执行异常处理程序,而这个固定的地址,就称异常向量 起始文件start.c .text .global _start _start: b reset ldr pc, _undefined_instruction ldr pc, _soft

5.1异常向量表

异常:因为内部或者外部的一些事件,导致处理器停下正在处理的工作,转而去处理发生的事件 异常向量:7个异常向量及异常向量处理函数跳转关系,组合在一起即为异常向量表 Reset 复位异常 Undefined interrupt 未定义指令异常 Software interrupt软中断 Prefetch Abort预取指令异常 Data Abort 数据异常 Not used 没有使用 IRQ 中断异常 FIQ 快速中断异常

u-boot1.1.6启动过程分析-异常向量表

前言 根据u-boot1.1.6的编译过程可以得知,u-boot启动执行的第一个代码是cpu/arm920t/start.S,下面就从这个文档开始吧. .globl _start_start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt /* 0x00000008软中断异常 */ ldr pc, _prefetch_abort /* 0x0000000c预取异常 */ ldr pc, _data_abort

6、异常向量表的学习---设置SVC模式

这是手册的资料,我们看到,要设置svc模式,就是要把我们的cpsr的后五位设置为0b10011即可.Cpsr的结构: 接下来,我们就来把cpsr的后五位设置为0b10011. 设置的思路: 首先把这五位清零(bic指令),使用orr往这五位写入0b10011.当然,这些操作的实现必须借助mrs和msr两个指令来完成(cpsr和spsr不能直接访问). 操作如下: 看运行的结果,设置成功. ? 看门狗实现 看门狗的结构图: 6410的看门狗的资料: 我们通过上面的看门狗的控制寄存器的设置就可以关闭

(4.3)uboot详解——异常和异常向量

(4.3)uboot详解--异常和异常向量 中断是一个较难掌握知识,因为它是一个过程,而不是一个结果,其中的步骤都建立在理论的层面上,需要理解.比如按下按键1会使led1亮,这个"起因-结果"的操作我想小孩子也能掌握,因为它是一个现象,但是要掌握"起因-过程-结果"却需要花一些功夫,因为这个过程需要理解.如果你认真的了解了前面两节的内容,那么现在就该到了实现"过程"的时候了. 前面两节分析了外部中断和内部中断相关的内容,这篇文章将对处理器的异常情