簡圖記錄-ARM嵌入式基礎(概念、工作模式、寄存器、尋址)

ARM 244瀏覽

簡圖記錄學習~

參考:國嵌教學視頻arm相關、s3c2440用戶手冊

一、概念

ARM芯片/ARM處理器:各芯片廠商(如三星)獲得arm公司授權生產的帶arm核的處理器。(如三星 s3c2440 6410 210)

ARM核心:arm公司設計的CPU運算處理核心,分成如arm7、arm9、arm11、Armcoretx等幾個家族。(2440對應arm9、6410對應arm11、210對應armcortexa8)

ARM指令架構版本:每個ARM核心都對應著一個指令集版本(如arm9對應armV4、arm11對應armV6、armA8對應armV7)

ARM芯片特點:使用RISC精簡指令集、支持16bitthumb和32bitarm指令、低功耗

RISC精簡指令集:關注常用指令簡單高效、指令等長 匯編簡單、面積小功耗低,適合專用電路(向對應CISC復雜指令集:指令豐富 處理特殊任務高效、功能強大 適合通用機)

二、ARM工作模式和工作狀態

工作狀態:arm支持大小端(默認小端-低地址地位字節數據)、arm支持16bit thumb指令和32bit arm指令(默認arm指令)

工作模式:不同工作模式下 可訪問的寄存器和指令集有差異,主要用于區分運行權限保護系統(由運行異常、中斷或者軟件主動觸發切換模式)

工作模式分類(7種):用戶模式usr(低權限-用戶進程工作)、快速中斷FIQ、普通中斷IRQ、保護模式supervisior(高權限-操作系統運行)、地址或內存訪問錯誤Abort、指令未定義Undefined、系統特權任務模式system(較少用)

三、ARM寄存器

共37個通用寄存器:R0-R7不分組(各個模式使用同一個)、R8-R14分組(R13、R14不同模式有自己的、FIQ模式全都有自己的)、R15程序計數器PC

6個程序狀態寄存器:CPSR當前程序狀態寄存器(各個模式用同一個)、SPSR異常程序狀態保存寄存器(除了user和system其他模式各一個)

CPSP寄存器內容(0~7控制 8~27保留、28~31條件標志):

控制:0到4bit表示工作模式類型、5bit T位表示使用1:thumb還是0:arm指令、6bit F位表示FIQ禁止位、7bit I位表示IRQ禁止位】

條件標志:28bit V位表示溢出位 29bit C位表示進位/借位、30bit Z位表示零位、31bit N位表示 負/小于 位

四、ARM尋址方式(處理器根據指令信息找到操作數的方式)

1、立即數尋址(操作數直接在指令中 mov R1,#3:將3放到R0)

2、寄存器尋址 (操作數放在寄存器中 mov R0,R1:將R0的值放到R1中)

3、寄存器間接尋址(操作數在寄存器值為地址指向的內存中 mov R0,[R2]:將R2中的值為地址指向內存中的數放到R0中)

4、寄存器位移尋址 (當第二個數為位移方式時、將寄存器的值先位移處理得到操作數 mov R0,R1,lsl#3:將R1中值左移3位放到R0中)

5、寄存器基址尋址(也叫基址變址尋址)(由間接尋址發展而來,先對寄存器中的值進行計算再以結果為地址取其指向內存值為操作數 LDR R0,[R1, #4]:先將R1中的值加4 然后以結果為地址 對應的內存操作數放到R0)

6、多寄存器尋址(一條指令傳送多個(最多16個)寄存器值 STMIA R0!,{R2-R7,R12}:將R2到R7和R12放到R0指向的地址中)

7、相對尋址(以程序計數器PC的當前值為基地址,指令中的地址標號作為偏移量,將兩者相加之后得到操作數的有效地址 BL NEXT:跳轉到NEXT標簽處)

8、拷貝尋址(將連續的寄存器值進行操作 STMIA R0! ,{R1-R7}:將R1~R7的數據保存到R0指向的地址中)

9、堆棧尋址(將棧用于操作數保存或者導出的操作?STMFD SP!,{R1-R7,LR}:將R1~R7,LR入棧,SP更新。滿遞減堆棧)

七星彩走势图2元网官网