interrupt-handling

    2热度

    1回答

    Here是我的操作系统的源代码。 我确定当CPU从8259 PIC(可编程中断控制器)中获得一个中断时,它总是可以正确地“偏移”到ISR(中断服务程序)阵列中。 (你可以找到整个代码here):尚未实施 isrs: dd _isr0 dd _isr1 dd _irq_unhandled dd _irq_unhandled dd _irq_unhan

    1热度

    1回答

    我在ISO C90中编写代码,禁止混合声明和代码。 所以我有这样的事情: int function(int something) { int foo, ret; int bar = function_to_get_bar(); some_typedef_t foobar = get_this_guy(something); spin_lock_irqsa

    0热度

    2回答

    假设一个PCI硬件支持三种可用的中断范式: 传统针基础的INTx MSI MXI-X 我想在我的驱动程序中支持所有三种模式,并在module_param()宏中传递intr_type参数。我想知道什么是一般的经验法则:如果默认命令行参数是空的,支持MSI或MSI-X? 由于MSI和MSI-X在逻辑上接近,哪一个更适合使用?例如:如果驱动程序检测到设备支持MSI-X,是否足以尝试启用MSI-X并在驱

    0热度

    2回答

    经过大量关于中断处理等的阅读后,我仍然可以从头开始了解中断处理的全部过程。例如: 除以零除。 CPU取指令将数字除以零,并将其发送给ALU。 假设ALU在启动之前启动了划分过程或进行了一些检查。 异常如何发送给CPU? CPU如何从一个位信号中知道发生了什么异常?是否有一个寄存器在读取中断后知道这一点? 2.我的应用程序如何捕获异常? 我是否需要编写一些函数来捕获特定的SIGNAL或其他内容?当我

    0热度

    1回答

    其实我有一个功能来监视我的beaglebone上的GPIO。当数字输入端口发生事件(外部中断)时,我将该功能设置为发送用户信号(SIGUSR1),但该功能必须处于循环状态。我可以插入一个线程或fork()它的功能,但我不认为这是优雅的解决方案。 我想知道是否存在任何方式/功能/功能随时可以使用C语言来设置监测的前景(更高的优先级),而不放在一个循环运行,就像一个setitimer其只声明一次,并运

    3热度

    1回答

    我已经实现了一种方法来注册回调函数以在我的内核中进行中断,这是我从头开始开发的。这意味着如果程序运行int 0x67它会在我的内核中调用C函数来处理系统调用。它像它应该返回一样并且内核继续执行代码。但是,当我将函数映射到某些中断时,我无法返回,处理器似乎挂起。例如,下面是我的一些代码: void test(registers_t *r) { print("Why can't I retu

    2热度

    1回答

    我正在实现一个PCIe驱动程序,并且我想了解中断可以或应该被启用/禁用的级别。我故意不指定操作系统,因为我认为它应该适用于任何平台。通过I级表示以下含义: OS特定的中断处理框架 中断可以被禁用,或在PCI/PCIe配置空间寄存器启用,例如命令寄存器 中断还可以在设备级别被屏蔽,比如我们可以 配置设备不会触发特定的中断到主机 据我了解,正在对用于PCIe任何中断类型(INTx仿真,MSI或MSI-

    0热度

    1回答

    我是ARM处理器的新手。 Atmel ATSAMD20e实现基于ARMv6架构的ARM cortex M0 +处理器。它最多允许32个外部中断,中断信号连接到嵌套向量中断表(NVIC)。是否有可能使用NVIC并发中断?如果是这样,我们如何确定可以同时运行的最大中断数量?有人可以指出任何解释处理并发中断的文档。谢谢

    0热度

    1回答

    我有一个在C语言Microblaze微处理器上设计状态机的课程。我遇到的问题是我必须更改某个图片。假设我在FPGA上按下BTNL;我必须呈现风景图片5秒,并且在某些3秒后,我必须使图片闪烁。同时,时间5s - > 0s必须显示在7段显示器上。这是检测到按钮并且必须显示闪烁模式的情况。 中断发生每0.004s 和微处理器的时钟是100MHz。 for(j=0; j<=5secs; j++) {

    3热度

    2回答

    假设有一个端口映射I/O设备,它在IRQ线上任意生成中断。该器件的待处理中断可以通过一个调用特定寄存器的outb来清除。 此外,假设后续的中断处理程序是通过request_irq分配给相关的IRQ线: irqreturn_t handler(int irq, void *data) { /* clear pending IRQ on device */ outb(0, C