interrupt-handling相关内容

如何调试 STM32 设备中的意外复位?

我正在使用 STM32F107 芯片在 C 语言中进行一些开发,并且在某些时候,当我调用特定函数时,设备开始重置.我没有调试器,我的调试只是通过串行端口的纯文本. 我使用了其他一些微控制器,在这些微控制器中我能够访问寄存器以查看重置的原因,但我似乎找不到该设备的等价物.我知道 Cortex-M3 的硬件异常,但我不知道其中一个是否被触发,因为当我在这些处理程序中时,我似乎无法通过 usart ..
发布时间:2022-01-25 12:47:22 其他开发

我们如何在我们的 iphone 应用程序中检测到通话中断?

我需要在我的应用程序中检测来电中断.当应用程序处于活动状态并且有任何来电或短信时,我的应用程序会获取呼叫号码以防通话,并获取所有详细信息以防短信.我想将这些存储在我的应用程序中. 这是否可以在我们的 iPhone 应用程序中检测到通话中断和来电短信提醒? 解决方案 你将不得不使用 CoreTelephony 框架您可以使用 CTCall 类获取有关调用状态的信息.CTCallCent ..
发布时间:2022-01-19 20:56:48 移动开发

使用 Python 代码实现更快的正交解码器循环

我正在使用 BeagleBone Black 并使用 Adafruit 的 IO Python 库.编写了一个简单的正交解码函数,当电机以大约 1800 RPM 运行时,它工作得非常好.但是当电机以更高的速度运行时,代码开始丢失一些中断,编码器计数开始累积错误.你们对我如何使代码更高效或者是否有可以以更高频率循环中断的函数有什么建议吗. 谢谢,凯尔 代码如下: #定义编码器计数函数定 ..

用户空间中的 Linux 中断处理

在 Linux 中,在用户空间代码而不是内核空间中处理设备中断的选项有哪些? 解决方案 经验告诉我们可以为几乎所有 PCI 适配器编写良好且稳定的用户空间驱动程序.它只需要一些复杂性和内核中的一个小的代理层.UIO 是朝这个方向迈出的一步,但如果您想正确处理用户空间中的中断,那么 UIO 可能还不够,例如,如果设备不支持 UIO 所依赖的 PCI 规范的中断禁用位. 请注意,进程唤醒延迟 ..
发布时间:2022-01-04 22:50:48 服务器开发

什么是 linux 中的链式 irq,它们什么时候需要使用?

什么是链式 IRQ?chained_irq_enter 和 chained_irq_exit 是做什么的,因为在中断发生后,IRQ 线被禁用,但是 chained_irq_enter 正在调用与屏蔽中断相关的函数.如果线路已经禁用为什么要屏蔽中断? 解决方案 什么是链式 irq ? 如何在父(中断控制器)设备的 IRQ 处理程序中调用子设备的中断处理程序有两种方法. 链式中 ..

中断处理程序使用哪个堆栈 - Linux

在多任务系统中,当任何硬件对特定 CPU 产生中断时,CPU 可以执行以下任一情况,除非它已经在为 ISR 提供​​服务: 用户态进程正在 CPU 上执行 内核模式进程正在 CPU 上执行 想知道在上述两种情况下中断处理程序使用哪个堆栈以及为什么? 解决方案 所有中断都由内核处理.这是由为该特定中断编写的中断处理程序完成的.对于中断处理程序,有 IRQ 堆栈.中断处理程序堆栈 ..

中断处理程序中的printk,真的有那么糟糕吗?

每个人都知道中断处理程序应该尽可能短.并且添加诸如 printk 之类的函数用于在中断处理程序中进行调试是不应该做的.其实我之前在调试linux内核的时候,我写的一个中断驱动的char设备的时候试过,它破坏了驱动程序的时序. 我的问题是,为什么会发生这种情况?printk 函数被缓冲了!这意味着,据我所知,数据被插入到队列中,并且稍后被处理,很可能是在中断处理程序完成之后. 那为什么不 ..
发布时间:2022-01-04 22:44:10 其他开发

Linux ISR 入口点在哪里

我正在尝试了解 Linux 内核中的系统调用接口和实现.我了解 entry.S 以及 libc 标头和实现之间的关系.我想知道的是内核中第一次收到 int 80h 的位置,即决定它实际上是 80h 中断的地方.任何人都可以指向我的 LXR 链接吗? 解决方案 CONFIG_X86_32 arch/x86/kernel/entry_32.S:system_call (INT $0x80 ..
发布时间:2022-01-04 22:34:03 服务器开发

当我们使用 irq_set_chained_handler 时,irq 行是否会被禁用?

当我们使用 irq_set_chained_handler 时,当我们为相关的处理程序提供服务时,irq 行不会被禁用,就像 request_irq 一样. 解决方案 中断是如何设置的并不重要.当发生任何中断时,在中断处理程序期间将禁用所有中断(对于该 CPU).例如,在 ARM 架构上,在 C 代码中找到中断处理的第一个位置是 asm_do_IRQ() 函数(在 arch/arm/ker ..

ftrace 如何跟踪中断服务例程?

ftrace 用于内核的函数跟踪.现在它是如何处理中断的.它可以在中断模式下跟踪内核函数吗?如果是这样,你能解释一下它是如何工作的.我正在尝试编写一个跟踪函数调用的函数,它在 Supervisor 模式下工作正常,但在中断模式下不起作用(进入循环).我需要让它在 IRQ 模式下工作. 解决方案 如 Linux内核 ARM 异常堆栈 init 详细信息,Linux 使用的 IRQ 堆栈量是最 ..

什么是传统中断?

我正在从事一个项目,我试图弄清楚如何在 ARM 架构的全局中断控制器中处理中断.我正在使用 pl390 中断控制器.我看到有一行被称为绕过分发器逻辑的遗留中断.假设可以将 2 个中断编程为传统中断.任何人都可以帮助解释什么是遗留中断?我尝试在线搜索但没有任何运气. 解决方案 遗留中断是 GIC 到达之前 ARM 中的两个中断:nIRQ - 正常中断请求,和 fIRQ - 快速中断请求. ..
发布时间:2021-11-17 22:30:22 其他开发

ARM 系统模式在嵌套中断中如何有用?

谁能解释一下,当我们嵌套中断时,系统模式究竟是如何工作的? 根据 ARM 网站 ARMv4 和更高版本的体系结构包含一个称为系统模式的特权模式,以克服这个问题.系统模式与用户模式共享相同的寄存器,可以运行需要特权访问的任务,并且异常不再覆盖链接寄存器. 那么系统模式如何使用用户模式的寄存器? 最多可以处理什么层次的嵌套中断? 解决方案 尝试在 IRQ 模式下处理嵌套 ..
发布时间:2021-11-17 22:23:15 其他开发

重新定位 ARM 异常向量?

我将如何重新定位 ARM 异常向量? 基本上,我需要能够以某种方式重新映射它们,因此当 ARM 内核尝试执行向量时,它应该执行存储在内核 RAM 位中而不是 ROM 中的自定义异常向量 即在 0x0 处.那可能吗?还是我打算将中断从 ROM 路由到内核? 所以本质上,有没有办法告诉 ARM 内核,“这是你的向量表的新地址"?我知道你可以启动 CPU在高矢量模式下,但这不是我要找的.我需 ..
发布时间:2021-11-17 22:21:56 其他开发

带有 GIC 的 SMP ARM 系统上的中断处理

我想知道从任何设备被中断的那一刻起中断处理是如何工作的.我知道点点滴滴的中断处理,并且想要清楚地了解中断处理的端到端图片.让我把我所知道的一点点介绍一下关于中断处理. 假设 FPGA 设备通过电线中断并获取一些数据.该 FPGA 设备的设备驱动程序已经使用 request_irq 函数注册了代码(中断处理程序). 所以现在 FPGA 设备有一个 IRQ 线,它在调用 request_i ..
发布时间:2021-11-17 22:16:15 其他开发

我的中断处理程序应该禁用中断还是 ARM 处理器自动执行?

我们的小组正在使用自定义驱动程序来连接共享 I2C 总线上的四个 MAX3107 UART.四个 MAX3107 的中断连接(即通过逻辑或'ing 共享中断)到 ARM9 处理器(LPC3180 模块)上的 GPIO 引脚.当这些设备中的一个或多个中断时,它们会将配置为电平敏感中断的 GPIO 线拉低.我的问题涉及是否需要禁用处理程序代码中的特定中断线.(我应该补充一点,我们正在运行 Linux ..
发布时间:2021-11-17 22:14:39 其他开发

QEMU 中的 ARM 中断处理

我试图了解 QEMU 如何处理 ARM 处理器的中断.我有一个为 ARM1176 构建的裸机二进制 blob(即,不是 linux——只是一些汇编代码).在 QEMU 中运行时,在初始化期间,二进制 blob 中的代码设置 CPSR 的第 13 位,指示中断向量表位于 0xFFFF0000.挂上GDB,把那个地址的指令dump出来,确实可以看到对应的中断向量表.在 IRQ 上,它跳转到 0xFFF ..
发布时间:2021-11-17 22:13:40 其他开发

ARM cortex A9 中的处理器间中断(如何在 Linux 中为软件生成的中断 (ARM) 编写处理程序?)

我读到 ARM 中软件生成的中断用作处理器间中断.我还可以看到其中 5 个中断已在使用中.我也知道 ARM 提供了 16 个软件生成的中断. 在我的应用程序中,我在 ARM-cortex 内核和 Linux 上运行裸机应用程序.我想将一些数据从运行裸机应用程序的核心传送到运行 Linux 的核心.我计划将数据复制到片上内存(共享),我将在核心(运行 linux)上触发 SGI 以指示一些数据 ..
发布时间:2021-11-17 21:52:59 其他开发

在 ARM cortex A-9 的 U-boot 中启用中断

我正在尝试在 uboot 中配置 GPIO 中断,这是为了在没有任何操作系统干预(裸机)的情况下测试中断响应时间.我能够配置引脚复用,并成功地使用 GPIO 引脚设置中断. 我的问题是关于中断服务程序的注册.我看到我的平台的中断向量表位于地址 0xFFFF0000(我阅读了系统控制寄存器以找出这一点).GPIO 的中断 ID 是 56,我只是计算了我的中断服务例程应该驻留的地址,然后尝试使用 ..
发布时间:2021-11-17 21:43:48 其他开发

中断是否会中断 Arduino 上的其他中断?

我有一个 Arduino Uno(很棒的小设备!).它有两个中断;我们称它们为 0 和 1.我使用 attachInterrupt() 将一个处理程序附加到中断 0,将另一个处理程序附加到中断 1:http://www.arduino.cc/en/Reference/AttachInterrupt. 中断 0 被触发并调用其处理程序,该处理程序执行一些数字运算.如果中断 0 的处理程序在中断 ..