ARM 向量中断机制在uClinux 下的设计与实现.docx

ARM 向量中断机制在uClinux 下的设计与实现.docx

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

Microcomputer Applications Vol. 22 , No. 3 ,2006    开发应用    微型电脑应用   2006年第 22卷第 3期文章编号 :1007 - 757X(2006) 03 - 0018 - 04ARM向量中断机制在 uClinux下的设计与实现吴炜荣 ,梁阿磊 ,王 刚摘 要 :在 ARM体系结构中 ,硬件产生的外部中断 ( IRQ)具有单一的程序入口。为了识别中籽源 ,进而运行对应的中断服务例程 ( ISR) ,程序需读取中断悬挂寄存器 ,获得中断号。在这种方式中 ,程序必须通过软件方法对中断悬挂寄存器的每一位进行比较 ,直到找到中断源为止 ,效率较低。本文移植了基于 2. 6. 11内核的 uClinux[1 ] ,在此基础上设计了一套向量中断机制 ,并基于ARM7TDMI架构的 S3C44BOX处理器 ,实现了这套向量中断机制。结果表明 ,这套机制可以大规模地减少外部中断的响应时间。关键词 :ARM ;uClinux ;向量中断 ;S3C44BOX中图分类号 :TP316   文献标识码 :A1 简介近年来 ,基于 ARM架构的处理器凭借其强大的处理能力 ,较低的功耗以及低廉的价格在嵌入式领域得到广泛应用。Linux由于其免费 ,开源的特点 ,受到越来越多用户的欢迎。在基于 ARM体系结构的 Linux版本中 ,有两个分支 ,ARM -Linex及 uClinux ,目前两者都已并入 Linux主流开发树。ARM个过程可以由图 1表示。2 向量中断机制向量中断并不是一个新的概念 ,是指在中断产生同时 ,处理器已经获知产生中断的原因 [3 ]。它与非向量中断主要区别在于 :是否需要查询中断号。在 Intel的 IA - 32架构中 ,在实模式下 ,最低端的 1K内存存入的就是中断向量表 ,它是由 BIOSux完全一样的功能。而 uClinux是针对没有内存管理单元进行初始化的。在保护模式下 ,中断向量表被称为中断描述符(MMU)的处理器而设计的。由于没有 MMU的保护等。但是表 ( Interrupt Description Table—IDT) , IDT的首地址存储在 IDTR汽硬件寄存器中 [4 ]。两种模式都采用向量中断机制。用 ,这些处理器没有 MMU的支持。在这些领域 ,使用 uClinux在 ARM中实现向量中断 ,第一种方式是设置一个专用的能充分享有 Linux的几乎所有的优点 ,同时能降代系统的成可编程的硬件寄存器 ,由系统软件负责填充中断向量表 ,并把本。该硬件寄存器的内容设置成中断向量表的首地址。第二种方在 ARM体系中 ,通常有 3种方法控制指令的流程。程序式无需专用的硬件寄存器 ,外部中断产生后处理器根据中断顺序执行 ,程序跳转和出现异常。异常有复位 ( Reset)、定义源产生一个固定的偏移 ,在特定的地址写入特定的处理代码 ,指令 (Undefined Instruction)、软件中断 ( Software Interrupt SWI)、不如第一种方式灵活但设计简单。在第二种方式下 ,每当外部中断产生时 ,处理流程如图 2所示。[2 ]时间。的外部中断请求 IRQ。———ARM核拥有一根外部中断请求信号线 nIRQ。每当出现处部中断请求 ,ARM中断控制器的仲裁机制会根据中断源的实现向量中断需要硬件提供相关的机制 ,在基于 ARM核优先级确保最高优先级的中断产生 IRQ请求。此时 ,硬件自的处理器中 ,S3C44BOX处理器具有相应的功能。尽管该处理动把程序计数器 PC指向 OX18地址 ,OX18地址正是在异常向器的硬件向量中断机制并不十分适合 Linux ,但是经过详尽的量表中的外部中断请求对应的跳转指令 ,该指令跳转到内核设计 ,可以找到变通的方法。的特定代码段 ,读取中断悬挂寄存器 ,确定中断源 ,为 asm- do-IRQ这个 Linux中断管理函数准备参数并调用该函数。asm-do- IRQ函数根据中断号调用相应用中断服务例程 ( ISR)。这作者简介 :吴炜荣 ,上海交通大学软件学院 ,上海 200240梁阿磊 ,上海交通大学软件学院 ,上海 200240王 刚 ,上海交通大学软件学院 ,上海 200240?18?- Linux是针对通用的 ARM处理器而设计的 ,具有同普通 Lin2在某些领域 ,如工控、车电子等 ,存在着大量 32位的低端应指令预取终止 ( Prefetch Abort)、数据访问终止 (Data Abort)、外部中断请求 ( IRQ)和快速中断请求 ( FIQ)七种。这七种异常从图 1和图 2可以看出 ,向量中断省去了查询中断号的的处理代码入口 ,称为异常向量表。本文关注的重点 ,是其中3 实现未Micro

文档评论(0)

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

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

1亿VIP精品文档

相关文档