学习日记韦linux一二期在上的移植中断.pdf

学习日记韦linux一二期在上的移植中断.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:19108035856(电话支持时间:9:00-19:00)。
210 学习 (11) -- 中断 由于后面的IIC 会用到中断,这里就先讲讲中断吧: 写完 S5PV210 的按键中断程序后,我才知道"6410 只是一个过渡产品"确实是正确的,为什么这样说 呢?下面我就给大家进行详细的阐述: 中断处理过程等等我就不讲了,一期 里面已经讲得非常详细了,建议大家在学习本章前,把2440 和6410 的关于中断的 再看一次。接下来,我就直接对比他们吧: (1).对于2440 : 中断向量只出现在start.s 开始部分,类容如下: .globl _start _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq 也就是说,中断向量的 地址是固定的!! (2).对于6410: 中断向量不仅出现在start.s 开始部分,类容如下: .globl _start _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq 还引入了向量地址寄存器(即VICxADDRESS) ,它会进一步 中断处理函数的 地址,详细类容, 请大家学 期的6410 的 的相关章节。 (注意:关于6410 的讲述可能有问题,因为我没有6410 开发板,无法验证, 参考) (3).对于S5PV210: 只说一说6410 只是一个过渡产品,就中断角度而言,是因为在S5PV210 中,中断向量舍弃了start.s 开始的部分( 因为从某种角度来讲,S5PV210 上电后,不在是从0 地址开始执行了,大家可以看下学习 (2) 中介绍的S5PV210 的启动流程) ,而只保留了向量地址寄存器(即VICxADDRESS)部分,而该寄存器的 功能和6410 的一样。 问:既然S5PV210 的start.s 中不在有中断向量,那么S5PV210 是怎么处理中断的呢? 答:以按键中断为例子,当中断发生时,PC 不再是跳到0x 地址处,而是去 向量地址寄 存器(即VICxADDRESS) ,在该寄存器里面读出一个地址(即可以认为是我们的中断处理函数的地址) ,然后 进一步跳到该地址处去执行。其他的过程和2440 的处理过程一样( 比如模式切换等等) 接下来我一个具体的按键中断为例子(实现按K4 ,计数器加 1,按K5 ,计数器减 1 的功能) ,代码放在了 "Tiny210 学习 _代码" 下了,名为"12_key_irq": 一上来,就写start.s,和2440 的几乎无差别(一定不用写中断向量和关看门狗) ,比如初始化时钟,初 始化nand ,初始化内存,初始化需要模式的栈(用户模式,中断模式)等等操作,当然也会初始化中断,类 容如下: void irq_init(void) { /* 设置GPH2_3(K4),GPH3_0(K5)用于中断 */ GPH2CON |= 0xf<<12; GPH3CON |= 0xf<<0; /* 设置触发方式为下降沿触发 */ EXT_IN

您可能关注的文档

文档评论(0)

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

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

认证主体钟**

相关文档

相关课程推荐