当前位置: 首页 > news >正文

咸阳网站建设培训学校品牌网网站建设公司

咸阳网站建设培训学校,品牌网网站建设公司,北京网站备案地址,seo网站快速排名0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断#xff0c;开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中#xff0c;硬件原生是不支持嵌套中断的#xff0c;这从Cortex-A…0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中硬件原生是不支持嵌套中断的这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍Cortex-A7的简单的中断处理机制即不可嵌套中断的处理机制。 2 Cortex-A7简单中断处理不可嵌套中断机制 2.1 概述 简单的中断处理机制意味着在中断发生之后将会屏蔽掉同类中断如果在响应中断期间有多个中断请求需要处理则会按照优先级顺序取决于中断服务函数写法依次处理。这样的设计下无法使高抢占优先级的中断抢占低抢占优先级中断执行也就无法实现中断嵌套。 2.2 中断处理步骤 简单中断处理步骤可以概括为以下5步。 2.2.1 硬件保存上下文 当发生外部中断硬件将会自动执行以下几个操作 1将当前模式下中断发生前的PC程序计数器后面第2条指令地址保存到IRQ模式下的LR链接寄存器 2将当前模式下CPSR当前程序状态寄存器保存到到IRQ模式的SPSR程序状态保存寄存器 3修改CPSR当前程序状态寄存器将I位设置为1屏蔽IRQ同时将模式设置为IRQ模式切换到IRQ模式 4将PC程序计数器设置为IRQ的中断向量 以上步骤可以用如下示意图描述 2.2.2 跳转到中断服务函数 1中已经将IRQ中断向量传入PC程序计数器下一条指令则开始执行中断服务函数 2.2.3 中断服务函数保存上下文 中断服务函数应当将会被修改的寄存器入栈在中断服务函数完成后将保存的寄存器出栈恢复原来的值。这里需要注意如果是使用汇编语言编写中断服务函数开发者应该自行编写出入栈操作语句。如果是使用C语言编写中断服务函数则编译器会完成寄存器的出入栈操作。 以上步骤可以用如下示意图描述 2.2.4 根据中断源执行相应的中断服务函数 不同于Cortex-M的所有外部中断都有独立的中断向量Cortex-A7的中断处理程序需要自行判断中断源并调用相应的中断服务函数。 2.2.5 从中断处理程序中返回 1将SPSR_IRQIRQ模式下的SPSR寄存器复制到CPSR当前程序状态寄存器将系统状态恢复到中断发生前的状态 2将IRQ模式下的LR链接寄存器内容复制到PC程序计数器。下一条指令便会执行中断打断点的下一条指令恢复现场。 以上步骤可以用如下示意图描述 2.2.6 简单的IRQ中断服务函数实例 IRQ_Handler PUSH {r0-r3, r12, lr} Store AAPCS registers and LR onto the IRQ mode stack BL identify_and_clear_source BL C-irq_handler POP {r0-r3, r12, lr} Restore registers and SUBS pc, lr, #4 return from exception using modified LR操作如下 1将LR程序链接寄存器及可能破坏的寄存器入栈 2识别中断源 3跳转到相应的中断服务函数 4将保存的寄存器出栈 5将LR链接寄存器值-4然后写入PC程序计数器 这里之所以需要将LR链接寄存器值-4再写入PC原因如下 当IRQ或FIQ中断产生时PC程序计数器指向当前指令后面第3条指令对于ARM指令来说它指向当前指令地址12字节的位置对于Thumb指令来说它指向当前指令地址加6个字节的位置。ARM指令下当IRQ和FIQ中断发生时处理器会将值PC-4保存到异常模式下的LR链接寄存器中这时PC-4即指向当前指令后的第2条指令。因此返回操作中再将PC-4就可以得到当前指令后的第一条指令从而实现现场恢复。 说明 3 总结 1以上例子同样适用于FIQ中断。 2IRQ中断的关键操作是保存了中断打断点后面第2条指令地址到IRQ模式的LR链接寄存器使得中断打断后能够恢复现场。 3从简单中断处理机制可以看出由于进入IRQ模式时IRQ一直处于屏蔽状态因此是不可能做到中断嵌套。同时又由于LR链接寄存器在每次进入IRQ模式前会硬件自动设置为打断点后面第2条指令地址即使我们人为进入使能IRQ的IRQ模式假如我们在将LR链接寄存器入栈之前触发了一次IRQ中断后由于LR链接寄存器被修改第一个IRQ将无法返回第一次打断点一直执行被第二次中断打断后的断点到退出IRQ模式中间的语句陷入死循环。
http://www.w-s-a.com/news/584134/

相关文章:

  • 网站可以换主机吗中国十大网站建设企业
  • 怎么做盗版小说网站官网做有下拉列表的网站的图片
  • 邢台网站建设电话网站界面类型
  • 网站制作合同模板做一个网站能挣多少钱
  • 汶上1500元网站建设互联网高端官网
  • 广州做公司网站网站开发培训机构
  • 网站建设与维护 课件网页版qq安全中心登录入口
  • 做三个月网站广告收入dw如何制作网页
  • ...课程网站建设简介工信部 网站备案查询
  • 网站代码建设 实例企业网站建设大概的费用
  • 制作网站软件排行榜过年做啥网站致富
  • 哪里有做网站企业seo关键词优化
  • 上海金山网站建设公司手机淘宝客网站怎么做的
  • 网站开发需要公司做网站费用计入什么科目
  • 网站优化有哪些类型免费制作app的傻瓜软件
  • 如何做网站咨询wordpress get
  • 企业网站建设网站做网站用别人的图片
  • 站长统计代码个人网站源代码
  • 求推荐专门做借条的网站公众号排版编辑器
  • 动态做网站网站开发语言查询 蔡学镛
  • 莆田网站建设创意自助建站英文
  • cms系统创建静态网站龙岗网站建设哪家好
  • 自己做的网站被封了邢台规划局网站建设
  • 网站建设项目合同wordpress主题没法用
  • 个旧市哪里有做网站wordpress内页php页面
  • 程序员接活的平台网站互联网平台建设方案
  • 网站安全建设模板深圳企业管理咨询公司
  • 做网站 还是淘宝店wordpress分类链接后加
  • wordpress腾讯云 COSseo内容优化心得
  • 特价旅游机票网站建设i营销