s3c2410 __attribute__ ((interrupt ("IRQ")))

发布者:tmgouzi最新更新时间:2016-11-25 来源: eefocus关键字:s3c2410  attribute__  IRQ 手机看文章 扫描二维码
随时随地手机看文章

        在中断里面,有这个函数,不太明白是怎么回事,于是网上找答案~原文是关于s3c44B0的,不过感觉都差不多吧~下面整理下~

        ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采用中断比以往的查询方式占用更少的CPU时间,让系统提供更好性能。

        查询S3C2410的手册,发现它有?(我不清楚有几种)种工作模式,每种工作模式是不一样的。其中最常用的,就是FIQ和IRQ模式。在使用中断之前,一定要初始化每种模式的栈指针SP,如果不初始化,肯定会出错。在CPU进行初始化时,就需要依次进入IRQ模式,初始化SP,接着再进入FIQ模式初始化SP。这样这两种模式,就可以使用了。然后再在断向表里,初始化IRQ的中断处理程序,这段代码就是用来根据不同中断位来调用不同的中断子程序。

        对于使用C语言写的中断子程序,一定要加一些特定的修饰定义,否则C编译器不会生成适合中断模式下运行的程序。定义:void function(void) __attribute__ ((interrupt ("IRQ"))); //注意这里是2个下划线哦~

之后,就会生成合适的中断处理程序了。GCC就会编译成这样的代码:
  sub lr, lr, #4 ;
  stmdb sp!, {r0, r1, r2, r3, r4, ip, lr}
  ......
  ......
  ldmia sp!, {r0, r1, r2, r3, r4, ip, pc}^
        由于从IRQ模式返回到FIQ模式,就需要把LR减4,才是PC的指令。如果不加上面的中断修饰定义,就不会生成这样的代码,这样的函数就不能作来中断处理使用。然后通过嵌入式汇也是可以实现的。比如:
  void foo(void)
  {
   asm volatile ( "sub lr, lr, #4" );
   asm volatile ( "stmdb sp!, {r0, r1, r2, r3, r4, ip, lr}" );
  ......
  ......
   asm volatile ( "ldmia sp!, {r0, r1, r2, r3, r4, ip, pc}" );
   return;
  }
       

        通过查找GCC的帮助文档,下面的连接:
http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html,就可看到中断函数在GCC的里声明。
  5.24 Declaring Attributes of Functions
  In GNU C, you declare certain things about functions called in your program which help the compiler optimize function calls and check your code more carefully.
  The keyword __attribute__ allows you to specify special attributes when making a declaration. This keyword is followed by an attribute specification inside double parentheses. The following attributes are currently defined for functions on all targets: noreturn, noinline, always_inline, pure, const, nothrow, sentinel, format, format_arg, no_instrument_function, section, constructor, destructor, used, unused, deprecated, weak, malloc, alias, warn_unused_result and nonnull. Several other attributes are defined for functions on particular target systems. Other attributes, including section are supported for variables declarations (see Variable Attributes) and for types (see Type Attributes).
  You may also specify attributes with `__' preceding and following each keyword. This allows you to use them in header files without being concerned about a possible macro of the same name. For example, you may use __noreturn__ instead of noreturn.
  See Attribute Syntax, for details of the exact syntax for using attributes.
  然后再看看它的中断函数声明:
  interrupt Use this attribute on the ARM, AVR, C4x, M32R/D and Xstormy16 ports to indicate that the specified function is an interrupt handler. The compiler will generate function entry and exit sequences suitable for use in an interrupt handler when this attribute is present.
  Note, interrupt handlers for the m68k, H8/300, H8/300H, H8S, and SH processors can be specified via the interrupt_handler attribute.
  Note, on the AVR, interrupts will be enabled inside the function.
  Note, for the ARM, you can specify the kind of interrupt to be handled by adding an optional parameter to the interrupt attribute like this:
   void f () __attribute__ ((interrupt ("IRQ")));
  
  Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF.
  除了可以使用IRQ中断方式之外,还可以写FIQ,SWI,ABORT,UNDEF的中断处理函数。


关键字:s3c2410  attribute__  IRQ 引用地址:s3c2410 __attribute__ ((interrupt ("IRQ")))

上一篇:ARM常见移位指令
下一篇:s3c2410实时时钟(RTC)

推荐阅读最新更新时间:2024-03-16 15:22

S3C2410:DMA介紹
之所以要介绍DMA,因为它对性能太重要了!只有活用了DMA,CPU的性能才能上去!S3c2410有四个DMA,每个DMA支持工作方式基本相同,但支持的source Dest可能略有不同,具体见Datasheet。 这里具体DMA CONTROL寄存器(DCON)的配置说明,进而引出DMA的各种工作方式。 Atomic transfer:指的是DMA的单次原子操作,它可以是Unit模式(传输1个data size),也可以是burst模式(传输4个data size),具体对应DCON 。 Data Size:指的是单次原子操作的数据位宽,8、16、32,具体对应DCON 。 Request Source:DMA请求的来源有
[单片机]
s3c2410 s3c2440 有何区别
三星2440 16/32-bit RISC 微处理器. 三星2440是一款专用的以手持设备为主而设计的芯片,其特点有低功耗, 高速的处理计算能力. 为了减少系统的耗费,2440使用了如下组件: 2440基于ARM920T内核的,0.13Um cmos 标准单元和存储单元复合体. 它功耗及小,简单,稳定的设计非常适合对电源要求较高的产品上. 她采用了新的总线构架(AMBA). 2440提供了杰出的特性,因为其内核为32bit的先进处理器。 The arm920T 实现了mmu,amba bus,and 哈佛缓存体系构架 通过分离的16kb 指令缓存 and 16kb data caches(采用8 -word line length)
[单片机]
基于S3C2410的CDMA无线数据传输方法
1 引言 Linux嵌入式系统,具有高性能、低功耗、体积小、可靠性高、源代码开放等优点,逐渐被越来越多的人认可并使用,原先只有在PC机上实现的功能,如今也被移植到了更加方便的嵌入式系统上。近些年嵌入式系统已经应用十分广泛,而随着网络特别是无线网络的兴起和发展,将更加快捷方便的无线网络与嵌入式系统相结合更成为了当前研究的热点。CDMA(码分多址)无线网络具有覆盖面广、速度稳定、效率高、成本低等优点,CDMA的网络速度最大可达200k/s。本文着重介绍了ARM9与CDMA无线网络相结合的,进行无线数据传输的方法。 2 软硬件平台设计 这里采用的是三星公司的基于S3C2410的高端ARM9处理器芯片,适用于高端手持设备和微型智能控制设备
[单片机]
C51单片机interrupt和using的使用
8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位定时计数器;全双工串行通信;6 个中断源(2 个外部中断、2 个定时/计数器中断、1 个串口输入/输出中断),两级中断优先级;128 字节内置RAM;独立的 64K 字节可寻址数据和代码区。中断发生后,MCU 转到 5 个中断入口处之一,然后执行相应的中断服务 处理程序。中断程序的入口地址被编译器放在中断向量中,中断向量位于程序代码段的最低地址处,注意这里的串口输入/输出中断共用一个中断向量。8051的中断向量表如下: 中断源 中断向量 上电复位 0000H 外部中断0 0003H 定时器0 溢出 000BH 外部中断1 001
[单片机]
基于S3C2410开发板的Bootloader运行原理与实现
在专用的嵌入式开发板上运行操作系统(如Linux)已经变得越来越流行,而Bootloader就是为引导操作系统内核运行的一段代码。通过它可以初始化硬件设备、建立或检测内存空间的映射,其功能有点类似于PC机的BIOS(基本输入输出系统)程序。它的主要作用是为运行操作系统提供基本的运行环境,并操作系统的内核装载到存储器(RAM)中的合适位置上去运行。本文将以Samsung公司的S3C2410开发板为开发平台,具体阐述了Bootloader的运行原理与实现分析。 Bootloader程序与CPU芯片的内核结构、具体芯片和使用的操作系统等因素有着密切关系,因此要为所有类型的嵌入式开发板建立一个通用的Bootloader几乎是不可能的。
[单片机]
基于<font color='red'>S3C2410</font>开发板的Bootloader运行原理与实现
基于ARM的多人对战游戏平台
  游戏不仅能开发人的智力,使人头脑反应灵敏,还能满足人的精神需求(如冒险、创造力、情感等),极具娱乐性和趣味性,深受人们的喜爱。随着消费类电子产业的蓬勃发展,越来越多的嵌入式电子产品走进了千家万户,催生出了诸如GBA(Game Boy Advance)、PSP(Play-Station Portabk)以及最近才在我国上市的iPad等一大批专业的并且销量惊人的明星级移动娱乐游戏设备。   然而上述游戏平台通常造价昂贵,且不具有开放性。例如备受推崇的PSP,开发授权问题和昂贵的专用开发套件(软硬件)使得PSP游戏的开发门槛很高。这在很大程度上限制了这些游戏平台的普及。如果利用通用的处理器和常用的嵌入式操作系统(如WinCE、Li
[单片机]
基于ARM的多人对战游戏平台
基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植
1、引言 在当今后PC时代,嵌入式系统应用得越来越广泛,嵌入式产品充斥着许多领域,日常生活的手机,MP4,PDA等都属于典型的嵌入式系统。在嵌入式系统中,微处理器和操作系统是进行应用开发的基础。在微处理器方面,S3C2410是Samsung公司推出的一款基于ARM920T内核的16/32位 RISC嵌入式CPU,主要面向手持设备以及高性价比、低功耗的应用。在操作系统方面,Windows CE 5.0是由微软提供的一款嵌入式操作系统,在Windows CE 4.2基础上,它又加入了一些新特性以满足市场需求。板级支持包 (Board Support Package,BSP)是操作系统的一个组成部分,提供对硬件的支持。BSP的开发在整个
[单片机]
基于<font color='red'>S3C2410</font>处理器对Windows CE 5.0操作系统实现BSP移植
基于S3C2410的智能家居数据采集系统设计
O 引言 智能家居是以住宅为平台,兼备建筑设备、网络通信、信息家电和设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。它利用先进的计算机技术、网络通信技术和综合布线技术,将与家居生活有关的各种系统有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全。家庭自动化、家庭网络、网络家电、信息家电等产品都属于智能家居系统产品。 数据的采集、处理以及传输是实现智能小区控制作用的核心。在此设计了利用嵌入式系统作为开发平台,利用TCP/IP协议作为信息传输方式的业主基本信息数据采集的方案。 由于Internet的发展和普及,采用TCP/IP协议简单、方便、成本低,开放性好,标准化程度高。物业管理
[测试测量]
基于<font color='red'>S3C2410</font>的智能家居数据采集系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved