irq相关内容

为了处理 arm cortex A9 上的中断,Linux 内核需要多少条指令?

我想估计一个 ARM cortex A9 单核处理一个 IRQ 所需的操作码数量. 假设我使用 Linux 内核 3.4,调用 irq 并执行 irq_handler 需要多少操作码? 解决方案 你的问题是关于如何计算Linux 的中断延迟.至少您可能对中断开始之前需要多长时间感兴趣.我们将在这里忽略 irqs 的这一方面. 一种简单的方法是切换 GPIO 并使用范围来测量中断 ..
发布时间:2022-01-17 14:13:17 服务器开发

Linux 内核 ARM 异常堆栈初始化

我在 Freescale i.MX6 (ARM Cortex-A9) 上使用 Linux 内核 3.0.35.在遇到内核 OOPS 后,我试图了解异常堆栈初始化.这是我目前所发现的. 在 arch/arm/kernel/setup.c 的 cpu_init() 中,我看到异常堆栈正在初始化: 结构栈{u32 中断[3];u32 abt[3];u32 和 [3];} ____cachelin ..
发布时间:2022-01-17 13:26:15 其他开发

什么是 linux 中的链式 irq,它们什么时候需要使用?

什么是链式 IRQ?chained_irq_enter 和 chained_irq_exit 是做什么的,因为在中断发生后,IRQ 线被禁用,但是 chained_irq_enter 正在调用与屏蔽中断相关的函数.如果线路已经禁用为什么要屏蔽中断? 解决方案 什么是链式 irq ? 如何在父(中断控制器)设备的 IRQ 处理程序中调用子设备的中断处理程序有两种方法. 链式中 ..

当我们使用 irq_set_chained_handler 时,irq 行是否会被禁用?

当我们使用 irq_set_chained_handler 时,当我们为相关的处理程序提供服务时,irq 行不会被禁用,就像 request_irq 一样. 解决方案 中断是如何设置的并不重要.当发生任何中断时,在中断处理程序期间将禁用所有中断(对于该 CPU).例如,在 ARM 架构上,在 C 代码中找到中断处理的第一个位置是 asm_do_IRQ() 函数(在 arch/arm/ker ..

在 ARM Cortex M0 上检索异常的返回地址

我正在尝试在我的代码中检索 IRQ 处理程序的返回地址.我的目标是使用 WDT_IRQHandler() 在看门狗定时器到期之前和出于调试目的重置之前保存 PC 的值.我也在用其他 IRQ 测试这种方法,以检查我是否理解了这个想法.但我好像没有. 我已阅读文档 可用.我了解到当异常发生时,8个寄存器被压入堆栈:R0、R1、R2、R3、R12、LR、PC 和 XPSR. 我还读到堆栈是自 ..
发布时间:2021-11-17 22:14:00 其他开发

Linux 内核需要多少条指令来处理 arm cortex A9 上的中断?

我想估计 ARM cortex A9 单核处理 IRQ 所需的操作码数量. 假设我使用 Linux 内核 3.4,调用 irq 并执行 irq_handler 需要多少操作码? 解决方案 你的问题是关于如何计算中断延​​迟.至少您可能对中断开始前需要多长时间感兴趣.我们将在这里忽略 irqs 的这一方面. 一种简单的方法是切换 GPIO 并使用示波器来测量中断.您甚至可以多次切 ..
发布时间:2021-11-17 21:56:03 服务器开发

操作系统导致的 irq 延迟是多少?

如何估计 ARM 处理器上的 irq 延迟? irq 延迟的定义是什么? 解决方案 Mats 和 Nemanja 提供了一些关于 中断延迟.有两个是我要添加的另一个问题,除了 Mats 给出的三个问题. 其他同时/几乎同时中断. 由于屏蔽中断而增加了操作系统延迟.编辑:这是 Mats 的回答,只是没有解释太多. 如果是单核处理中断,那么当多个中断同时发生时,通常会有一定的解 ..
发布时间:2021-11-17 21:54:16 服务器开发

创建新任务时,linux内核如何唤醒空闲处理器?

我是 Linux 内核的新手.目前,我查看了空闲代码并有一个问题.当处理器在它们自己的运行队列中没有任何任务时,它可能进入空闲模式,特定的 WFI(等待中断).(我提到的都是关于 ARM 架构而不是 X86.所以 X86 有问题.)停留在 WFI 状态后,可能其他处理器(非空闲)想要传播他们的任务是空闲处理器(通过负载平衡).当时一个繁忙的处理器使任务迁移.在我看来,当任务迁移时,空闲处理器应该立 ..
发布时间:2021-11-17 21:47:31 其他开发

Linux内核ARM异常栈init

我在 Freescale i.MX6 (ARM Cortex-A9) 上使用 Linux 内核 3.0.35.在遇到内核 OOPS 后,我试图了解异常堆栈初始化.以下是我目前所发现的. 在 arch/arm/kernel/setup.c 的 cpu_init() 中,我看到异常堆栈正在初始化: 结构栈{u32 中断 [3];u32 abt[3];u32 和 [3];____cachelin ..
发布时间:2021-11-17 21:37:59 其他开发

RISC-V中断处理流程

我正在寻找RISC-V处理器如何处理中断请求. 我查看了《指令集手册》和互联网上的信息.重点在于准确解释标题设置的内容:指令集.在我看来,如何处理中断是一个问题,即所谓的处理器“程序员模型".由于中断处理的某些部分未在指令中表达,因此它显然不适合有关指令集的文档.显然,进入ISR不是 一条显示在程序代码中任何地方的指令.指令集手册提供了诸如 mret 和 mstatus 的描述,但未能提供整 ..
发布时间:2021-05-16 19:48:49 其他开发

检索ARM Cortex M0上异常的返回地址

我正在尝试在我的代码中检索IRQ处理程序的返回地址. 我的目标是使用WDT_IRQHandler()在看门狗定时器到期之前和在出于调试目的而进行复位之前保存PC的值.我还正在与其他IRQ一起测试这种方法,以检查我是否理解了这个想法. 但似乎我还没有. 我已阅读文档可用. 我知道发生异常时,会将8个寄存器压入堆栈: R0,R1,R2,R3,R12,LR,PC和XPSR. 我还读过,堆栈是 ..
发布时间:2020-06-26 19:40:03 其他开发

当我们使用irq_set_chained_handler时,irq行是否被禁用?

当我们使用irq_set_chained_handler时,在为相关处理程序提供服务时(例如request_irq),irq行将不会被禁用. 解决方案 中断的设置方式无关紧要.当发生任何中断时,将在中断处理程序期间禁用所有中断(对于此CPU).例如,在ARM体系结构中,发现中断处理的C代码中第一位是asm_do_IRQ()函数(在arch/arm/kernel/irq.c中定义).它是从汇 ..

在Linux中什么是链式irq,何时需要使用它们?

什么是链接IRQ? chained_irq_enter和chained_irq_exit的作用是,因为在产生中断之后,IRQ线被禁用,但是chained_irq_enter正在调用与屏蔽中断相关的函数.如果该行已被禁用,为什么要屏蔽该中断? 解决方案 什么是链式irq? 在父设备(中断控制器)的IRQ处理程序中,有两种方法可以为子设备调用中断处理程序. 受束缚的中断: ..

在驱动程序中使用request_threaded_irq()为什么不使用request_irq()?两者之间有什么区别?

我发布了这是讨论关于request_threaded_irq的主题,但没有得到任何答复.因此,我正在重新发布它. 我正在开发用于电容式触摸屏的触摸屏驱动程序.它使用request_threaded_irq()调用而不是request_irq().我无法理解两者之间的基本区别.它说:- 名称 request_threaded_irq —分配中断行 简介 int requ ..
发布时间:2020-04-25 11:25:29 其他开发

x86内核中的键盘IRQ

我正在尝试编写一个非常简单的内核以用于学习目的.阅读了很多有关x86体系结构中的PIC和IRQ的文章之后, 我发现IRQ1是键盘处理程序.我正在使用以下代码来打印被按下的键: #include "port_io.h" #define IDT_SIZE 256 #define PIC_1_CTRL 0x20 #define PIC_2_CTRL 0xA0 #define PIC_1_DATA ..
发布时间:2020-04-25 11:15:16 其他开发

IRQ 6软盘控制器中断未触发

出于某种原因,IRQ 6从未在我的Qemu,Bochs,VMWare或VirtualBox仿真器中命中。我需要某种类型的虚拟软盘驱动器吗?这里是我的IRQ6处理程序: pre $ c $ void i86_flpy_irq(struct regs * r){ //! irq被触发 _FloppyDiskIRQ = 1; printf(“IRQ 6 HIT”); } 它永远不会说 ..
发布时间:2018-04-18 21:01:06 其他开发语言

访问IRQ描述阵列模块内和显示操作名称

我编程在C内核模块是奋力访问IRQ描述数组元素和显示这些元素的所有动作名。 在开始的时候,我以为这irq_desc数组sonething像宏,但编译后,我明白事实并非如此。然后我用for_each_irq_desc(IRQ,DESC)功能。但这次返回的警告: 警告:“irq_to_desc”[/home/samet/Masaüstü/Assignment3/Ass-1.ko]未定义 和此警告 ..
发布时间:2016-08-23 11:49:50 C/C++

什么是测量经过时间在现代PC的最准确的方法是什么?

我知道我可以使用IRQ0,这是系统定时器,但是这是基于14.31818MHz时钟,对不对?有什么提供更大precision? 感谢。 编辑:有谁知道Windows函数QueryPerformanceCounter的使​​用 解决方案 “precision”和“准确性”的意思是不同的事情。 “地球的周长是40000.000000000公里”是precise,但并不准确。这是一个比较复杂的 ..
发布时间:2016-07-18 21:00:42 .NET Framework

设置IRQ映射

我在以下几个教程,并试图让我的内核设置引用。我在没有解释它在所有的教程会遇到一些陌生code。这是code,我听说映射 16的IRQ(0-15)来ISR位置 32-47 : 无效irq_remap(无效) { outportb(0x20的,为0x11); outportb(0XA0,为0x11); outportb(为0x21,0x20的); outportb(0 ..
发布时间:2016-07-18 20:42:44 .NET Framework