历史上的今天
返回首页

历史上的今天

今天是:2024年12月12日(星期四)

正在发生

2018年12月12日 | Lpc系列ARM的中断向量表中实现方式

2018-12-12 来源:eefocus

         实现方式有两种:第一种 0x18处放置        在发生中断时   跳到VICVectAddr中的地址处 代码如下


        EXTERN undef_handler, prefetch_handler, data_handler, fiq_handler



        ARM

__vector:

        ;;

        ldr   pc,[pc,#+24]              ;; Reset

        ldr   pc,[pc,#+24]              ;; Undefined instructions

        B   .                           ;; Software interrupt (SWI/SVC)

        ldr   pc,[pc,#+24]              ;; Prefetch abort

        ldr   pc,[pc,#+24]              ;; Data abort

__vector_0x14:

        DC32  0                         ;; RESERVED

        ldr   pc,[pc,#-0xFF0]           ;; IRQ

        ldr   pc,[pc,#+24]              ;; FIQ


        DC32  __iar_program_start       ;; Reset

        DC32  undef_handler             ;; Undefined instructions

        DC32  0                         ;; Software interrupt (SWI/SVC)

        DC32  prefetch_handler          ;; Prefetch abort

        DC32  data_handler              ;; Data abort

        DC32  0                         ;; RESERVED

        DC32  0                         ;; IRQ

        DC32  fiq_handler               ;; FIQ


第二种   这种方式也可以称为万能的中断方式 可以用于任何一种ARM 程序先跳到一个C语言编写的函数中 然后在这个函数里找到中断服务程序的地址(找中断服务程序地址的方法会因芯片的不同而不同) 


EXTERN IRQ_Handler


        ARM

__vector:

        ;;

        ldr   pc,[pc,#+24]              ;; Reset

        B   .                           ;; Undefined instructions

        B   .                           ;; Software interrupt (SWI/SVC)

        B   .                           ;; Prefetch abort

        B   .                           ;; Data abort

__vector_0x14:

        DC32  0                         ;; RESERVED

        ldr   pc,[pc,#+24]              ;; IRQ

        ldr   pc,[pc,#+24]              ;; FIQ


        DC32  __iar_program_start       ;; Reset

        DC32  0                         ;; Undefined instructions

        DC32  0                         ;; Software interrupt (SWI/SVC)

        DC32  0                         ;; Prefetch abort

        DC32  0                         ;; Data abort

        DC32  0                         ;; RESERVED

        DC32  IRQ_Handler               ;; IRQ


 


这种是跳到C函数IRQ_Handler中,IRQ_Handler 的代码如下,其功能也是取出 VICVectAddr中的地址进行执行


__irq __arm void IRQ_Handler(void)

{

  void (*interrupt_function)();

  unsigned int vector;


  vector = VICVectAddr;   // 取得中断服务程序地址

  interrupt_function = (void(*)())vector;

  (*interrupt_function)();  // Call vectored interrupt function.

  VICVectAddr = 0;        // 清除中断

}


推荐阅读

史海拾趣

Honeywell公司的发展小趣事

背景:随着科技的进步,霍尼韦尔开始将目光投向更广阔的领域,其中航空航天成为重要的发展方向。

发展:霍尼韦尔在航空航天领域取得了多项技术突破,其仪器仪表和控制系统在多个重要项目中发挥了关键作用。其中,最著名的莫过于1969年阿波罗11号登月任务中,霍尼韦尔的仪器仪表为宇航员提供了稳定的控制和导航支持。

关键事件:阿波罗11号任务的成功不仅展示了霍尼韦尔在航空航天领域的实力,也进一步提升了公司的国际声誉和市场地位。

Arcolectric公司的发展小趣事

Arcolectric公司成立于1932年,作为Elektron PLC Group的一个著名品牌,它从一开始就专注于开关、指示灯及保险丝座的生产。在创立初期,Arcolectric就展现出了对技术的深厚积累和独特见解,成功研发出了一系列高质量、高性能的产品,为公司的长远发展奠定了坚实的基础。

Atlanta Micro公司的发展小趣事

Atlanta Micro的创立,源于几位对射频(RF)技术充满热情的工程师。他们看到了在航空航天和国防领域,高性能RF模块和组件的巨大需求,于是决定共同创业,致力于这一领域的研发。在创业初期,公司面临着资金短缺、市场竞争激烈等诸多挑战,但凭借着对技术的执着和不懈努力,Atlanta Micro逐渐在业界积累了声誉,并获得了初步的市场认可。

Asia Electronics Ind Co Ltd公司的发展小趣事

随着公司产品的不断成熟和市场的不断扩大,Asia Electronics Ind Co Ltd积极寻求市场拓展的机会。公司加强与国际知名企业的合作,通过参加国际电子展、建立海外销售渠道等方式,不断提升品牌知名度和影响力。同时,公司还注重品牌形象的塑造,通过统一的品牌标识、宣传资料等,增强消费者对品牌的认知度和信任度。

Anaheim Automation公司的发展小趣事

1994年,在韩国这片科技热土上,AMOTECH公司应运而生。创立之初,公司便立志于在电子行业中占据一席之地。创始团队凭借对技术的深刻理解和敏锐的市场洞察,决定专注于金属氧化物压敏电阻(MOV)的研发与生产。初期的发展并非一帆风顺,但团队凭借坚定的信念和不懈的努力,逐步在市场中建立了良好的口碑。

Galil Motion Control Inc公司的发展小趣事

近年来,随着全球金属氧化物压敏电阻市场的不断增长,AMOTECH也迎来了新的发展机遇。根据市场研究报告,预计全球金属氧化物压敏电阻市场规模将以稳定的增速持续增长。AMOTECH凭借其在该领域的深厚积累和不断创新的技术实力,有望在未来市场中占据更加重要的地位。同时,公司也将继续加大研发投入,拓展新的应用领域,为电子行业的发展贡献更多力量。

这些故事框架主要基于已知的事实和信息构建而成,旨在展示AMOTECH公司在电子行业中的发展历程和重要成就。然而,由于具体细节可能涉及公司内部信息或商业机密,因此无法提供更为详细和具体的描述。如需了解更多关于AMOTECH公司的故事和发展历程,建议查阅相关新闻报道或公司官方资料。

问答坊 | AI 解惑

是否可用DDRAW移植GUI显示??

原来在MTK平台做过个程序,UI库用自己写的,所有显示都是通过直接操作显存,速度很快 但在WINCE上,为了移植方便,直接用DIB来替代显存,发现图片UI显示太慢,特别是用了矢量字体。 没研究过DDRAW,不知能不能改善我的问题…

查看全部问答>

发一个S5PC100的MID原理图和PCB

做到一半就停了,半成品没用的东西,发出来共参考,请不要用于商业用途否则后果自负 http://download.eeworld.net/source/2501306 ******************************************分割线************************************** 友情提示: 小心一 ...…

查看全部问答>

请问考研嵌入式的不同----计算机系统结构和计算机应用中两个嵌入式

我想考研考嵌入式方向 但在一些院校有 计算机应用方向 嵌入式操作系统和计算机系统结构 嵌入式系统 不知道他们有什么区别我本科时学计算机科学与技术专业的 但比较喜欢硬件 如果有好心人了解的 请指教一下 谢谢了!…

查看全部问答>

关于WINCE休眠的问题

WINCE进入OEMPOWEROFF函数时,是在中断发生进进入的吗?是哪一个中断呢?谢谢!…

查看全部问答>

uCOS 中一个任务如何同时等待多个事件?

uCOS 中一个任务如何同时等待多个事件? 我目前这么实现,只能等待一个事件: void task_ui(void * pdata) {     INT8U err;     TRACE((\"task_ui()\\n\"));     evt_q_task_ui = OSQCreate(&q_msg_data_ui[0 ...…

查看全部问答>

Wince 下打印机连接

我们在Wince工程中加入LPT等打印驱动组件,并加入Microsoft word 工具。 我们将预先设好的word文档拷贝至Wince目标机上,硬件上接上并口打印机。 打开word文档,在word菜单栏中选择打印功能,发现在长时间的打印提示框后,弹出打印失败提示, 且 ...…

查看全部问答>

s3c2410 usb

我有一块S3C2410开发板,最近我在ADS1.2下做了一个USB DEVICE的驱动程序,其实就是根据一个BOOTLOADER修改的,目前能够实现BULK OUT的传输,但是BULK IN的数据传输却死活都实现不了,有没有那位高手做出来的,能给我分享一下,不胜感激。 …

查看全部问答>

请问下硬件版的高人哪里有能用PC驱动的小液晶点阵显示屏?

我要通过PC串口或并口驱动一个小显示屏显示一些简单数据,有中英文和数字,不知道有没有这样的东西,编程方面复不复杂?…

查看全部问答>

想找一个技术人员创业,我有资金和项目,您以技术入股。要求在成都

1:您必须具备很强的道德意识。 2:您具有单片机开发 3: 对各类嵌入式开发很熟,在嵌入式开这行有多年的从业经验,并有自已很成熟的产品面市。 4:提出您的要求,将您的个人信息发往:beylandsoft@163.com 我们是公司,非个人,我们会很快 ...…

查看全部问答>

欢迎下载新STM32的数据手册和技术参考手册及其它资料,新增

STM32F103xC/D/E数据手册下载STM32F101xC/D/E数据手册下载STM32F10xx技术参考手册(包含新推出的型号)下载应用笔记:STM32F10xx硬件开发入门(包含新推出的型号)下载STM32F10xx最新宣传页(包含新推出的型号)下载STM32F101xx和STM32F103xx固件库 ...…

查看全部问答>