linux 中断专题
文章平均质量分 91
田园诗人之园
我是一位平凡的诗人,也是一位平凡的工程师。
展开
-
linux pl320 mbox控制器驱动分析-(3) pl320驱动代码分析
define IPCMxSOURCE(m) ((m) * 0x40) 每个mbox有0x40byte的控制寄存器用于做ipcm处理。而每个mbox的第一个寄存器用于设置源 core的。IPCMxDCLEAR ~ IPCMxDR则依次对应于上面的表格所表示的寄存器。IPCMMIS和IPCMRIS寄存器用于判断mbox中断源的#define MBOX_MASK(n) (1原创 2023-05-16 00:21:17 · 830 阅读 · 1 评论 -
linux pl320 mbox控制器驱动分析 - (2) 消息传递示例
[TOC](linux pl320 mbox控制器驱动分析 - (2) 消息传递示例)原创 2023-05-14 21:31:27 · 810 阅读 · 2 评论 -
linux pl320 mbox控制器驱动分析 - (1) pl320手册分析
PL320 是用于服务中断的处理器间通信模块。它早于 GIC 架构。IPCM 提供多达 32 个邮箱,带有控制逻辑和中断生成以支持处理器间通信。AHB 接口支持从源core和目标core进行访问。向其他内核发送中断。将少量数据传递给其他核心。IPCM 中的邮箱可用作内核之间的浮动资源或用作特定内核的专用资源。源core可以有多个邮箱并并行发送消息。原创 2023-05-14 21:09:02 · 1442 阅读 · 0 评论 -
arm64异常向量表
异常向量表的保存分为两个部分,一个是主核的启动流程,另一个是副核的启动流程处理的。其处理函数分别为__primary_switched和__primary_switched。对于主核的启动流程来说,其处理是如下两步,首先将vectors地址加载到x8寄存器中,随后通过msr指令,将其值写入vbar_el1寄存器中。对于副核的启动流程来说,其处理是如下两步,首先将vectors地址加载到x5寄存器中,随后通过msr指令,将其值写入vbar_el1寄存器中。原创 2023-04-14 10:37:09 · 951 阅读 · 0 评论 -
GIC V3 & V4 逻辑组件
The GICv3 architecture consists of a set of logical components:The Distributor, Redistributor, and ITS are collectively known as an IRI.The CPU interface handles physical interrupts at all implemented Exception levels:CPU接口在所有实现的Exception级别处理物理中断:• Int原创 2022-12-28 22:07:08 · 735 阅读 · 3 评论 -
linux级联中断控制器的处理流程
1. 下级中断控制器的类别1.1 链式中断控制器(chained)1.2 层级中断控制器(hierarchy)2. 链式(chained)中断控制器的处理流程3. 层级(hierarchy)中断控制器的处理流程4. 处理流程对比。原创 2022-11-18 03:26:17 · 1326 阅读 · 2 评论 -
linux 中断子系统
保存ELx的异常向量基地址.align 11表示要对下面的代码段按照2^12对齐的方式放置kernel_ventry是一个宏,用于跳转到对应的异常处理函数中/**/中断现场保存/中断处理函数/中断现场恢复/kernel_entry 1 /*中断现场保存*/...原创 2022-08-11 22:29:56 · 311 阅读 · 0 评论 -
linux ARM64 中断底层处理代码分析
kernel_entry的处理和linux内核所定义的struct pt_regs所对应。原创 2022-08-03 00:49:15 · 1187 阅读 · 0 评论 -
ARM64异常之异常入口和异常返回
它会从SPSR中恢复PSTATE,从ELR中获取跳转地址,并返回到该地址。异常是针对特定的异常级别的。异常目标是由软件编程,或由异常的性质决定的异常级别。对于异步异常,它的返回地址是中断发生时的下一条指令,或者没有执行的第一条指令。对于不是system call的同步异常,返回的是触发同步异常的那一条指令。同步异常或者SError异常的原因会更新到ESR_ELx寄存器中。在任何情况下,异常都不会导致执行移动到较低的异常级别。PE的状态保存到目标异常等级的SPSR_ELx寄存器。.........原创 2022-08-03 00:17:52 · 1242 阅读 · 0 评论 -
linux AArch64中断下半部之软中断softirq
首先要初始化一个tasklet,可以通过DECLARE_TASKLET或者tasklet_init去定义一个tasklet实现tasklet的处理函数调度自己的tasklet。原创 2022-07-29 00:10:52 · 566 阅读 · 0 评论 -
linux 中断下半部之softirq
1, irq_exit函数的解析/* * Exit an interrupt context. Process softirqs if needed and possible: */void irq_exit(void){#ifnd原创 2020-07-06 21:41:14 · 380 阅读 · 0 评论 -
linux硬件中断(hwirq)和软件中断号(virq)的映射过程
linux硬件中断(hwirq)和软件中断号(virq)的映射过程硬件中断号硬件中断号原创 2022-05-22 23:52:36 · 5169 阅读 · 2 评论 -
linux AArch64异常(中断)处理流程
linux ARM V8异常/中断处理流程1 异常向量表1.1 Vector table offsets from vector table base address1.2 linux arm64 异常向量表代码1.2.1 异常向量表1.2.2 kernel_ventry2 中断处理2.1 硬件中断号和软件中断号的区别2.2 中断注册函数2.2.1 request_irq2.2.2 request_threaded_irq2.3 中断上半部处理流程2.3.1 el1_irq2.3.2 kernel_entr原创 2022-05-18 00:56:26 · 2009 阅读 · 0 评论