ARM學習之ARM體系結構

2021-08-24 23:17:56 字數 2376 閱讀 5928

本文主要針對arm cortex-a9處理器的研究。

arm採用的是32位的risc架構

資料型別:

byte 位元組 8bit

halfword 半字 16bit(v4以上版本)

word 字 32bit

arm核心只提供fiq和irq兩種中斷向量。

arm支援大端模式和小端模式兩種儲存方式。

工作模式:

user:使用者模式

system:系統模式,和user模式相同暫存器的模式,執行特權級操作

fiq:快速中斷,高優先順序

irq:外部中斷模式,低優先順序中斷

svc:特權模式,復位

abort:資料訪問終止模式,訪問異常,用於虛擬儲存和儲存保護

undef:未定義模式,執行未定義指令的模式,有時通過軟體**協處理器硬體的工作模式

monitor:監控模式,安全模式和非安全模式間切換

異常源及其優先順序:

reset:復位異常

data abort:資料訪問終止異常,從記憶體中進行資料讀寫,發生錯誤時候產生

fiq:快速中斷異常

irq:外部中斷異常

abort :預取指令終止異常 

swi:軟中斷異常

undef:未定義指令異常

異常對應的工作模式及lr的返回值異常

工作模式

返回用途

復位異常

svc-

-資料訪問終止異常

abort

lr-8

指向導致資料終止的指令

快速中斷異常

fiqlr-4

指向發生異常正在執行的指令

外部中斷異常

irqlr-4

指向發生異常正在執行的指令

預取指令終止異常

abort

lr-4

指向導致預取指令異常的指令

軟中斷異常

svclr

指向swi指令的下一條語句

未定義指令異常

undef

lr指向未定義指令的下一條語句

中斷響應流程:

備份cpsr給spsr

修改cpsr:切換工作狀態arm態,切換異常對應的工作模式,使能禁用irq和fiq

修改pc值跳轉給異常處理程式

軟中斷處理流程:

@1.建立異常向量表

b reset_handle

b undef_handle

b swi_handle

b prefetch_handle

b data_handle

nopb irq_handle

b fiq_handle

@建立棧

.data    

stack_head: @svc棧

.space 64

stack_end:

user_stack_head: @user棧

.space 128

user_stack_end:

@2.啟動

reset_handle:

ldr sp, = stack_end @初始化svn下的棧

@切換到使用者模式

mrs r0, cpsr @cpsr狀態暫存器讀取,儲存到r0中

bic r0, #0xff @對cpsr操作流程:先讀取舊的值,在針對讀的值進行修改,最後回寫

orr r0, #0x10

msr cpsr, r0

ldr r0, =user_stack_end @初始化user下的棧

mov sp, r0

mov r0, #1

mov r1, #2

swi #16

swi_handle:  

stmfd sp!, @壓棧保護現場

...mov r0, lr

sub r0, #4 @獲取swi機器指令位址

ldr r1, [r0] @讀取swi機器指令

bic r1, #0xff000000 @讀取swi中斷號

mov r0, r1 @看下中斷號

bl swi_c_handle @呼叫更加詳細的c語言處理程式

ldmfd sp!, ^ @出棧還原、跳轉、恢復cpsr

掌握中斷跳轉的實現方法還是必要的,可以從本質上理解每個操作。

ARM體系結構

arm是 advanced risc machines 高階精簡指令系統處理器 的縮寫,是arm公司提供的一種微處理器智財權 ip 核 arm既可以認為是乙個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字 arm微處理器的特點 1 體積小 低功耗 低成本 高效能 2 支援t...

ARM體系結構

一 arm公司簡介 arm公司成立於1990年11月,主要設計arm系列risc處理器核心 arm公司主要做授權,不生產任何一款具體的晶元。二 arm公司產業鏈 arm 將技術授權給合作廠商 廠商 生產各具特色的具體晶元,廠商就包括飛利浦 英特爾 三星等 三 arm微處理器的應用領域 工業控制 無線...

ARM體系結構

arm 核心採用精簡指令集結構 risc,reduced instruction set computer 體系結構。其目標是設計出一套能在高時鐘頻率下單週期執行 簡單而有效的指令集,risc 的設計重點在於降低硬體執行指令的複雜度,這是因為軟體比硬體容易提供更大的靈活性和更高的智慧型。與其相對的傳...