问题标签 [irq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3853 浏览

assembly - 设置 IRQ 映射

我正在关注几个教程和参考资料,试图设置我的内核。我在一个根本没有解释它的教程中遇到了一些不熟悉的代码。我被告知将其映射16 IRQs (0-15)到 ISR 位置的代码32-47

的代码outportb()如下,但我已经清楚地掌握了它的作用:

我应该提一下,这是在保护模式下的 x86 架构上。此源代码工作正常,我了解它的作用,但我不明白它是如何做到的。有人可以向我解释这里发生了什么,以便万一我需要对此进行扩展,我会知道我在做什么?

0 投票
4 回答
5515 浏览

linux - 连接两个 digium 卡和星号框时的 IRQ 问题

我有两个 Digium Wildcard TDM800P,每个都有 8 个 FXO 端口。当我同时连接两者时,IRQ 未命中开始出现,使我的计算机无响应且无法使用。

一张卡可以正常工作,但我需要所有 16 个 FXO 端口才能接听来自电信公司的电话。有没有办法让卡片相互通信,这样它们就不会产生尽可能多的中断。或者一种调整 Linux 为每张卡专用单独的 IRQ 的方法。

我尝试禁用音频、ACPI 和 USB 端口。仍然有太多的 IRQ 未命中。

0 投票
1 回答
120 浏览

windows-mobile - 将驱动程序从 PPC2003 移植到 WM6:未调用 ISR

我正在尝试移植我为使用 iPAQ hx4700 的 CF 端口的自定义设备开发的驱动程序。

目标是运行 Windows Mobile 6 的新 iPAQ 210。尽管 WM6(和 Windows CE 5.0)切换到新的驱动程序架构,但它声称支持旧版驱动程序。

中断处理部分外,一切正常(注册、内存映射等) 。我注册了我的 ISR,CardRequestIRQ()但是当生成 IRQ 时,我的 ISR 永远不会被调用。

请注意:我正在开发一个定义明确的平台(iPAQ 210),所以没有 Platform Builder、OAL、...

有没有人有过这种事情的经验可以帮助我对这件事有所了解?

0 投票
2 回答
11773 浏览

interrupt - How CPU finds ISR and distinguishes between devices

I should first share all what I know - and that is complete chaos. There are several different questions on the topic, so please don't get irritated :).

1) To find an ISR, CPU is provided with a interrupt number. In x86 machines (286/386 and above) there is a IVT with ISRs in it; each entry of 4 bytes in size. So we need to multiply interrupt number by 4 to find the ISR. So first bunch of questions is - I am completely confused in mechanism of CPU receiving the interrupt. To raise an interrupt, firstly device shall probe for IRQ - then what ? The interrupt number travels "on IRQ" towards CPU? I also read something like device putting ISR address on data bus ; whats that then ? What is the concept of devices overriding the ISR. Can somebody tell me few example devices where CPU polls for interrupts? And where does it finds ISR for them ?

2) If two devices share an IRQ (which is very much possible), how does CPU differs amongst them ? What if both devices raise an interrupt of same priority simultaneously. I got to know there will be masking of same type and low priority interrupts - but how this communication happens between CPU and device controller? I studied the role of PIC and APIC for this problem, but could not understand.

Thanks for reading. Thank you very much for answering.

0 投票
1 回答
2430 浏览

linux-device-driver - 如何在驱动程序代码中注册一个函数作为它的 ISR

根据我之前关于 Linux 内核开发的问题得到的反馈,

我编写了一个驱动程序(在 Linux 内核 v2.6.32 中),通过将其与现有驱动程序进行比较并大量“借用”其代码。司机注册很好。init() 和 probe() 工作正常。我还可以访问外围设备寄存器。:-)

但是我对IRQ/ISR有点模糊。外围设备是输入设备,并在 GPIO 引脚上引发中断。

我如何从当前状态继续处理 IRQ 并执行我的 ISR 功能?

0 投票
1 回答
475 浏览

assembly - ARMv6 FIQ,确认中断

我正在使用 i.mx35 armv6 核心处理器。我已将中断 62 配置为 FIQ,并安装并调用了我的处理程序。目前我的处理程序只是切换一个输出引脚,因此我可以使用示波器测试延迟。使用下面的代码,一旦我触发 FIQ,它就会尽可能快地继续运行,显然没有被确认。我通过中断强制寄存器触发 FIQ,所以我确信源不会这么快触发它。如果我在 FIQ 例程中禁用 AVIC 中的中断 62,则中断只会触发一次。

我已阅读 ARM1136JF-S 和 ARM1136J-S 技术参考手册中有关 VIC 端口的部分,其中涵盖了正确的退出程序。我只有一个 FIQ 处理程序,所以我不需要分支。我不明白的行是:

我不确定 AckFinished 应该是什么或者这个命令应该做什么。

我的 FIQ 处理程序如下:

如果我在第一次关闭后禁用它,我的处理程序会返回正常的系统操作,否则它会不断触发并且系统似乎挂起。

您认为我的假设是正确的,即核心不承认 AVIC 还是可能有另一个原因导致此 FIQ 触发?如果核心不承认中航工业,我需要做什么来承认它?

0 投票
1 回答
1220 浏览

linux-kernel - 如何在短 (5ms) 帧数据传输期间阻止所有 IRQ

我是硬件和设备驱动程序的老手,并且使用更早的 Linux 版本进行硬件控制。我最近回到了使用嵌入式处理的 Linux 和设备控制游戏,并发现 Linux 世界发生了很多变化(变得更好)。但是,我正在努力解决一个硬件控制问题,该问题涉及一个非常快速的基于 SPI 的帧数据传输内核模块,该模块需要在短时间内(5 毫秒)关闭所有中断,以确保数据帧的正确数据传输时序。在 Linux 的“旧时代”,人们会使用 save_flags - cli() - sti() 框架来禁用关键部分的中断。在新的(2.6.33 和更新的)Linux IRQ 控制框架中完成此任务的最简单方法是什么。

斯科特

0 投票
2 回答
1338 浏览

driver - 键盘中断

我正在研究低级设备驱动程序的东西。我对中断和IRQ感到困惑。挂钩键盘的示例驱动程序代码表明键盘中断是 0x31,但我关于微处理器的书说它是 0x09。在打开“设备管理器->键盘->资源”时,它显示 IRQ 为 1。有人可以澄清一下吗?

谢谢,桑吉夫

0 投票
2 回答
2173 浏览

c - 自定义 RS485 协议

我正在为分布式系统中的串行通信编写一个简单的多点 RS485 协议。我正在使用可寻址模型,其中从设备被给予 20 毫秒的响应窗口。主 uC 轮询连接的设备以​​获取更新,并做出相应的响应。我使用了校验和并采取了必要的超限预防措施,以确保连接的设备不会响应格式错误的消息。这种方法在大约 99% 的情况下被证明是有效的,但是如果在通信会话期间引入新设备,我会丢失数据包。“热”插入新设备将对从设备监控的信号产生负面影响,即使只是极短的时间。我在工程的软件方面,但是如何在不尝试重新创建 TCP 的情况下缓解这种情况呢?我们使用轮询模型是因为它速度快,并且可以很好地为我们的应用程序工作,不需要 RTOS 功能。我在每个 cpu 上都有大量的周期,从基本的角度考虑。

0 投票
2 回答
1762 浏览

assembly - 在现代 PC 中测量经过时间的最准确方法是什么?

我知道我可以使用 IRQ0,它是系统定时器,但这基于 14.31818MHz 时钟,对吗?有什么能提供更高的精度吗?

谢谢。

编辑:有谁知道 Windows 函数 QueryPerformanceCounter 使用什么?