ChinaUnix.net
相关文章推荐:

arm 中断描述符表 初始化

【转帖】arm linux的中断向量初始化分析 2008-07-30 09:37 Author: jimmy.li Time: 2007-06-09   本文分析基于linux2.4.19 source,pxa 270 cpu.   arm linux内核启动时,通过start_kernel()->trap_init()的调用关系,初始化内核的中断异常向量. /* arch/arm/kernel/traps.c */ void __init trap_init(void) { extern void __trap_init(unsigned long); unsigned long base = vectors_base(); __...

by phybbice - Linux文档专区 - 2009-11-09 17:27:41 阅读(984) 回复(0)

相关讨论

 本文分析基于linux2.4.19 source,pxa 270 cpu.   arm linux内核启动时,通过start_kernel()->trap_init()的调用关系,初始化内核的中断异常向量. /* arch/arm/kernel/traps.c */ void __init trap_init(void) { extern void __trap_init(unsigned long); unsigned long base = vectors_base(); __trap_init(base); if (base != 0) oopsprintk(KERN_DEBUG "Relocating machine vectors to 0x%0...

by emmoblin - Linux文档专区 - 2009-01-02 14:25:39 阅读(1320) 回复(0)

本节选自《嵌入式系统Linux内核开发实战指南(arm平台)》一书 每次系统上电/复位启动时,处理器都处于一种最低性能即只有最基本功能的状态,此时它只能从复位向量地址处去读取指令,其他功能模块都处于禁止或者不可预知状态,而一旦处理器从复位向量地址位置读取到第一条指令开始执行,那么从软件的角度看,处理器和整个系统就开始进入了软件可控状态,系统下面的行为就由软件流程决定,软件要做的第一件事就是初始化整个系...

by weihuaswar - 嵌入式开发 - 2009-03-05 19:59:39 阅读(1008) 回复(1)

一、进入异常中断
当一个异常出现以后,arm微处理器会执行以下几步操作:
1、将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从arm状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);
2、将CPSR复制到相应的SPSR中。
3、根据异常类型,强制设置CPSR的运行模式位。
4、强制PC从...

by 飞鸿惊雪 - 移动操作系统 - 2011-12-22 08:51:06 阅读(739) 回复(0)

一、arm中断的相关硬件知识: 正常的程序执行流程发生暂时的停止时,称之为异常。例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。arm体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。 arm的异常有七种 复位异常、SWI异常、未定义指令异常、数...

by fpseustar - Linux文档专区 - 2009-12-25 09:46:20 阅读(2523) 回复(0)

我用的arm是atmel公司的9200,arm920T内核,开发环境是ADS1.2 以前写好了程序中断接收正常,前段时间再试发现收不到中断或者提示收到伪中断,搞了两天没结果后我把伪中断向量也指向了需要的中断服务程序,这样倒是可以进入中断服务程序了,不过新的问题又出现了,连续接收几个中断后(有时候一两个,有时候可以接收几十个)程序就死掉了。这是什么原因导致的啊?有没有什么解决的好办法?多谢各位大侠指点,感激不尽! (同样的程...

by yjz98 - 嵌入式开发 - 2009-07-15 22:38:56 阅读(2003) 回复(2)

arm体系结构中,把复位、中断、快速中断等都看作‘异常’,当这些‘异常’发生时,CPU会到固定地址处去找指令,他们对应的地址如下: 地址 异常类型 进入时的工作模式 0x00000000 Reset Supervisor 0x00000004 Und Undefined 0x...

by tomoowang - Linux文档专区 - 2008-11-21 15:38:00 阅读(538) 回复(0)

当一个程序正常执行过程中,CPU可能检测到有某个中断源发出中断请求,这时arm硬件实现了程序强制跳转,在这之前保存了相关信息,以便程序正常返回。如果是发生了Reset中断,程序实现系统初始化设置。 开始比较难以理解的是中断产生后,程序都进行了哪些操作。我就从跟踪PC作为分析的主线。以发生FIQ中断为例。(只以ROM起始地址为0为例,不为0的情况参照存储地址映射) 最简单的是中断发生后,PC=0x08,在此地址处存放...

by junj2121 - Linux文档专区 - 2008-06-24 20:55:55 阅读(989) 回复(0)

基于arm内核微处理器的系统一般为复杂的片上系统,这种复杂系统的多数硬件模块都是可配置的,需要软件设置为特定的工作状态,因此在用户的应用程序之前,需要有一些专门的代码完成对系统的初始化。由于这类代码直接面对arm处理器内核和硬件控制器,一般都使用汇编语言完成。初始化代码完成的操作与具有的硬件平台相关,但一般包括一下的内容: --初始化异常向量中断向量) --初始化存储器系统 --初始化堆栈 --初始化...

by tancotq - Linux文档专区 - 2009-08-02 21:08:47 阅读(784) 回复(0)

arm嵌入式系统初始化过程(自学存档用) OHY 2006-12-08 基于arm内核微处理器的系统一般为复杂的片上系统,这种复杂系统的多数硬件模块都是可配置的,需要软件设置为特定的工作状态,因此在用户的应用程序之前,需要有一些专门的代码完成对系统的初始化。由于这类代码直接面对arm处理器内核和硬件控制器,一般都使用汇编语言完成。初始化代码完成的操作与具有的硬件平台相关,但一般包括一下的内容: --初始化异常向量中断...

by mailer3721 - Linux文档专区 - 2007-05-09 22:54:53 阅读(601) 回复(0)

#define S3C2410_CPUIRQ_OFFSET (16) #define S3C2410_IRQ(x) ((x) + S3C2410_CPUIRQ_OFFSET) /* main cpu interrupts */ #define IRQ_EINT0 S3C2410_IRQ(0) /* 16 */ #define IRQ_EINT1 S3C2410_IRQ(1) 有大侠研究过内核中断代码吗?这个IRQ_EINT0为什么还加上16呢?谢谢!

by flyriz - 嵌入式开发 - 2012-07-08 11:47:28 阅读(1387) 回复(1)