Linux 学习记录57(ARM篇)

news2024/12/20 3:09:13

Linux 学习记录57(ARM篇)

在这里插入图片描述

本文目录

  • Linux 学习记录57(ARM篇)
  • 一、外部中断
    • 1. 概念
    • 2. 流程图框
  • 二、相关寄存器
    • 1. GIC CPU Interface (GICC)
    • 2. GIC distributor (GICD)
    • 3. EXTI registers
  • 三、EXTI 寄存器
    • 1. 概述
    • 2. 内部框图
    • 3. 寄存器功能描述
    • 4. EXTI选择框图
    • 5. EXTI_EXTICR1 (1-4)
    • 6. EXTI_RTSR1
    • 6. EXTI_FTSR1
    • 7. EXTI_IMR1
    • 8. EXTI_FPR1

一、外部中断

1. 概念

2. 流程图框

通过IO口的电平,产生对应的外部中断,通过外部中断的处理函数完成相应功能

外部中断是计算机系统中的一种中断类型,它由外部设备或外部事件触发,以通知计算机系统执行相应处理程序。
当外部设备需要与计算机进行交互或者发生了某些需要处理的事件时,会发送一个中断信号给CPU,CPU则会中断当
前正在执行的程序,转而执行与该中断相关的处理程序。

外部中断可以分为多种类型,比如硬件中断和软件中断。硬件中断是由硬件设备产生的,比如键盘输入、鼠标点击
、定时器到达等。软件中断则是由软件程序主动触发的,比如系统调用、软件异常等。

外部中断的处理过程包括中断请求、中断响应和中断处理三个阶段。当外部设备发送中断请求信号时,CPU会检测
到该信号,并保存当前程序的执行现场信息,然后跳转到相应的中断处理程序执行。执行完中断处理程序后,CPU
会恢复之前保存的程序执行现场信息,继续执行被中断的程序。

外部中断的引入可以提高计算机系统的处理效率和响应能力,使系统能够及时处理各种外部事件。

在这里插入图片描述

二、相关寄存器

在这里插入图片描述

1. GIC CPU Interface (GICC)

GIC CPU Interface (GICC)是一种用于处理器与中断控制器之通信的接口。GIC代表通用中断控制器,它是一种硬件
组件,用于管理和处理中断信号。

GICC提供了一组寄存器和控制逻辑,用于处理器与GIC之间的交互。它允许处理器与GIC进行中断的注册、屏蔽、
触发和处理等操作。

GICC的主要功能包括:

1. 中断屏蔽和使能:处理器可以通过设置相关寄存器来屏蔽或使能特定的中断信号。
2. 中断触发:处理器可以通过写入相应的寄存器来触发中断信号,将其发送给GIC。
3. 中断注册:处理器可以将自己作为中断处理程序注册到GIC,以便在中断发生时接收到相应的中断通知。
4. 中断处理:当中断发生时,GIC会将中断信号发送给相应的处理器,并将执行权转移到相应的中断处理程序。

GICC是在多核处理器系统中广泛使用的一种接口,它可以实现多个处理器同时与中断控制器进行通信和协调,提高
系统的并发处理能力和中断管理效率。

在这里插入图片描述

2. GIC distributor (GICD)

GIC distributor (GICD)是通用中断控制器(GIC)中的一个组件,它负责接收来自外部设备的中断信号,并将这些中断信号分发给对应的处理器核心进行处理。GICD在多核处理器系统中起到了协调和管理中断的重要作用。

GICD具有以下主要功能:

  1. 中断路由:GICD根据中断信号的特征将其路由到相应的处理器核心。每个处理器核心都可以通过GICD配置来决定是否接受某个特定中断信号。
  2. 中断优先级:GICD可以配置每个中断信号的优先级,确保高优先级的中断得到及时处理。
  3. 中断屏蔽和使能:GICD提供了寄存器用于屏蔽或使能特定的中断信号,以便控制中断的触发和处理。
  4. 中断分组:GICD支持将中断信号分组,以便更好地管理和处理不同类型的中断信号。
  5. 中断转发:GICD可以将一个中断信号转发给其他处理器核心,以实现多核之间的中断通知和共享。

GICD与GICC(GIC CPU Interface)一起构成了GIC的核心组件,它们共同实现了中断的管理和处理。通过GICD,多个处理器核心可以协同工作,高效地处理来自外部设备的中断信号,提高系统的并发处理能力和中断管理效率。

在这里插入图片描述

3. EXTI registers

EXTI (External Interrupt)寄存器是用于处理外部中断的寄存器组。它们是STM32系列微控制器中的一部分,用于处理与外部设备相关的中断信号。

在STM32微控制器中,外部中断通过EXTI寄存器来配置和管理。EXTI寄存器包括以下几个主要寄存器:

  1. EXTI_IMR (Interrupt Mask Register):用于屏蔽或使能特定的外部中断线。每个位对应一条外部中断线,设置为1表示使能,设置为0表示屏蔽。
  2. EXTI_RTSR (Rising Trigger Selection Register):用于选择上升沿触发的外部中断线。每个位对应一条外部中断线,设置为1表示选择上升沿触发,设置为0表示不选择。
  3. EXTI_FTSR (Falling Trigger Selection Register):用于选择下降沿触发的外部中断线。每个位对应一条外部中断线,设置为1表示选择下降沿触发,设置为0表示不选择。
  4. EXTI_PR (Pending Register):用于标记外部中断线是否处于待处理状态。每个位对应一条外部中断线,设置为1表示该中断线产生了中断,需要处理后清除。

通过配置这些EXTI寄存器,可以灵活地控制和管理外部中断的触发和处理。比如,可以选择上升沿或下降沿触发中断,屏蔽或使能特定的中断线,以及检查中断线的待处理状态。这样,系统可以根据具体需求对外部中断进行灵活的配置和处理。

在这里插入图片描述

三、EXTI 寄存器

1. 概述

在这里插入图片描述

2. 内部框图

在这里插入图片描述

3. 寄存器功能描述

在这里插入图片描述

4. EXTI选择框图

PIN1对应EXTI0,PIN2对应EXTI2,以此类推
在这里插入图片描述

5. EXTI_EXTICR1 (1-4)

EXTI_EXTICR1 是一个寄存器,用于配置外部中断线与GPIO引脚之间的映射关系。在STM32微控制器中,有多个外部中断线可以与不同的GPIO引脚相连,EXTI_EXTICR1 寄存器用于设置其中的一组映射关系。
将Pin0-15引脚分为4组,分别使用EXTI_EXTICR1 到EXTI_EXTICR4配置
在这里插入图片描述

例如要将PA7的于GPIO中断相连这就需要将该组寄存器的EXTI7设置位0x00,如果是PC7则为0x02

在这里插入图片描述

6. EXTI_RTSR1

外部中断的上升沿配置寄存器
在这里插入图片描述

6. EXTI_FTSR1

外部中断的下升沿配置寄存器
在这里插入图片描述

7. EXTI_IMR1

EXTI_IMR1(Interrupt Mask Register 1)是STM32微控制器中的一个寄存器,用于屏蔽或使能外部中断线。
它是EXTI(External Interrupt)寄存器组中的一个寄存器。

EXTI_IMR1寄存器是一个32位的寄存器,每个位对应一条外部中断线。通过设置相应的位,可以选择使能或屏蔽特
定的外部中断线。当某个外部中断线的对应位被设置为1时,表示该中断线被使能,可以触发中断。当对应位被设
置为0时,表示该中断线被屏蔽,不会触发中断。

通过对EXTI_IMR1寄存器进行配置,可以灵活地选择哪些外部中断线会触发中断处理程序,以适应特定的应用需求

设置为将相应的中断的位配置为1即不屏蔽中断
在这里插入图片描述

8. EXTI_FPR1

EXTI_FPR1:EXTI falling edge pending register寄存器名字:EXTI下降沿挂起寄存器
    作用:清除EXTI层中断挂起标志位
    rc_w1:可读可写
    读0:表示中断没有触发
    读1:表示中断触发
    写0:不清除EXTI层中断挂起标志位
    写1:清除EXTI层中断挂起标志位

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/788899.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt Creator mainwindow.obj:-1: error: LNK2019

构建的时候报错: mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __thiscall mynotedig::mynotedig(class QWidget *)" (??0mynotedigQAEPAVQWidgetZ),该符号在函数 "public: void __thiscall MainWindow::mynoteab…

C语言宏替换的注意事项

先思考一个问题&#xff1a; #include <string> #include <Windows.h>namespace ui { int MessageBox(HWND hwnd, const std::wstring &text, const std::wstring &caption,UINT flags) {UINT actual_flags flags;const wchar_t *text_ptr text.c_str();…

推荐 3 个实用的 GitHub 项目

本期推荐开源项目目录&#xff1a; 1. 开源知识库 2. 去中心化的社交平台 3. h2oGPT 01 开源知识库 AFFINE 是 Notion、Miro 等知识库产品的开源替代品&#xff0c;目前已经获得了近 20k 的 Stark。通过 AFFINE 你可以进行写作、绘画、计划管理。 类似于 Notion 的 Block &…

STC12C5A系列单片机片内看门狗的应用

wdt.c #include "wdt.h"void wdt_init(void) {WDT_CONTR 0x24; // 0010 0100 - 1.1377s }void wdt_feed(void) {WDT_CONTR | 0x10; // 喂狗 }wdt.h #ifndef _WDT_H_ #define _WDT_H_#include "stc12c5a60s2.h"// 函数声明 extern void wdt_init(void); …

Ajax 黑马学习

Ajax 资源 数据是服务器对外提供的资源,通过 请求 - 处理 - 响应方式获取 请求服务器数据, 用到 XMLHttpRequest 对象 XMLHttpRequest 是浏览器提供的js成员, 通过它可以请求服务器上的数据资源 let xmlHttpRequest new XMLHttpRequest(); 请求方式 : get向服务器获取数据…

requests---jsonpath在接口自动化中的应用

前言 我们在做接口测试时&#xff0c;大多数返回的都是json属性&#xff0c;我们需要通过接口返回的json提取出来对应的值&#xff0c;然后进行做断言或者提取想要的值供下一个接口进行使用&#xff0c;但是如果返回的json数据嵌套了很多层&#xff0c;通过查找需要的词&#x…

软件进行用户体验测试有哪些要点?

无论是移动应用还是网页应用&#xff0c;优秀的用户体验是软件成功的关键所在。软件用户体验测试是一种关键的测试方法&#xff0c;旨在评估用户在使用软件过程中的感受和体验。通过深入了解用户需求&#xff0c;模拟真实场景&#xff0c;以及综合用户反馈&#xff0c;软件开发…

【C++】C++11——右值引用和移动语义|可变参数模板

文章目录 一、左值引用和右值引用左值引用和右值引用的定义左值引用和右值引用的比较 二、右值引用的使用场景和意义左值引用的短板移动构造和移动赋值万能引用和完美转发 三、新的类功能类成员变量初始化default 和 delete 四、可变参数模板 一、左值引用和右值引用 传统的C语…

操作系统资源限制问题(Memory Analyzer使用OutOfMemoryError)

java8使用Memory Analyzer大概是10左右的版本&#xff0c;用最新版本要java17 MemoryAnalyzer-1.10.0.20200225-win32.win32.x86_64 MAT(Memory Analyzer Tool)下载 https://www.cnblogs.com/zwh0910/p/15774590.html Eclipse downloads - Select a mirror | The Eclipse F…

"科技与狠活"企业级无代码开发MES系统,一周实现数字化

随着科技的不断发展&#xff0c;企业级无代码开发平台成为了一种新型的解决方案&#xff0c;能够有效降低软件开发门槛&#xff0c;提升开发效率。在制造业领域&#xff0c;MES系统&#xff08;Manufacturing Execution System&#xff09;作为一种关键的生产管理工具&#xff…

小程序开发收费多少

一、小程序开发费用一览表 ① 域名费用 域名的价格取决于选择的域名类型&#xff0c;常见的有如.com、.cn等这些&#xff0c;以及注册商的定价策略。比如&#xff0c;一个.com 域名一年的的注册费用大约在 50-200 元人民币之间。 ②服务器费用 服务器费用是根据服务器的配置…

day37-Pokedex(神奇宝贝图鉴卡牌展示)

50 天学习 50 个项目 - HTMLCSS and JavaScript day37-Pokedex&#xff08;神奇宝贝图鉴卡牌展示&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&qu…

vscode默认gbk编码格式打开

目录 1. 问题描述2. 解决方案 1. 问题描述 每次打开vscode都是utf-8格式打开文件&#xff0c;然后满屏的中文乱码&#xff0c;自己手动换成gbk编码 后中文显示正常&#xff0c;但是换多了很烦。 2. 解决方案 ctrlshiftP 点首选项&#xff1a;打开用户设置 加上这行在最后&…

文件包含漏洞利用思路

简介 通过PHP函数引入文件时&#xff0c;传入的文件名没有经过合理的验证&#xff0c;从而操作了预想之外的文件&#xff0c;导致意外的文件泄漏甚至恶意代码注入。 常见的文件包含函数 php中常见的文件包含函数有以下四种&#xff1a; include()require()include_once()re…

教你合法安全匿名访问网站的10个技巧

大家常说互联网大数据使得每个人上网更透明&#xff0c;确实隐私性和安全性已成为人们在进行互联网浏览时所关注的焦点。无论您想要对匿名访问目标网站进行调查研究&#xff0c;又或者是爬虫业务、跨境业务&#xff0c;完全保持匿名都可能成为关键。 为了帮助您保护更多隐私和安…

【OC总结-weak的底层原理】

文章目录 1. SideTables1.1 StripedMap1.2 SideTable1.3 引用计数refcnts 存储结构RefcountMap1.4 weak_table_t结构体1.4.1 .weak_entry_t结构体 2.1 weak的实现及其调用的相关函数2.1 初始化时&#xff1a;2.1.1 objc_initWeak方法2.1.2 storeWeak方法 2.2 添加引用时&#x…

【C++从0到王者】第十站:手撕string

文章目录 一、String的基本结构二、String的构造函数1.string(const char* str)2.string()3.string(const char* str " ")4.string(const string& s) 二、String的析构函数三、获取String中的字符串四、获取有效元素个数五、operator[]运算符重载六、增删查改之…

Fastify系列-从0到1超详细手把手教你使用Fastify构建快速的API

什么是Fastify&#xff1f; Fastify是一个web框架&#xff0c;高度专注于以最少的开销和强大的插件架构提供最佳的开发体验。它的灵感来自于Hapi和Express&#xff0c;据我们所知&#xff0c;它是运行在Node.js上的最快的Web框架之一。 为什么使用Fastify&#xff1f; 这些是…

PostgreSQL--实现数据库备份恢复详细教学

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen PostgreSQL--实现数据库备份恢复详细教学 一. 数据库备份二. 数据库恢复三. 存留问题 数据库备份恢复功能是每个产品所需的&#xff0c;以下是简单的脚本案例&a…

遇到了一个存在XSS(存储型)漏洞的网站

第一个漏洞self xss&#xff08;存储型&#xff09; 存在漏洞的网站是https://www.kuangstudy.com/ 然后点击个人设置 在编辑主页中&#xff0c;我们可以用最简单的script语句进行注入&#xff0c;提交&#xff1b; 出现弹窗&#xff0c;说明它已经把代码进行解析&#x…