interrupt相关内容

ARM 中断和上下文保存

我试图了解中断在 ARM 架构(具体来说是 ARM7TDMI)中是如何工作的.我知道有七种异常(复位、数据中止、FIQ、IRQ、预取中止、SWI 和未定义指令)并且它们在特定模式下执行(分别为 Supervisor、Abort、FIQ、IRQ、Abort、Supervisor 和 Undefined).我有以下问题. 1. 当CPSR(状态寄存器)中的I和F位设置为1以禁用外部和快速中断时, ..
发布时间:2021-11-17 22:33:52 其他开发

什么是传统中断?

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

中断的尾链

什么是 ARM Cortex M3 中 NVIC 支持的中断尾链. 解决方案 尾链是对异常的背靠背处理,没有中断之间的状态保存和恢复开销.这处理器跳过八个寄存器的弹出和八个寄存器的推送当退出一个 ISR 并进入另一个 ISR 时,因为这没有效果在堆栈内容上.Cortex™-M3 技术参考手册 这基本上意味着,在不重复堆栈的情况下处理挂起的中断. 如果你想了解更多细节,我推荐 ..
发布时间:2021-11-17 22:26:33 其他开发

为什么我的 SWI 指令挂起?(BeagleBone Black, ARM Cortex-A8 cpu)

我开始为使用 ARM 的 BeagleBone Black 编写玩具操作系统基于 Cortex-A8 的 TI Sitara AM3359 SoC 和 U-Boot 引导加载程序.我有一个简单的独立 hello world 应用程序写入 UART0,到目前为止我可以通过 U-Boot 加载,现在我正在尝试继续中断处理程序,但我无法让 SWI 做任何事情,只能挂起设备. 根据 AM335x T ..
发布时间:2021-11-17 22:23:54 其他开发

ARM Cortex M4 SVC_Handler“UsageFault"

我正在为个人迷你 ARM 内核项目创建上下文切换程序,上下文切换程序完全用汇编编写.问题是当我进行 SVC 调用 (svc 0) 时,我输入了 SVC_Handler,但是当我尝试执行下一条指令时,我输入了一个不同的处理程序(“UsageFault_Handler").故障发生在我可以弹出 SVC_Handler 中的任何寄存器之前. 这是我的 gdb 屏幕的寄存器转储(在我进入 SVC_H ..
发布时间:2021-11-17 22:23:48 其他开发

电平触发中断处理和嵌套中断

[更新问题,因为 GIC v2 有 3 个寄存器 ACK、EOIR、DIR] 这是最基本的问题,我需要别人来澄清并说明以下顺序是正确的. 在下面的拱门中, [Core] ----- [ Interrupt Controller ] --Level Triggered -- [Device] 设备提升电平并通知中断控制器 B.中断控制器触发中断的核心.(假设内核的中断已启用) ..
发布时间:2021-11-17 22:23:21 服务器开发

STM32F4上的Libopencm3中断表

我在 STM32F4 上的项目中使用 libopenCM3.我以前使用过 ST 开发的标准外设库和较新的硬件抽象层. 在这些库中,您有带有向量表定义的程序集文件(启动文件). 这是我对 libopenCM3 所缺少的.你能告诉我在哪里可以找到这张桌子吗?还是以其他方式完成? 我真的需要在我的项目中使用中断. 谢谢. 解决方案 你能告诉我在哪里可以找到这张桌子吗? ..
发布时间:2021-11-17 22:21:33 其他开发

如何在 C 或内联汇编中设置 ARM 中断向量表分支?

谁能告诉我如何在没有 RTOS 或 Linux 操作系统的裸机环境中使用 C 或内联汇编设置 ARM9 中断向量表的示例? 具体来说,我如何使用内联汇编或 C 将分支设置为以 C 编码的 IRQ 中断处理程序 ISR? ////timer1 64 位模式中断处理程序连接到 TINT2 中断=#34///\todo 我想一旦我开始工作就需要确认它中断无效interruptHandlerTim ..
发布时间:2021-11-17 22:17:26 其他开发

带有 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 其他开发

暂时禁用 ARM 上的中断

我开始使用 ARM 平台(特别是 TI TMS570 系列). 我有一些带有关键区域的代码,我不希望在这些区域发生异常.所以我想在进入区域时保存 IRQ 和 FIR 启用标志,并在退出时恢复它们. 我该怎么做? 解决方案 要在 CPU 上临时屏蔽 IRQ 和 FIQ,ARMv7 的最佳选择是使用 cps: //汇编代码假设中断在进入时未屏蔽cpsid if//屏蔽 IRQ 和 ..
发布时间:2021-11-17 22:12:51 其他开发

中断在多核系统中是如何工作的?

我想为Raspberry pi 2上的按钮中断编写代码.该板使用四核Broadcom BCM2836 CPU(ARM架构).这意味着,该板上只有一个 CPU(Raspberry pi 2).但是我不知道在多核系统中如何中断.我想知道中断线是连接到每个内核还是一个CPU.所以,我通过谷歌找到了下面的段落. 多核系统上的中断在多核系统上,每个中断都指向一个(并且只有一个)CPU,尽管与哪个无关. ..
发布时间:2021-11-17 22:11:08 其他开发

中断如何在多核 ARM cpu 上工作

这个问题已经在 x86 上得到了回答,但是我找不到太多关于 ARM MP cpu 的信息,比如 Cortex-A9、Cortex-A15 等等...... 更重要的是,我想知道是否可以在没有任何配置等的情况下在非主 CPU 上引发中断. 我正在开发一个只处理主 cpu 的软件,因此我将其余部分置于 WFI 状态,但是我不知道中断如何在 MP arm cpu 上工作,主 cpu 是否有可 ..
发布时间:2021-11-17 22:05:34 其他开发

如何知道Linux中特定引脚的中断/GPIO编号

我正在做一个需要在 Linux 中处理中断的项目. 我使用的板子是 ARM9Board 基于三星的 s3c6410 MCU(arm 11 处理器),具有以下 I/O 接口: 如图所示,我有用于外部中断的 EINTx 引脚和作为 GPIO 引脚的 GPxx 引脚,我不介意使用它们中的任何一个,但我没有它们的编号! 对于 EINTx 引脚: 当我打电话 int request ..
发布时间:2021-11-17 22:05:15 服务器开发

从 FIQ 中断处理程序访问内核驱动程序数据失败

在 ARM FIQ 中断上,我们保留了一些仅供 FIQ 使用的寄存器,这些是“保存状态"的便捷方式,例如 FIQ 调用之间的数据传输. 目前我正在从 FIQ 触发一些 GPIO 引脚,它按预期工作.在设置 FIQ 处理程序时,我将指针传递到数据寄存器,这些寄存器是用 ioremap 映射的.工作代码如下所示: //驱动初始化:静态字符* dout0;静态字符* din0;...静态 int ..

arm 睡眠模式进入和退出的区别 WFE、WFI

我对 ARM 体系结构相当陌生,我正在努力了解唤醒机制. 所以首先,我发现很难找到关于此的好的信息.ARM 的文档在这个主题上似乎非常简洁. 我想了解的是 Cortex(尤其是 M0,因为我正在使用它)何时会醒来. 作为参考,我也参考了以下内容: 目的是什么WFI 和 WFE 指令以及事件信号? 为什么处理器进入使用WFE指令时待机,而使用WFI指令时不待机? WF ..
发布时间:2021-11-17 21:53:35 其他开发

为什么ARM上有两个向量表地址?

在ARM架构中,有一个低向量地址0x0和高向量地址0xFFFF0000.我想知道为什么可能需要两个向量地址?在 Intel 微处理器和微控制器中,有一个向量地址. 有 2 个向量地址有什么特别的原因吗? 解决方案 一些微控制器系列有不止一个到多个不同的起始地址和/或它们使用相同的地址和基于带引脚的切入和切出地址解码这样您就可以从供应商创建的一个引导加载程序、用户引导加载程序或用户应用 ..
发布时间:2021-11-17 21:52:44 其他开发

ARM 引导加载程序:中断向量表理解

下面的代码是u-boot定义中断向量表的第一部分,我的问题是每一行将如何使用.我理解前两行是起点和要实现的第一条指令:reset,我们在下面定义了reset.但是我们什么时候会使用下面的这些说明呢?根据System.map,每条指令都有一个固定地址,所以_fiq在0x0000001C,当我们要执行fiq时,我们将这个地址复制到pc然后执行,对吗?但是我们可以通过哪种方式跳转到这条指令:ldr pc ..
发布时间:2021-11-17 21:50:59 其他开发

ARM Cortex M3 如何确定硬故障前的程序计数器值?

我有一个使用 STM32F103 (ARM Cortex M3) 的嵌入式项目,它在发布模式下偶尔会出现硬故障.作为恢复的一部分,我想从硬故障之前检索 PC 值并将其存储在电池后备区域中供以后调试. 如何确定硬故障点的程序计数器值?显然,PC 现在已设置为硬故障中断内的位置. 我应该在哪里看?有没有普通模式寄存器组的地址? 谢谢! 解决方案 Cortex-M3 使用与“经 ..
发布时间:2021-11-17 21:50:52 其他开发

在 STM32 上禁用 IRQ

有什么办法可以禁用 Cortex M3 MCU 的所有 irq,除了一个? 我的问题是我的系统运行了多种具有不同优先级的 irq,我想禁用所有 irq,除了处于特定状态的 irq. 我知道我可以通过使用“__disable_irq()"指令来禁用所有的irq,但是如果我之前没有调用过“__enable_irq()"的话,我在调用这个指令之后就不能启用一个irq. 感谢您的帮助, ..
发布时间:2021-11-17 21:48:40 其他开发