嵌入式學習的第四十四天-ARM

一、ARM內核基礎知識

?

1.ALU

算術邏輯單元;完成運算的電路

2.通用寄存器:R0~R15

  • ? ? ? ? R13(SP):棧指針寄存器:指向棧的指針(指向正確的位置),為了保護現場
  • ? ? ? ? R14(LR):連接寄存器:保存PC要回來的位置,在PC調用完了,把地址給PC
  • ? ? ? ? R15(PC)program counter 程序計數器;保存當前指令要執行的下一條指令的地址

3.cache

高速緩存;RAM和內核速度不匹配;

  • ? ? ? ? I cache:指令高速緩存 ? ?instruction
  • ? ? ? ? d cache:數據高速緩存 ? data

4.MMU:memory management unit?

? ? ? ? 內存管理單元;映射虛擬內存和物理內存:提高內存的使用效率

5.CPSR:current program status register

? ? ? ? 程序狀態寄存器。

  • 用戶級編程時用于存儲條件碼
  • 任何處理器模式下被訪問
  • 兩種運行狀態:ARM狀態(32位)、Thumb狀態(16位),兩種狀態之間可任意切換
  • 七種運行模式:usr(用戶)、fiq(快速中斷)、irq(外部中斷)、svc(管理)、sys(系統)、abt(數據訪問中止)、und(未定義指令中止)

6.SPSR:saved program status register

? ? ? ? 程序狀態保存寄存器

  • 每一種處理器模式下都有一個狀態寄存器SPSR,用于保存CPSR的狀態,以便異常返回后恢復異常發生時的工作狀態。
  • 當特定的異常中斷發生時,這個寄存器存放CPSR的內容。
  • 在異常中斷退出時,可以用SPSR來恢復CPSR。

7.CISC:complex instruction set computer

? ? ? ? 復雜指令集計算機

  • ?特點:指令集復雜、可變長度,單條指令可完成多步操作(如x86)。
  • 優勢:代碼密度高,但硬件設計復雜,功耗較高,在80%情況下,只能用20%功能。

8.RISC:reduce ?instruction set computer

? ? ? ?精簡指令集計算機

  • 特點:指令集簡單、固定長度,執行效率高,通常采用流水線技術,依賴編譯器優化。

  • 優勢:低功耗、高性能,適合嵌入式系統(如ARM、MIPS)。

9.cortex 系列:(從ARM 11)

  • ? ? ? ? cortex ?A:應用,消費類電子,便攜類設備;A7系列
  • ? ? ? ? cortex R:實時性高,高端,軍工、衛星;
  • ? ? ? ? cortex M:單片機系列;

10.總線(bus)

? ? ? ? AHB:先進的高速總線,連接高速設備,USB、RAM(早期叫北橋)
APB:先進外設總線,連接低速設備串口、GPIO,定時器(早期叫南橋)

11.哈佛結構和馮諾依曼

(1)哈佛架構

????????程序存儲和數據存儲分離:哈佛架構使用獨立的存儲器和總線來分別存儲程序和數據。程序存儲器專門用于存儲指令,數據存儲器用于存儲變量和數據。

(2)馮·諾伊曼架構

????????程序存儲和數據存儲統一:馮·諾伊曼架構使用同一套存儲器和總線來存儲程序和數據。程序和數據存儲在同一個存儲空間中,通過地址來區分指令和數據。

(3) ARM內核

  • 早期經典ARM(如ARM7)采用馮·諾伊曼架構;

  • 現代ARM(如Cortex-M/A系列)采用改進的哈佛架構(緩存層級分離指令/數據)。

12.編譯器

  • :交叉編譯工具鏈:arm-gcc,編譯出來的代碼無法在主機運行,只能在目標機上運行。
  • ????????對內核進行操作,比如關閉MMU,打開SP,打開I cache,關閉d cache?

二、RAM分類

(1)sram(static ram)
用晶體管存儲0、1;

? ? ? ? 速度快,成本高,存儲密度低;

? ? ? ? 應用于單片機。

(2)dram(dynamic ram)動態存儲
用電容充放電存儲0,1;

? ? ? ? 功耗大,需要外接(外接刷新電路,電路復雜(定期向存儲1的補充電荷)),讀寫速度低于sram,成本低,存儲密度大;

? ? ? ? 多應用與高端Soc。

(3)sdram(synchronous dram)
增加了同步電路,提高dram的數據讀寫速度(dram升級版)。

(4)ddr ram(ddr sdramldouble data rate sdram)
為sdram的下一代;雙倍速(雙數據速率)

(5)iram(internal ram)
注意iram并非是真正意義上的某種ram,通常iram就是 sram,它通常存在于Soc內部,所以被稱為iram(Soc內部直接封裝好在芯片內部的sram)

三、ROM分類

(1)rom非易失性存儲器
最早的rom在出場時寫入數據,之后無法更改。

(2)prom(programmable rom)可編程rom
出場后能夠讓用戶寫入一次數據,例如cdrom。

(3)eprom(erasable prom)可擦寫prom
出場后可以擦除數據再次寫入, 但需要特殊的設備,如紫外光等。

(4)eeprom(electically eprom)電可擦寫可編程rom
無需專用設備就可以擦寫,編程。

(5)flash閃存,新一代非易失性存儲器
1)nor flash(或非falsh)
可直接被CPU尋址(每個字節都有獨一無二的地址)

? ? ? ? 2)nand flash(與非falsh)
不可被COU尋址,每個字節不可被尋址(用flash控制器可以訪問)

?(6)存儲系統的速度和價格對比

四、ARM處理器工作模式(kernal)

Cortex A7有9種基本工作模式

五、寄存器概要

:1.PC所有模式公用;不同的工作模式下,各狀態都有自己獨立的棧區空間,管理不同的棧(SP和LR);

? ? ? ? 2.?ARM9 :37個寄存器;cortex A-7有40個寄存器

六、異常處理

1.異常模塊

  • FIQ中斷
  • IRQ中斷
  • Data Abort(數據存儲異常):對RAM的訪問發生錯誤
  • Prefetch Abort(預取失敗異常):指令預取階段內存訪問失敗觸發
  • Software Interrupt(軟中斷異常):軟件中斷(任務切換),多任務的并發靠底層的軟中斷實現
  • Undefined Instruction(未定義指令異常)
  • Reset(復位異常)

2.異常向量表

  • 定義:一段固定地址的內存區域(通常位于0x00000000或0xFFFF0000),存儲異常處理函數的入口地址。

  • 內容:每個異常類型對應一個4字節跳轉指令

3. 當異常發生時,ARM內核會做哪些操作?

  1. 保存現場

    將當前PC(下一條指令地址)存入LR(如LR=PC-4或PC+4),CPSR存入SPSR(備份狀態)。切換到對應的異常模式(如IRQ模式)。
  2. 跳轉至異常處理

    從異常向量表獲取處理函數地址,執行異常服務程序(ISR)。
  3. 中斷屏蔽

    自動禁用同級或低優先級中斷(FIQ可能不被屏蔽)。
  4. 返回恢復(手動操作):

    通過特定指令(如SUBS PC, LR, #4)恢復PC和CPSR,返回到原程序。

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

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

相關文章

QML開發:QML中的基本元素

文章目錄一、概述二、常用基本元素2.1 基礎視覺元素(常用于布局和顯示)2.1.1 元素 Item 的介紹和使用2.1.2 元素 Rectangle 的介紹和使用2.1.3 元素 Image 的介紹和使用2.1.4 元素 Text 的介紹和使用2.2 交互元素(用于接收用戶操作&#xff0…

Spring AI 項目實戰(二十二):Spring Boot + AI +DeepSeek實現智能合同數據問答助手?(附完整源碼)

系列文章 序號 文章名稱 1 Spring AI 項目實戰(一):Spring AI 核心模塊入門 2 Spring AI 項目實戰(二):Spring Boot + AI + DeepSeek 深度實戰(附完整源碼) 3 Spring AI 項目實戰(三):Spring Boot + AI + DeepSeek 打造智能客服系統(附完整源碼) 4

從 0 到 1 創建 InfluxDB 3 表:標簽、字段、命名規范一篇講透

前言 在使用 InfluxDB 3 存儲時序數據時,表的設計堪比蓋房子打地基,地基打歪,數據“塌方”指日可待。InfluxDB 雖然不是傳統意義上的關系型數據庫,但它有自己的一套“審美”:標簽(Tags)和字段(Fields)是它的雙核心,誰先誰后,關系重大,順序寫錯,查詢性能立馬打折。…

[sqlserver] 分析SQL Server中執行效率較低的SQL語句

查詢性能分析較低的SQL語句 -- 查詢性能分析 SELECT TOP 50qs.creation_time AS [編譯時間],qs.last_execution_time AS [最后執行時間],qs.execution_count AS [執行次數],qs.total_worker_time/1000 AS [CPU總時間(ms)],qs.total_elapsed_time/1000 AS [總耗時(ms)],(qs.tota…

SmartX 用戶建云實踐|寶信軟件:搭建“雙架構”私有云平臺,靈活滿足多種業務需求

上海寶信軟件股份有限公司(以下簡稱寶信軟件)系中國寶武實際控制、寶鋼股份控股的上市軟件企業,是中國領先的工業軟件行業應用解決方案和服務提供商,為寶武集團提供整體 IT 基礎架構解決方案與服務。為統一管理寶武集團旗下分散在…

應用科普 | 漫談6G通信的未來

【摘要前言】2019年推出的5G無線通信將移動設備的性能提升到了一個新的水平。首批應用利用5G提供移動寬帶,使消費者能夠以遠超以往的速度進行流媒體傳輸、游戲和連接。隨著技術的成熟,它已成為物聯網的關鍵組成部分,將機器匯集到一個全球網絡…

從零開始用 Eclipse 寫第一個 Java 程序:HelloWorld 全流程 + 避坑指南

對于 Java 初學者來說,第一次用 Eclipse 寫程序往往會手足無措 —— 找不到新建項目的入口、不知道包和類該怎么命名、運行時控制臺突然消失…… 別慌!本文以最經典的 “HelloWorld” 為例,手把手帶你走完從 Eclipse 項目創建到程序運行的完整…

NVIDIA Isaac GR00T N1.5 源碼剖析與復現

? 0. 前言 2025.6.11 NVIDIA Isaac GR00T N1 進化,英偉達發布了NVIDIA Isaac GR00T N1.5模型,效果比原先提高了不少,故來復現一下,看看能否應用于我的項目中: 代碼頁 項目頁 模型頁 ? 以下是使用 GR00T N1.5 的一般…

手把手教你馴服Apache IoTDB時序數據庫,開啟時序數據管理新征程!

手把手教你馴服Apache IoTDB,開啟時序數據管理新征程! 本文是一篇幽默風趣的 Apache IoTDB 時序數據庫安裝使用教程。從 “這東西能不能吃” 的靈魂拷問切入,先科普 IoTDB 的 “真實身份”—— 一款專為時序數據設計的數據庫利器,…

劇本殺小程序系統開發:開啟沉浸式推理社交新紀元

在數字化浪潮席卷的當下,傳統娛樂方式正經歷著前所未有的變革,劇本殺這一融合了推理、角色扮演與社交互動的熱門游戲,也搭上了科技的快車,劇本殺小程序系統開發應運而生,為玩家們開啟了一扇通往沉浸式推理社交新世界的…

Ubuntu系統VScode實現opencv(c++)視頻的處理與保存

通過OpenCV等計算機視覺工具,開發者可以像處理靜態圖像一樣對視頻流逐幀分析:從簡單的裁剪、旋轉、色彩校正,到復雜的穩像、目標跟蹤、超分辨率重建。而如何將處理后的高幀率、高動態范圍數據高效壓縮并封裝為通用格式(如MP4、AVI…

三坐標測量技術解析:從基礎原理到斜孔測量難點突破

基礎原理 三坐標測量儀(Coordinate Measuring Machine,CMM)這種集機械、電子、計算機技術于一體的三維測量設備,其核心技術原理在于:當接觸式或非接觸式測頭接觸感應到工件表面時,測量系統會瞬間記錄三個坐…

【MySQL基礎篇】:MySQL常用內置函數以及實用示例

?感謝您閱讀本篇文章,文章內容是個人學習筆記的整理,如果哪里有誤的話還請您指正噢? ? 個人主頁:余輝zmh–CSDN博客 ? 文章所屬專欄:MySQL篇–CSDN博客 文章目錄內置函數一.日期函數二.字符串函數三.數學函數四.其他函數內置函…

Mirror學習筆記

Mirror官方案例操作 一、導入Mirror 在unity商城訂閱Mirror https://assetstore.unity.com/packages/tools/network/mirror-129321 使用unity創建工程 (推薦版本:目前建議使用 Unity 2020 或 2021 LTS 版本;超出這些版本的可能可以運行…

R4周打卡——Pytorch實現 LSTM火災預測

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 一、準備工作 1.1導入數據 1.2數據集可視化 二、構建數據集 2.1數據集預處理 2.2設置X、Y 2.3檢查數據集中有沒有空值 2.4劃分數據集 三、構建模型 3.1定義訓…

【視覺識別】Ubuntu 22.04 上編譯安裝OPENCV 4.12.0 魯班貓V5

系列文章目錄 提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 例如:第一章 Python 機器學習入門之pandas的使用 提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目…

基于vue的財務管理系統/基于php的財務管理系統

基于vue的財務管理系統/基于php的財務管理系統

機器學習技術在訂單簿大單檢測中的應用研究

訂單簿數據的特點 訂單簿(Order Book)是記錄市場上所有未成交買賣訂單的數據結構,通常包括價格、數量、買賣方向等信息。訂單簿數據具有以下特點: 高頻率:訂單簿數據更新速度極快,通常以毫秒甚至微秒為單位…

Spring MVC框架中DispatcherServlet詳解

1. DispatcherServlet概述1.1 什么是DispatcherServlet?DispatcherServlet是Spring MVC框架的核心組件,它本質上是一個Java Servlet,作為前端控制器(Front Controller)負責接收所有HTTP請求,并根據特定規則將請求分發到相應的處理…

DBA急救手冊:拆解Oracle死鎖圖,ORA-00060錯誤秒級定位終極指南

關于“死鎖圖”(Deadlock Graph)的一點淺見 當 Oracle 檢測到死鎖時,檢測到死鎖的會話中的當前 SQL 將被取消,并執行“語句級回滾”,以釋放資源并避免阻塞所有活動。 檢測到死鎖的會話仍然“存活”,并且事務…