驱动-异常处理结构、中断处理结构.pdf

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
驱动-异常处理结构、中断处理结构

LINUX 异常处理结构、中断处理结构: 2012年2月23 日 11:03 一,Linux 异常处理体系结构 框架: 将 2440 作为单片机使用时:裸机程序时 1,按键按下时。 2,CPU发生中断。 强制的跳到异常向量处执行(中断是异常的一种)。 3,“入口函数”是一条跳转指令。跳到某个函数:(作用) ①,保存被中断处的现场(各种寄存器的值)。 ②,执行中断处理函数。 ③,恢复被中断的现场。 LINUX中处理中断的过程: 1,写程序时先设置异常入口: 发生“中断”时,就跳到 0x18 地址处,跳转到“HandleIRQ”是执行下面的指令: linux中: 中断处理完后,要返回去继续执行之前被中断的那个程序。 保存寄存器就是保存中断前那个程序的所用到的寄存器。 然后是处理中断,最后是恢复。 异常向量在哪里: 分区 4 ,异常处理结构、中断处理结构 的第 1 页 ①,LINUX的异常向量在哪里: ARM架构的CPU的异常向量基址可以是 0x0000 0000,也可以是 0xffff0000,LINUX内核 使用后者,只需要在某个寄存器里设置下,就可以将异常基址定位到这里来。这个地址并不代表实际的内存,是虚 拟地址。当建立了虚拟地址与物理地址间的映射后,得将那些异常向量,即相当于把那些跳转指令(如:HandleSWI 等)复制拷贝到这个 0xffff0000这个地址处去。(“那些跳转指令”是指head.S中那些跳转)。 这个过程是在trap_init这个函数里做。 trap_init函数将异常向量复制到0xffff0000处,部分代码如下: 如上: 将 __vectors_start, __vectors_end - __vectors_start 这段代码拷贝到 vectors来。 分区 4 ,异常处理结构、中断处理结构 的第2 页 将 __vectors_start, __vectors_end - __vectors_start 这段代码拷贝到 vectors来。 vectors是“CONFIG_VECTORS_BASE” 是个配置项(内核的配置选项)。 在linux源码顶层目录下:vim .config, 有哪些信誉好的足球投注网站“CONFIG_VECTORS_BASE”。 我的内核配置文件这个地址是“0xffff0002”和书上的不同。 __vectors_start 在 entry-armv.S 中定义,也是些跳转指令。 可见和单片中的一样(都是跳转指令)。 A:假设发生了 vector_und (undefined)异常未定义指令后,会跳转到 vector_und 加一个偏移地址 stubs_offset(b vector_und + stubs_offset)。这个 vector_und 地址标号源代码里没有,它是一个宏: 将这个宏展开: 分区 4 ,异常处理结构、中断处理结构 的第3 页 将这个宏展开: =========================================== vector_stub und, UND_MODE 这个宏展开替换下面的语句: .macro vector_stub, name, mode, correction=0 (.macro 开始定义宏) 把宏展开,上面的name就是und。则下来替换后,“vector_\name”就成了“vector_und” vector_\name: (变成vector_und: )定义了一个vector_und标号。做的事情如下。 .if \correction 因为上面“correction=0”,即这里是:.if 0.所以 if...endif 间的代码忽略。 sub lr, lr, #\correction .endif (这三句因为correction=0,忽略不要) @ @ Save r0, lr_exception (parent PC) and spsr_exception先保存。 @ (parent

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档