學習嵌入式-IMX6ULL學習——中斷

volatile:易變的,防止系統優化

對寄存器做處理的時候使用,在進行寫1清零操作時,防止該操作被系統優化;

一、GIC通用中斷控制器

1.GIC通用中斷控制器

????????GIC接收眾多外部中斷,然后對其進行處理,最終通過VFIQ、VIRQ、FIQ 和 IRQ給內核;這四個 信號的含義如下: VFIQ:虛擬快速 FIQ。 VIRQ:虛擬 IRQ。 FIQ:快速中斷 IRQ。 IRQ:中斷 IRQ。

2,GIC中斷分類:

  • SPI(Shared Peripheral Interrupt),共享中斷, (注意!不是 SPI 總線那個中斷),這類中斷泛指所有的 外設中斷;
  • PPI(Private Peripheral Interrupt),私有中斷,我們說了 GIC 是支持多核的,每個核肯定有自己獨有 的中斷。這些獨有的中斷肯定是要指定的核心處理,因此這些中斷就叫做私有中斷;
  • SGI(Software-generated Interrupt),軟件中斷,由軟件觸發引起的中斷,通過向寄存器GICD_SGIR 寫入數據來觸發,系統會使用 SGI 中斷來完成多核之間的通信。

中斷優先級數字越小,優先級越高;

3,GIC組成

? ? ? ? 由分發器 (1個)、cPU接口(幾核就幾個);

(1)分發器:

  • 全局中斷使能控制;
  • 控制每一個中斷的使能或者關閉;
  • 設置每個中斷的優先級;
  • 設置每個中斷的目標處理器列表;
  • 設置每個外部中斷的觸發模式:電平觸發或邊沿觸發;
  • 設置每個中 斷屬于組 0 還是組 1;

(2)CPU接口

  • 使能或者關閉發送到 CPU Core 的中斷請求信號;
  • 應答中斷;
  • 通知中斷處理完成;
  • 設置優先級掩碼,通過掩碼來設 置哪些中斷不需要上報給 CPU Core;
  • 定義搶占策略;
  • 當多個中斷到來的時候,選擇優先級最高的 中斷通知給 CPU Core;

4.協處理器

(1)總共由16個,cp0~cp15;其中最常使用的cp15;

cp10,cp11:浮點型運算

5.cp15

(1)作用:

  • 獲取GIC的基地址(CBAR)
  • MMU的配置(使能/禁用;SCTLR)
  • cache的配置
  • 監控系統性能
  • 配置中斷控制器(優先級、分組、使能/禁用,VBAR:設置中斷向量表基地址)
  • 訪問寄存器(mrc讀、mcr寫)
  • 獲取或結束中斷(IAR、EOIR)

(2)mrc:將從cp15里面讀出來放寄存器里面

MRC{cond} p15, <opc1>, <Rt>, <CRn>, <CRm>, <opc2>
mcr:把寄存器里面的東西往cp15里面寫
MCR{cond} p15, <opc1>, <Rt>, <CRn>, <CRm>, <opc2>
????????簡單總結一下,通過 MIDR 寄存器可以獲取到處理器內核信息;通過 SCTLR 寄存器可以使能或禁止 MMU、I/D Cache 等;通過 VBAR 寄存器可以設置中斷向量偏移;通過CBAR 寄存器可以獲取 GIC 基地址。

二、外部中斷

1.設置GIC

? ? ? ? (1)讀取SCTLR,將V位置0(軟件可以通過 VBAR來重新映射這個基地址)I位置1(I cache使能)
? ? ? ? (2)通過GIC查詢當前中斷ID;先獲取GIC基地址(CBAR);對其進行偏移(IAR),獲得中斷ID,然后進入中斷處理函數

2.中斷服務函數? ? ? ?

(1)中斷初始化;重新定位異常向量表的位置到0x87800000;并且調用GIC_Init函數
(2)對于GPIO1->ICR2(觸發方式)、GPIO1->IMR(該中斷使能)在中斷源初始化進行配置

(4)中斷服務函數
?
注意:先要在相對應的中斷源的初始化函數里面注冊在中斷向量數組中;
例子:注冊完中斷之后,中斷發生就會調用中斷服務函數

內斂函數:INLINE,定義被放在頭文件中

三、OCP原則

1.OCP:開閉原則,對程序代碼的添加是開放的,對程序的修改是關閉的

2.基于OCP原則對代碼的修改

  • ????????應用于中斷服務函數的處理

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918398.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918398.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HENGSHI SENSE 6.0 功能-AI 查數助手

面向所有AI Agent開放BI和數據分析能力 AI 查數助手 6.0版本中&#xff0c;我們AI助手的優化是比較深入且全面的。從問答效率到集成能力&#xff0c;都得到了大的躍升&#xff0c;是智能問數應用場景的重大升級以及體驗的全方位優化。我們優化了 AI 助手執行流程&#xff0c;…

降壓型DCDC電源芯片推薦-芯伯樂XBL4001 40V/5A

在電子設備不斷追求高性能與低功耗的今天&#xff0c;電源管理芯片的重要性不言而喻。芯伯樂主推的XBLW-XBL4001芯片&#xff0c;憑借其出色的設計與穩定的性能&#xff0c;為電源管理領域帶來了一款實用的新選擇。一、芯片概述XBLW-XBL4001是一款降壓型&#xff08;Buck&#…

uni-app app端安卓和ios如何申請麥克風權限,喚起提醒彈框

代碼包含功能如下&#xff1a; 1、判斷推送權限是否開啟 2、判斷定位權限是否開啟 3、判斷麥克風權限是否開啟 4、判斷相機權限是否開啟 5、判斷相冊權限是否開啟 6、判斷通訊錄權限是否開啟 7、判斷日歷權限是否開啟 8、判斷備忘錄權限是否開啟 9、Android權限查詢 10、檢查系…

關于 Rust 異步(無棧協程)的相關疑問

這是一個記錄問題求助的文章。關于 waker 與運行時的合作方式我膚淺地學習了 Rust 異步底層實現原理&#xff0c;關于 Future、waker 和運行時等。關于 waker 我有三點猜測&#xff1a;waker 是由實現執行器的人提供的在執行器中會調用 epoll_wait&#xff0c;epoll 返回 fd&am…

stm32項目(25)——基于stm32的植物生長箱環境監測系統

1.實現功能 測 環境溫濕度、光照強度、土壤濕度、水箱水位 手機APP顯示 溫度過低-->打開加熱板 濕度過低-->打開水泵 土壤濕度低-->開水泵 --->只要有指標低于閾值時 就蜂鳴器報警 光強弱-->補光 水位低-->抽水 OLED屏幕實時顯示各種信息 分…

golang 基礎案例_02

1.鎖有時候我們的代碼中可能會存在多個 goroutine 同時操作一個資源&#xff08;臨界區&#xff09;的情況&#xff0c;這種情況下就會發生競態問題&#xff08;數據競態&#xff09;。(1)、互斥鎖&#xff1b;(2)、讀寫互斥鎖&#xff1b;(3)、sync.WaitGroup&#xff1b;(4)、…

C++算法·前綴和

前綴和(Prefix(Prefix(Prefix Sum)Sum)Sum)的定義 前綴和是一種高效處理區間求和問題的算法技巧 其核心思想是通過預處理構建一個前綴和數組 使得后續的區間和查詢可以在常數時間O(1)O(1)O(1)內完成 核心概念 定義 給定一個數組a[1...n]a[1...n]a[1...n],其前綴和數組s[1...…

JavaEE 初階第十七期:文件 IO 的 “管道藝術”(下)

專欄&#xff1a;JavaEE初階起飛計劃 個人主頁&#xff1a;手握風云 目錄 一、Java文件內容寫入 1.1. OutputStream 二、字符流讀取和寫入 2.1. Reader 2.2. Writer 三、示例練習 3.1. 查找文件功能 一、Java文件內容寫入 1.1. OutputStream OutputStream同樣只是?個抽…

【liunx】web高可用---nginx

NGINX簡介Nginx&#xff08;發音為 “engine x”&#xff09;是一款由俄羅斯程序員 Igor Sysoev 開發的 輕量級、高性能的 HTTP 和反向代理服務器&#xff0c;同時也是一個 IMAP/POP3/SMTP 代理服務器。自 2004 年首次發布以來&#xff0c;Nginx 憑借其 高并發處理能力、低內存…

FPGA+護理:跨學科發展的探索(二)

FPGA護理&#xff1a;跨學科發展的探索&#xff08;二&#xff09; 系列文章目錄 FPGA護理&#xff1a;跨學科發展的探索&#xff08;一&#xff09; 文章目錄FPGA護理&#xff1a;跨學科發展的探索&#xff08;二&#xff09;系列文章目錄引言三、FPGA 在精神醫學護理中的應用…

localforage的數據倉庫、實例、storeName和name的概念和區別

在 localForage 中&#xff0c;數據倉庫、實例、storeName 和 name 是核心概念&#xff0c;用于管理底層存儲&#xff08;IndexedDB/WebSQL/localStorage&#xff09;。以下是詳細解釋和區別&#xff1a; 1. 數據倉庫 (Database) 定義&#xff1a;指底層的物理數據庫&#xff…

使用MAS(Microsoft Activation Scripts)永久獲得win10專業版和office全套

文章目錄Microsoft Activation Scripts簡介下載地址使用方法Microsoft Activation Scripts簡介 MAS是Microsoft Activation Scripts縮寫。 主要提供如下功能&#xff1a; 使用該腳本可以永久獲得win10專業版和office全套&#xff08;可選&#xff09; 下載地址 https://pan…

零 shot 語義+在線閉環:深度學習讓機器人學會“主動”

來gongzhonghao【圖靈學術計算機論文輔導】&#xff0c;快速拿捏更多計算機SCI/CCF發文資訊&#xff5e;在當下&#xff0c;機器人與深度學習的融合正成為AI領域的核心發展趨勢&#xff0c;相關研究在頂會頂刊上熱度居高不下。從ICLR到CoRL&#xff0c;諸多前沿成果不斷涌現&am…

Nginx學習筆記(三)——在 CentOS 7 中配置阿里云鏡像源

&#x1f4da; Nginx學習筆記&#xff08;三&#xff09;——在 CentOS 7 中配置阿里云鏡像源 在 CentOS 7 中配置阿里云鏡像源可顯著提升軟件安裝和更新的速度&#xff0c;以下是詳細操作步驟&#xff1a; &#x1f527; 配置阿里云鏡像源步驟 1?? 備份原有源配置 sudo mv /…

WebSocket--簡單介紹

一、什么是 WebSocket&#xff1f;定義&#xff1a;WebSocket 是一種在單個 TCP 連接上進行全雙工通信的協議。作用&#xff1a;實現客戶端&#xff08;瀏覽器&#xff09;和服務器之間的實時、雙向通信。優勢&#xff1a;連接保持&#xff0c;通信實時性強&#xff08;不像 HT…

【STM32 LWIP配置】STM32H723ZG + Ethernet +LWIP 配置 cubemx

STM32H723ZG LAN8742 Ethernet LWIP 配置 cubemx &#x1f31e;這邊記錄一下這塊mcu 配置以太網的過程&#xff0c;IDE是KEIL MDK&#xff0c;其實就是在下面多次提到的blog的基礎上 在scatter file進行配置 首先&#xff0c;如果想要簡單一點 直接去cubemx 那邊獲取相關的例…

EI檢索-學術會議 | 人工智能、虛擬現實、可視化

第五屆人工智能、虛擬現實與可視化國際學術會議&#xff08;AIVRV 2025&#xff09;定于2025年9月5-7日在中國 成都召開。人工智能正驅動各行業智能化轉型&#xff0c;提升效率與質量&#xff1b;虛擬現實技術以其沉浸感重塑教育、娛樂、醫療等領域體驗&#xff1b;可視化技術…

力扣(H指數)

一、題目分析 &#xff08;一&#xff09;問題描述 給定一個整數數組 citations&#xff0c;其中 citations[i] 表示研究者的第 i 篇論文被引用的次數。我們需要計算并返回該研究者的 H 指數。根據維基百科定義&#xff1a;H 指數代表“高引用次數”&#xff0c;一名科研人員的…

標準io(1)

標準I/O基礎概念標準I/O&#xff08;Standard Input/Output&#xff09;是C語言提供的一組高級文件操作函數&#xff0c;位于<stdio.h>頭文件中。與低級I/O&#xff08;如Unix的系統調用read/write&#xff09;相比&#xff0c;標準I/O引入了緩沖機制&#xff0c;能顯著提…

線性代數1000題學習筆記

1000題線代基礎第一章1-101000題線代基礎第二章1-171000題線代基礎第三章1-11