首页 文章
  • 3 votes
     answers
     views

    来自中断服务程序的奇怪行为

    我正在编写一个中断服务程序,它应该使用int 70h和IRQ8来处理由RTC引起的中断,以便与某个定时器一起使用 . 不幸的是,我遇到了很多问题,因此我决定将问题分成几个较小的问题,然后独立解决每个问题 . 首先,我放弃了硬件部分并决定首先在软件中实现中断 . 现在,我正在使用NASM和DosBox . 这是ISR代码: segment .code ; ----------------------...
  • 0 votes
     answers
     views

    中断服务例程

    我研究过我们不能真正篡改中断向量表但是当我们在计算机中安装新设备驱动程序时会发生什么,它的地址如何存储在中断向量表中?
  • 3 votes
     answers
     views

    x86汇编中断服务程序可以调用另一个中断吗?

    我可以在独立x686环境中从中断服务程序中调用中断吗? 所以可以做以下事情: isr: pusha call doSomething int 21h popa iret 如果可能,那么这些嵌套中断是否有任何重要的洞穴入口?
  • 0 votes
     answers
     views

    中断的OS例程

    我正在阅读如何在过程映像中执行模式切换,而我对为什么过程映像有内核堆栈而不仅仅是用户堆栈感到困惑?这是在发生中断时完成的 . 用户堆栈和内核堆栈是否做同样的事情?
  • 9 votes
     answers
     views

    什么是禁用中断?

    当进入一个inteerupt处理程序时,我们首先在该cpu上“禁用中断”(使用类似x86上的cli指令) . 在禁用中断期间,假设用户按下键盘上的字母'a',这通常会导致中断 . 但由于中断被禁用,这是否意味着: 永远不会调用'a'的中断处理程序,因为在关键部分禁用了中断或 中断将由操作系统处理但延迟,直到再次启用中断 . 具体来说,用户是否需要再次按'a',如果他第一次按下'a'是在中断...
  • 3 votes
     answers
     views

    软件中断和信号之间的区别

    “使用信号传递软件中断” 这总是如此,如果没有的话 a)两者之间有什么区别 如果是,是否存在一些其他机制,除了传递信号之外,还会引发软件中断 .
  • 0 votes
     answers
     views

    在arduino中使用定时器中断停止串口库的功能为什么?

    我正在使用arduino项目 . 我正在使用定时器中断和串行通信 . 但是一旦定时器中断启用arduino串行库函数就不能正常工作 . 我遇到了这个问题 . 有没有办法做到这一点 . 我想同时使用串行通信和定时器中断 . 使用以下功能会停止串行通信 void initialize() { //timer0 TIMSK0 = 2; ...
  • 4 votes
     answers
     views

    中断处理期间禁用中断

    当内核当前正在处理中断时,为什么禁用中断? 如果错过了携带重要消息的中断怎么办?
  • 0 votes
     answers
     views

    如何处理ISR回调?

    我目前正在开发一个更大的Arduino Mega 2560项目;涉及 Servo 控制和传感器读数 . 我正在使用超声波接近传感器(HC-SR04)和NewPing 1.8库,它使用中断来检测传感器的回声 . 此外,我还阅读了温度和光强度测量 . 通过使用cmdMessenger3库,从HC-SR04超声波传感器接收的距离数据通过USB转发到主机 . 使用标准Servo库,来自主机的消息控制 Se...
  • 3 votes
     answers
     views

    8086中的中断,指令指针和指令队列

    假设向8086发出外部中断请求 . 处理器将在完成当前正在执行的指令(如果有)后处理中断 . 在处理中断之前,通过将数据推入堆栈段,也将保存程序的状态(PSW标志,寄存器等) . 现在,大多数教程/文档都描述了指令指针也被压入堆栈段,这是可以的,因为它指向代码段中的下一个指令字节(就在发出中断请求之前) . 但是指令队列会发生什么?在处理中断请求时,它是否也被压入堆栈段?还是它的内容被清零?在这种...
  • 0 votes
     answers
     views

    运行中断处理程序是创建新进程,还是现有进程的一部分?

    从https://en.wikipedia.org/wiki/Interrupt开始,有三种不同的中断: 硬件中断, 由处理器本身的异常情况引起的软件中断(通常称为陷阱或异常) 由执行指令集中的特殊指令引起的软件中断 . (例如系统调用) 我的问题是,当一个CPU切换到运行中断处理程序时, 是为运行中断处理程序而创建的新进程吗? 或者是现有进程的中断处理程序部分的运行,例...
  • 5 votes
     answers
     views

    QEMU中的ARM中断处理

    我试图了解QEMU如何处理ARM处理器的中断 . 我有一个裸机二进制blob(即,不是linux - 只是一些汇编代码),它是为ARM1176构建的 . 在QEMU中运行时,在初始化期间,二进制blob中的代码设置CPSR的第13位,指示中断向量表位于 0xFFFF0000 . 连接GDB并将指令转储到该地址,我确实可以看到相应的中断向量表 . 在一个IRQ上,它跳转到 0xFFFF0018 ...
  • 0 votes
     answers
     views

    ARM Cortex M NonMaskable中断也是NonClearable?

    我正在使用一个非常定制的非公共安全IC,它具有ARM Cortex M3内核 . 在hw安全违规的情况下,这个IC会触发一个NMI中断,所以它很好,我正在做我需要的任何违规行为 . 但是当发生违规时,它总是一次又一次地进入NMI Handler . 我们可能需要清除中断挂起标志,但不应该直接清除它 . 因为SCB-> ICSR bit31表示“进入处理程序会将此位清除为0” . 我还尝试使用...
  • 4 votes
     answers
     views

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

    我正在尝试在uboot中配置GPIO中断,这是为了测试中断响应时间而无需任何操作系统干预(裸机) . 我能够配置引脚复用并成功设置GPIO引脚的中断 . 我的问题是关于注册中断服务程序 . 我看到我的平台的中断向量表位于地址0xFFFF0000(我读了系统控制寄存器以找出这个) . GPIO的中断ID为56,我刚刚计算了中断服务程序应该驻留的地址,并尝试用指向我的ISR例程的指针写入地址 . 这...
  • 1 votes
     answers
     views

    为同一端口的不同GPIO引脚配置中断处理程序

    我想在mqx TWRK60D100中使用5 Gpios作为用户输入按钮 . 我按照配置为 #define LEFT_BUTTON (GPIO_PORT_E | GPIO_PIN26) #define LEFT_BUTTON_MUX_IRQ (LWGPIO_MUX_E26_GPIO) #define RIGHT_BUTTON (GPIO_POR...
  • 3 votes
     answers
     views

    FreeRTOS和PIC24EP&正确的中断处理

    我已经在我的项目上使用FreeRTOS一段时间了,我不得不说我喜欢它 . 我很难面对一个杀了我的虫子 . 我的代码包含大量代码,大约80个文件,并使用几个微芯片堆栈并运行大约10个任务 . 问题是每天大约2-3次,芯片将进入地址错误中断,我真的无法找出问题的根源 . 我相信这个错误发生在中断的时刻,因为我已经能够减少发生故障,在一个UART中使用DMA传输,将中断减少80倍 . 我一直在阅读很多关...
  • 8 votes
     answers
     views

    STM32F411:是否真的需要清除外部中断标志?

    我已经购买了STM32F411核板,现在我正在尝试了解HAL的各种零碎 . 从外部中断开始似乎是一个好主意,因为电路板有一个连接到PC13的按钮 . 所以我设置了一个简单的切换频率闪烁 . 下面的代码有点简化: #define LED_PIN GPIO_PIN_5 #define BTN_PIN GPIO_PIN_13 static uint32_t blink_period = 250; i...
  • 3 votes
     answers
     views

    STM32中断Handeling如果条件

    我如何通过以下代码使用一个处理程序进行2次中断: SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PB | SYSCFG_EXTICR1_EXTI1_PC; EXTI->IMR = EXTI_IMR_MR0 | EXTI_IMR_MR1; EXTI->RTSR = EXTI_RTSR_TR0| EXTI_RTSR_TR1; /* Configu...
  • 1 votes
     answers
     views

    同一EXTI Line STM32上有多个中断

    对于PA1和PC1的例子,是否可以从相同的EXTI线获得多个中断,它们都在EXTI1上 . 因此,通过点击PA1上的按钮,LED在PB6上亮起,然后点击PC1,LED在PC0上切换 . 微控制器==> STM32F091 这是我用于2个不同行的中断的代码: //PC1 SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI1_PA; EXTI->IMR ...
  • 0 votes
     answers
     views

    SysTick中断导致执行跳转到STM32F030上的0x1fffxxxx

    我正在尝试在Linux的SW4STM32中使用 SysTick_Handler ,但每当触发SysTick中断时,执行都会跳转到系统内存中的某个位置 . 根据我的理解,它应该跳转到我声明或未通过的 void SysTick_Handler(void) 中,在startup_stm32中声明的 Default_Handler 中定义了中断向量表 . 我在 SysTick_Handler 中设置了一个...
  • 3 votes
     answers
     views

    不触发STM32 HAL定时器中断

    我正在尝试使用中断从我的STM32F746ZG设备定期发送和串行字符串 . 大多数代码都是由stm32cubemx自动生成的 . 我在每次中断时都设置了硬件断点(jlink),但我只在初始化时输入一次周期时间 . 当我随机暂停调试器时,我看到计数器值在0和1000之间,如预期的那样 . 所以我知道计数器会每秒重置一次 . 内部时钟以16MHz运行 . 我对嵌入式设备的体验仅限于BBB,Raspbe...
  • 1 votes
     answers
     views

    ARM 7嵌套中断混乱

    我一直在阅读经典的ARM 7微控制器 . 有两种类型的中断:IRQ和FIQ . FIQ允许更快的中断处理并具有比IRQ更高的优先级 . 它声明现代ARM版本具有嵌套中断 . 这实际上是否意味着ARM 7只能处理分配给MCU的2个中断,例如来自外部源的2个边沿触发中断,而不是更多? 提前致谢
  • 3 votes
     answers
     views

    qemu kvm:如何获得性能监控中断?

    我在我的OS内核中编写了一些函数,用于在指令计数器溢出时发出性能监视中断(PMI) . 它在我的机器上运行良好(Intel core i5) . 但是当我在qemu上运行它时 qemu-system-x86_64 -enable-kvm -cpu host -m 256 -serial mon:stdio -cdrom var / run / hypervisor.iso 中断永远不会发生 ....
  • 1 votes
     answers
     views

    stm32 - 中断句柄

    在外部中断功能中,我想通过调用main函数进行复位 . 但之后,如果我有一个新的中断触发器,MCU认为它正在处理中断功能而它不会再次调用中断功能 . 我的解决方案是什么? (在我的项目中,我不允许调用软复位功能)
  • 0 votes
     answers
     views

    USB主控制器引起的中断

    如果我使用具有中断 endpoints (USB / KBD /触摸屏)的USB设备,则主机控制器通过轮询此 endpoints 从 endpoints 获取数据 . 因此在Linux中,此管道称为URB(USB请求块)...此URB由主机控制器启动 . 所以数据是由主机控制器收集的 - 现在,我失去了路径 . 我认为数据被缓冲到ram,可能是由dma控制器(不确定)......并且主机控制器必须...
  • 0 votes
     answers
     views

    如何使用软件串行中断而不禁用串行库

    我正在使用 AC dimmer 将 software serial 的灯光调暗为 wireless communication . 生成无线通信中断时,它会禁用软件串行库!结果导致轻弹/眨眼 . 有没有办法同时使用这两种方法?我也尝试过arduino内置noInterrupt()和interrupt()函数,但没有结果 . 删除软件串行实例 hc12 时,不会发生闪烁/闪烁 全局变量 Softw...
  • 1 votes
     answers
     views

    进入中断处理程序后,是否必须禁用硬件上的中断?

    硬件引发了一个中断,cpu在IRQ线上调用了注册的中断处理程序 . 在我的设备驱动程序中,在进入处理程序并在完成所需处理后重新启用它们时是否必须禁用中断? 或者,如果我们只是在调用中断处理程序后清除所需的中断状态寄存器而不禁用和重新启用它们,这是否可以? 什么是正确的过程,这种处理架构是特定的(x86,ARM)?
  • 1 votes
     answers
     views

    C中的信号处理

    我制作了以下程序来学习 SIG_SETMASK 的行为 . 以下程序应该阻止 SIGINT 中断信号,直到 func() 函数调用 sigprocmask(SIG_SETMASK,&fOnemask,NULL); 在fOnemask为空的情况下,cuz之前没有信号存储在sigset中 . 但正如我所说的那样 sigprocmask(SIG_SETMASK,&fTwoCmask,N...
  • 2 votes
     answers
     views

    如何在没有连续重置的情况下将esp8266从深度睡眠中唤醒

    我正在使用esp8266构建一个IR到wifi桥 . 基本上我正在构建一个IR接收器,它连接到IR遥控器内的esp8266,通过wifi将接收到的IR遥控按键转发到服务器 . 我正在使用Wemos D1 Mini . 我已经有IR解码和网络转发部分工作,但它总是打开,它使用大量的电池,特别是考虑到99%的时间没有按下按钮 . 我希望它在没有按下按钮一段时间后进入深度睡眠状态 . 如果我将IR接收器...
  • 1 votes
     answers
     views

    在x86中中断处理页面错误到服务设备内存副本

    我正在尝试在x86 CPU上计算出中断的控制流,特别是页面错误 . 到目前为止,这是我能想到的: IDT填充了服务例程地址 . 发生中断 . CPU将EFLAGS,CS和EIP保存到堆栈 . EIP设置为从IDT获取的ISR地址,即 mov eip, [idtr+interruptNum*4] 中断例程执行 . 中断例程以 iret 指令完成 . 现在,假设中断实际上是...

热门问题