armlyn的个人空间 https://blog.eetop.cn/211255 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

基于ARM9芯片S3C2410异常中断程序设计

已有 526 次阅读| 2008-8-12 17:07 |个人分类:2410开发板 arm开发板 arm9开发板

      验证的代码详细分析了基于ARM嵌入式系统的异常处理流程,本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。 Arm9 arm9处理器 arm处理器 嵌入式系统 嵌入式

            S3C2410X 的中断控制寄存器能接收来自56个中断源的请求。内部的外围模块和外部管脚产生的多个中断请求通过中断控制器冲裁后,向ARM920T核发出FIQ或者 IRQ中断。ARM内核只有2个外部中断输入信号nIRQnFIQ,在具体嵌入式系统中,需要用中断控制器管理多个外部中断源,选择其中一个中断,通过 nIRQnFIQARM内核发出中断请求。

      ARM920T内核可以识别正常中断请求和快速中断请求两种类型的外部中断,中断的行为模式由中断控制器来设置。S3C2410X的中断控制器包括6类寄存器:中断源状态寄存器、中断模式寄存器、中断屏蔽寄存器、优先级寄存器、中断状态寄存器,以及中断偏移寄存器。

       在初始化程序中,需要选择相应管脚的功能,在此定义GPF3EINT3模式,通过外部中断控制寄存器EXTINT0设定EINT3是下降沿触发方式,通过设置中断源悬挂寄存器SRCPND、中断悬挂寄存器INTPND和中断屏蔽寄存器INTMSK开启EINT3。中断模式寄存器和中断优先级寄存器采用系统默认方式。具体代码实现如下:

void Eint_Init(void){

rGPFCON = (rGPFCON & 0x3f0c)|(1<<7);

rEXTINT0 = (rEXTINT0 & ~(0x7<<12)) | 0x2<<12;  

pISR_EINT3=(U32)Eint3Int;  

      rSRCPND = BIT_EINT3;

      rINTPND = BIT_EINT3;

      rINTMSK=~( BIT_EINT3);

      }

        如果采用EINT4EINT23之间的中断源,还需要设置外部中断悬挂寄存器EINTPEND和外部中断掩码寄存器EINTMASK的相关位。

       C语言的Main()程序中调用Eint_Init()函数,即可完成中断处理的初始化操作。       若外部下降沿信号接到GPF3管脚,就可以调用Eint3Int中断处理函数。

           总之,本文采用的异常处理程序设计方式灵活可靠,可以在系统运行期间动态修改中断向量表,利用C语言也可实现中断处理函数的动态配置。在所设计的键盘处理程序中采用该方法,取得了很好地效果,该方法具有很强的通用性。

  参考资料

       [1] 费浙平.基于ARM 嵌入式系统程序开发要点(二).单片机与嵌入式系统应用,2003,9:8083

       [2] 王波.ARM的三种中断调试方法的探讨.微计算机信息(嵌入式SOC),200622130131

       3]甘泉,杨健,陈永泰.ARM处理器启动代码的分析与设计.2004年全国第五层嵌入式系统学术交流会论文集,2004:151154

       4]张崙.嵌入式系统硬件设计与调试.北京:机械工业出版社.2005,7:279294

 


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 4

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-10 02:56 , Processed in 0.020680 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部