标签: interrupt

处理许多中断源

考虑到各种传感器有1​​00多种中断方式.有可能所有这些都可以同时发生.如何设计软件以有效地处理它?

embedded processor rtos interrupt

1
推荐指数
1
解决办法
233
查看次数

从代码中获取/ proc/interrupts等中断计数器?

我可能会错过显而易见的,但是如何在没有/proc/interrupts从C/C++程序内部手动解析的情况下检索特定中断的中断计数器?

提前致谢!

最好的问候,马丁

c c++ linux interrupt

1
推荐指数
2
解决办法
2348
查看次数

中断10h

有这么多的服务可以用于中断10h,我想问一下他们中的两个与我混淆的问题

首先是,

 AH = 06H SCROLL UP WINDOW
 AH = 07H SCROLL DOWN WINDOW
Run Code Online (Sandbox Code Playgroud)

在DOS中编码时,向上滚动/向下滚动是什么意思?

看看这个,

; AL = NUMBER OF LINES BY WHICH TO SCROLL UP (00H = CLEAR ENTIRE WINDOW)
; BH = ATTRIBUTE USED TO WRITE BLANK LINES AT BOTTOM OF WINDOW
; CH,CL = ROW,COLUMN OF WINDOW'S UPPER LEFT CORNER
; DH,DL = ROW,COLUMN OF WINDOW'S LOWER RIGHT CORNER
Run Code Online (Sandbox Code Playgroud)

这里它说BH用于在窗口底部写入空行,但是当我使用此代码时,

MOV AH, 06H
MOV AL, 00H
MOV CX, 00H
MOV DH, 25
MOV DL, 80
INT …
Run Code Online (Sandbox Code Playgroud)

video assembly interrupt

1
推荐指数
1
解决办法
1687
查看次数

scheduler_tick - 从哪里调用Linux?

当处理器有机会获得内核代码并执行维护和调节工作时,我想了解中断机制.我所知道的是,定时器中断为操作系统提供了这种功能.

1)我想知道究竟什么是相关的中断号,以及在Linux情况下调用的第一个OS例程是什么.如果我知道文件和函数名称,那将会很好.

对于Linux,scheduler_tick是调用新任务的内核函数,但是未知的是谁调用scheduler_tick及其父代?

2)是否还有其他中断在Linux中调用scheduler_tick?他们是哪一个,如果有的话?

 /*
   This function gets called by the timer code, with HZ frequency.
   We call it with interrupts disabled.
 */

 void scheduler_tick(void)
 {
         int cpu = smp_processor_id();
         struct rq *rq = cpu_rq(cpu);
         struct task_struct *curr = rq->curr;
.......
Run Code Online (Sandbox Code Playgroud)

linux schedule interrupt

1
推荐指数
1
解决办法
5072
查看次数

如何在中断中获取相应的MSI消息?

我们在PCIe卡上使用FPGA.我能够保留适当的资源并正确触发MSI中断.我的问题是辨别中断源:我的Linux驱动程序只接收来自FPGA的不同中断源的单个MSI中断.因此,FPGA人员通过总线发送MSI消息中编码的原因.

问题:

  1. 是否有可能访问此消息以便从我的ISR中获取此框架中的信息?(我知道我总是可以检查FPGA的中断状态寄存器,但使用MSI消息会更优雅,并且可以避免额外的总线访问.)
  2. 如果1不可能,切换到MSI-X会解决这个问题,这样我就可以直接得到这些信息吗?(我知道MSI-X是首选解决方案,但FPGA人员指定了MSI)

谢谢您的帮助!

linux driver interrupt pci-e

1
推荐指数
1
解决办法
2829
查看次数

如何从ARM Cortex-M3上的中断处理程序中重新启用中断?

背景:
我使用的是没有操作系统的cortex-M3 ARM内核.

我的主循环等待来自中断处理程序的标志然后执行一个函数doBigTask().

在一个单独的中断处理程序中,我想执行另一个函数doSmallTask(),但由于这个函数也非常重要,我仍然希望处理其他与I/O相关的中断.

我的问题:
从内部简单地启用中断是否存在任何问题doSmallTask()?例如,在中断已经被禁用后退出中断处理程序是否有任何复杂性?

注意:我不希望发生重入中断,因为doSmallTask()在下一个中断触发它之前就会完成.

int flag = 0;

void doSmallTask()
{
   asm volatile ("cpsie i");  // Enable interrupts
   // do rest of function
   // ...
}

void irqHandler1()
{
   flag = 1;
}

void irqHandler2()
{
  doSmallTask();
}

void irqHandler3()
{
  // service I/O
}

int main()
{
  while(1)
    if (flag)
    {
      doBigTask();
      flag = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

embedded arm interrupt cortex-m3

1
推荐指数
1
解决办法
2042
查看次数

golang在cmd.Start启动的进程中处理kill

我有两个去节目.ProgA使用cmd.Start()启动ProgB.从ProgA我尝试杀死ProgB,但是ProgB应该立即被杀死,它必须在死前做一些清理工作.所以我在ProgB中使用signal.Notify来处理sigcall.SIGKILL,但每当ProgA调用progb.Process.Kill()时,它似乎不会通知ProgB(将内容写入sigc通道)

在ProgB我有这样的通知:

signal.Notify(sigc, syscall.SIGKILL)
go func() {
            fmt.Println("started listening")
            <-sigc
            fmt.Println("sig term")
            cleanUp()
            os.Exit(1)   

}()
someLongRunningCode() 
Run Code Online (Sandbox Code Playgroud)

有什么我错过了吗?我确信ProgA发送了一个SIGKILL,因为cmd.Process.Kill()在内部执行了一个进程.Signal(SIGKILL)

interrupt go

1
推荐指数
1
解决办法
824
查看次数

更改中断向量表

在我的一次大学讲座中,我们讨论的是挂钩和改变中断向量表(IVT)的可能性.

我们的教授说,具有root权限的程序能够更改IVT,并且可以使用此功能,例如作为每个按键的键记录器.

这是否意味着我可以使用例如C程序改变我的IVT?或者它是如何工作的?

c cpu operating-system interrupt

1
推荐指数
1
解决办法
719
查看次数

TRAP,软件中断和硬件中断之间的区别?

我只想知道它们之间的基本区别.

我在某些地方发现TRAP本质上也被称为软件中断,或类似异常.

另外软件中断和异常之间的基本区别是什么.

软件中断可以由INT指令生成,但TRAP只能通过除零等特定场景生成?是对的吗?

请为此查询提供合适的答案,其中包括s/w中断陷阱和异常.

embedded microcontroller interrupt interrupt-handling interrupted-exception

1
推荐指数
1
解决办法
1296
查看次数

在STM32上禁用IRQ

有没有办法禁用Cortex M3 MCU中的所有irq,除了一个?

我的问题是我有一个系统运行几种具有不同优先级的irq,我想禁用所有irq,除了特定状态的irq.

我知道我可以通过使用"__disable_irq()"指令来禁用所有irq,但是如果我之前没有调用"__enable_irq()",则在调用此指令后我无法启用一个irq.

谢谢你的帮助,

问候

c arm interrupt cortex-m3 stm32

1
推荐指数
1
解决办法
7382
查看次数