从Flash和SRAM中触发中断的过程示例(一)

2013-09-24 10:29:34来源: 互联网

使用LPC2106的Timer 1 进行的简单的中断处理。示例代码中Timer1分为FIQ和IRQ,用户可以从Flash或者SRAM中运行这些代码。

  示例展示了ARM构架中中断是如何操作的。提供的代码表示了向量IRQ(中断请求)和FIQ(快速中断)两种情况。中断向量位于FLASH地址中的 0x00-0x1C。如果需要从SRAM中运行,则中断向量需要被remapped to 0x40000000-0x4000000C。这可以通过Memory Map register来做到。这些代码用ADS1.2开发,从FLASH中运行。提供了从SRAM中运行代码的不同之处。中断服务程序(ISR)使用C语言编写IRQ,用汇编来编写FIQ。

  示例使用下面的样式排列:

  1. TIMER1 被配置为触发IRQ中断,代码从FLASH中运行;

  2. 代码从SRAM中运行所需要的改变和增加;

  3. TIMER1被配置为触发FIQ中断,代码从FLASH中运行;

  4. 代码从SRAM中运行所需要的改变和增加。

  TIMER1 被配置为触发一个IRQ中断,代码从FLASH中运行

  这个示例包含下述文件:

  1. 中断向量表(ivt.s)

  2. 启动用的汇编代码(init.s)

  3. 主C文件

  只包含了相关的文件。在不同的交叉编译环境下,C文件不用改变太多,而汇编文件需要改变。

  中断向量表

  这些代码应该被连接到0x0。

  ;***********************************************************

  ; 汇编指令

  ;*************************************************************

  AREA IVT,CODE ;新的代码段

  CODE32 ;ARM 代码

  IMPORT start ;导入外部函数。Start标志不应该在这个段内定义

  ENTRY ;定义程序入口

  ;*********************************************************************

  LDR PC,=START

  LDR PC,Underfined_Addr

  LDR PC,SWI_Addr

  LDR PC,Prefetch_Addr

  LDR PC,abort_Addr

  在 0x14用户应当插入一个标识(checksum),这个标识允许bootloader决定是否允许在FLASH中存放用户代码。当前大多数FLASH编程工具(debuggers and isp utility)有这个内在性能,所以用户不用担心。如果工具没有提供这个功能,这个值需要自己计算,而且应当被插入到0x14。在 LPC2104/5/6的用户手册中的FLASH编程的章节中可以找到checksum相关计算的细节。

  DCD ………..

  LDR PC,[PC,#=0Xff0]

  LDR PC,FIQ_Addr

  Undefined_Addr DCD Undefined_Handler

  SWI_Addr DCD SWI_Handler

  Prefetch_Addr DCD Prefetch_Handler

  Abort_Addr DCD Abort_Handler

  FIQ_Addr DCD FIQ_Handler

  ;********************************************************************

  ; 意外处理

  ;*******************************************************************

  下面虚拟的操作在本例子中不做任何有用的操作。这里写下来仅仅是为了完整性

  Undefined_Handler

  B Undefined_Handler

  SWI_Handler

  B SWI_Handler

  Prefetch_Handler

  B Pretetch_Handler

  Abort_Handler

  B Abort_Handler

  FIQ_Handler

  B FIQ_Handler

  END

  复位时,本例子执行的第一条指令是:

  LDR PC,=start

  将转移到汇编启动代码,允许中断,建立IRQ的堆栈指针核管理员模式。

  中断向量的假肢就是IRQ中断

  LDR PC,[PC,#=0Xff0]

  这条指令加载到PC,PC地址将从VIC向量地址寄存器(0Xffff f030)转到ISR,并在这里执行转移。其余的向量都是虚拟的中断操作。

关键字:Flash  SRAM  触发中断

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2013/0924/article_19436.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
Flash
SRAM
触发中断

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved