本文主要針對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 的設計重點在於降低硬體執行指令的複雜度,這是因為軟體比硬體容易提供更大的靈活性和更高的智慧型。與其相對的傳...