一、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內核會做哪些操作?
保存現場:
將當前PC(下一條指令地址)存入LR(如LR=PC-4或PC+4),CPSR存入SPSR(備份狀態)。切換到對應的異常模式(如IRQ模式)。跳轉至異常處理:
從異常向量表獲取處理函數地址,執行異常服務程序(ISR)。中斷屏蔽:
自動禁用同級或低優先級中斷(FIQ可能不被屏蔽)。返回恢復(手動操作):
通過特定指令(如SUBS PC, LR, #4
)恢復PC和CPSR,返回到原程序。