84得票12回答
FIQ和IRQ中断系统有什么区别?

我想了解在任何微处理器中(例如ARM926EJ),FIQ和IRQ中断系统之间的区别。

49得票4回答
信号和中断的比较

根据各种参考资料,我对Linux中的信号有以下主观定义:“用于通知进程某个特定事件发生的触发器。该事件可能是软件异常。此外,信号也可用于IPC机制。” 我的问题是: 我认为只有异常(软件中断)通过信号被通知。那硬件中断呢? 信号的各种来源是什么?在我看来,内核似乎总是信号的来源。(除了用于...

29得票5回答
如何保存x86_64中断服务程序的寄存器?

我正在查看一些来自学校项目的旧代码,在我的笔记本上尝试编译时遇到了一些问题。它最初是为旧版本的32位gcc编写的。无论如何,我试图将一些汇编代码转换为64位兼容代码,并遇到了一些问题。 这里是原始代码:pusha pushl %ds pushl %es pushl %fs pus...

18得票3回答
ESP8266/Arduino:为什么需要在ISR和从ISR调用的函数中添加ICACHE_RAM_ATTR宏?

注意:自从esp8266/Arduino 发布3.0.0版后,ICACHE_RAM_ATTR已更改为IRAM_ATTR。对于未来的读者,我更新了链接到ESP8266 Arduino Core文档,但保留了问题的其余部分。 我读到,在我的Arduino代码中,为了防止随机崩溃,我需要向中断...

15得票4回答
在现代C++中,是否仍应使用volatile来与中断服务例程共享数据?

我看到类似的问题,也看到了不同的答案,仍然不确定它们是否适用于我的使用情况,所以我会在这里问一下。如果这是一个重复问题,请告诉我! 考虑到我正在使用C++17和gcc-arm-none-eabi-9工具链为STM32微控制器(裸机)进行开发: 我是否仍需要使用volatile来在ISR和mai...

13得票2回答
当你禁用中断时会发生什么,对于你不知道如何处理的中断应该怎么办?

当你使用x86指令中的cli禁用中断时,会发生什么? PIC是否等待你打开中断,并在此时触发中断?(如果是,它将等待多长时间?如果超过时间会发生什么?) 从设备的角度来看,中断是否被发送到“黑洞”中,没有任何响应? PIC是否以某种方式告诉设备“CPU忙碌”或其他信息? 还是会发生其他的事...

13得票2回答
CPU如何查找ISR并区分设备

我首先要分享的是我所知道的一切 - 就是完全的混乱。关于这个主题有几个不同的问题,所以请不要感到困惑 :). 1) 要找到ISR,CPU需要提供一个中断号。在x86机器(286/386及以上版本)中,有一个包含ISRs的IVT;每个条目的大小为4字节。因此,我们需要将中断号乘以4来找到ISR...

11得票1回答
在中断服务程序中,如果出现过早的“return”会发生什么?

我正在使用AVR-GCC 4.9.2,我想知道在AVR上的ISR中如果发生早期返回会发生什么?ISR(USART_RXC_vect) { ... if(idx == BUFSIZE) return; ... } 在汇编中,return会被翻译成ret指...

8得票2回答
68040错误地执行了if else分支

有没有熟练的68k汇编程序员?我正在使用商业版Green Hills编译器为Motorola 68040编译代码,但发现代码表现非常奇怪。有时候,代码会进行if/else比较,却执行了错误的分支。例如: float a = 1, b = 2; if (a < b) do c;...

8得票2回答
在实现原子访问保护时,STM32微控制器中禁用和重新启用中断的方法有哪些?

当在没有操作系统的裸机单线程协作多任务应用程序中与ISR共享易失性变量时,通过“原子访问保护”或“中断保护”来强制执行对该变量的原子访问是一种标准技术,具体方法如下: // 1. save interrupt state // 2. disable only the interrupts n...