gcc --- __attribute__((interrupt(irq))) [英] gcc --- __attribute__((interrupt( irq )))

查看:61
本文介绍了gcc --- __attribute__((interrupt(irq)))的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从 arm 的设备驱动程序开始......我看到每个处理程序提到 --- __attribute__((interrupt( irq ))) -.我很困惑这个属性如何放置调用我们的驱动程序..??

i started with device driver for arm ... there i saw for each handler mention --- __attribute__((interrupt( irq ))) -.I am confused how this attribute will place a call to our driver routine ..??

arm 的 IRQ 有以下向量地址--- 0x00000018 (或 0xFFFF0018)因为同一行上可以有许多中断处理程序.假设我们有 4 个设备驱动程序,每个驱动程序都有自己的 IRQ 需要重新注册.

IRQ of arm have following Vector address--- 0x00000018 (or 0xFFFF0018) As there can be many interrupt handler on same line. Suppose if we have 4 device driver each with its own IRQ to be reistered.

意味着一些启动代码将由 GCC 编译器提供给 IRQ 处理程序 &编译器将在中断处理程序的启动代码中调用我们的例程..... 我对吗...?

Means some startup code will be provided by the GCC compiler for the IRQ handler & compiler will place call to our routine in that startup code for interrupt handler ..... Am i right ...?

推荐答案

来自 GCC 文档 interrupt 属性:

当此属性存在时,编译器会生成适合在中断处理程序中使用的函数进入和退出序列.

The compiler generates function entry and exit sequences suitable for use in an interrupt handler when this attribute is present.

您可以轻松地使用 objdump 来查看此属性如何更改您的二进制文件,这应该会更好地为您阐明情况.

You can use objdump easily to see how this attribute changes your binary which should clarify the situation for you much better.

这篇关于gcc --- __attribute__((interrupt(irq)))的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆