当前位置: 首页 > news >正文

Linux开发——中断

前面我们已经了解了ARM内核的工作模式
ARM处理器支持多种工作模式,不同的模式决定了寄存器和系统的访问权限:

User 模式:非特权模式,大多数应用程序运行在此模式。

FIQ (Fast Interrupt Request):高速中断模式,响应高优先级中断。

IRQ (Interrupt Request):普通中断模式,响应低优先级中断。

Supervisor (SVC):管理模式,系统调用、复位后进入此模式。

Abort:存取异常模式,用于处理存储器访问错误。

Undef:未定义指令模式。

System:与User模式类似,但具备特权权限。

今天我们学习linux开发基础中的一个重点:中断

硬件开发中最小系统:电源,时钟,控制。

中断学习是控制的重要环节,主要用于处理突发状况并维持原有状态运行

中断流程
(1)中断源发出中断请求。
(2)CPU检查是否响应中断以及该终端是否被屏蔽。
(3)检查当前产生的中断的中断优先级。
(4)保护现场
(5)执行中断服务函数
(6)恢复现场
kernal:被打断的
外设:  发出中断
GPIO发出的中断:外部中断(EINT)

中断控制器GIC
GIC(Generic Interrupt Controller):通用的中断控制器

我们使用的IMX6ULL只有一个内核,图中所示只有processor 0
每个内核能够相应1020个中断源,其中0~15是SGI,16~31是PPI,能够作为外设中断源的是SPI32~1019
(2)Distributor(分发器):
(1)SGI(Software-generated Interrupt),软件中断:
由软件触发引起的中断,通过向寄存器GICD_SGIR 写入数据来触发,系统会使用 SGI 中断来完成多核之间的通信。
(2)PPI(Private Peripheral Interrupt),私有中断:
我们说了 GIC 是支持多核的,每个核肯定有自己独有的中断。这些独有的中断肯定是要指定的核心处理,因此这些中断就叫做私有中断;
(3) SPI(Shared Peripheral Interrupt),共享中断:
(注意!不是 SPI 总线那个中断),这类中断泛指所有的
(3)CPU interface x(CPU接口0-7):
II.参考文档:《IMX6ULL参考手册.pdf》
(1)3.2 Cortex A7 interrupts
Table 3-1. ARM Cortex A7 domain interrupt summary
中断编号:0 - 128
III.参考文档:《MCIMX6Y2.h》
IRQn_Type:0-159 外设中断;
(4)协处理器(coprocrssor):cp0-cp15
Cortex-A7技术参考手册:《Cortex-A7 Technical ReferenceManua.pdf》
位置:章节4 System Control
协处理器cp15:负责与存储类相关任务
(1)功能
• Overall system control and configuration. (所有系统控制与配置)
• Memory Management Unit (MMU) configuration and management.(MMU的配置与管理)
• Cache configuration and management. (Cache的配置与管理)
• Virtualization and security. (虚拟化和安全设置)
• System performance monitoring. (系统性能监视)
(2)寄存器组:c0-c15
• c0 registers on page 4-4.
• c1 registers on page 4-5.
• c2 registers on page 4-6.
• c3 registers on page 4-6.
• c4 registers on page 4-6.
• c5 registers on page 4-7.
• c6 registers on page 4-7.
• c7 registers on page 4-8.
• c8 registers on page 4-10.
• c9 registers on page 4-11.
• c10 registers on page 4-12.
• c11 registers on page 4-12.
• c12 registers on page 4-13.
• c13 registers on page 4-13.
• c14 registers on page 4-13.
• c15 registers on page 4-14.
(3)cp15寄存器读写
读 MRC<c> <coproc>, <opc1>, <Rt>, <CRn>, <CRm>{, <opc2>}
写 MCR<c> <coproc>, <opc1>, <Rt>, <CRn>, <CRm>{, <opc2>}
(4)中断相关寄存器组
c0 registers:
MIDR(Main ID Register):存储内核的一些基本信息
c1 registers:
SCTLR(System Control Register):
bit13:V
0  Normal exception vectors, base address 0x00000000. Software can remap this base address using 
the VBAR.
1  High exception vectors, base address 0xFFFF0000. This base address is never remapped.
bit12:I
0  Instruction caches disabled, this is the reset value.
1  Instruction caches enabled.
demo:
mrc p15,0,r0,c1,c0,0
bic r0, r0, #(1 << 13)
orr r0, r0, #(1 << 12)
mcr p15,0,r0,c1,c0,0
c12 registers:
VBAR(Vector Base Address Register):
demo:
__get_VBAR(0x87800000);

c15 registers:
CBAR(Configuration Base Address Register):Holds the physical base address of the memory-mapped GIC registers.
demo:
mrc p15, 4, r0, c15, c0, 0

http://www.dtcms.com/a/423655.html

相关文章:

  • 【快乐数六】2022-11-21
  • redis单线程模型
  • 松江新桥网站建设东莞做网站首选企业铭
  • 【Leetcode hot 100】46.全排列
  • C++版搜索与图论算法
  • 天津做网站排名企业网站建设的价格
  • Nginx 反向代理、负载均衡与 Keepalived 高可用
  • nginx upstream的作用
  • BeaverTails数据集:大模型安全对齐的关键资源与实战应用
  • 归并排序、计数排序以及各种排序稳定性总结
  • 【数据结构+算法】迭代深度搜索(IDS)及其时间复杂度和空间复杂度
  • OpenSpeedy下载 - 全平台网盘提速加速工具|官网入口
  • 关于在博客页面添加live2d-widget的一些心得和踩过的坑
  • 2025年,今后需要进步的方面
  • 有哪些做平面设计好素材网站自学it怎么入门
  • Android16 adb投屏工具Scrcpy介绍
  • 酵母展示技术如何重塑酶工程?从定向进化到工业催化的突破
  • 广汉做网站立白内部网站
  • 【FPGA+DSP系列】——(3)中断学习(以定时器中断为例)
  • 重庆网上注册公司网站配置 wordpress
  • ECMAScript 2025 有哪些新特性?
  • CSP-S 提高组 2025 初赛试题解析(第三部分:完善程序题(二)(39-43))
  • 前端实战:基于React Hooks与Ant Design V5的多级菜单系统
  • 单片机OTA升级:高效无线更新的秘密
  • 社区平安建设基层网站重庆企业网站建设官网
  • 嵌入式学习笔记4.STM32中断系统及外部中断EXTI
  • 手机网站模板大全上海市公共招聘网官网
  • Python爬虫实战:获取国家天文数据中心公开的观测信息与数据分析
  • 中核西北建设集团网站苏州手机社区网站建设
  • 网站建设皿金手指谷哥壹柒小米发布会2022