炮製了一篇,基本是拿來主義,不算技術,只能算雜談。
注: 此處正常模式和普通模式是我生造的術語,沒有確定是否存在,各位請暫且忽略。
arm異常處理過程
arm的異常,包括復位、未定義指令、軟體中斷、資料訪問中止、外部中斷請求、快
速中斷請求。
處理過程:
1) 儲存現場,包括處理器當前狀態、中斷遮蔽位、cpsr暫存器的各條件標誌位(
複製到spsr)
2) 設定cpsr中相應的位
3) 將r14暫存器設定成返回位址,最後將pc設定成該異常的異常向量位址,執行
異常處理。
4) 由異常返回,先恢復處理器狀態(spsr->cpsr),然後返回到發生異常中斷
指令的下一條指令處執行,通過將對應模式下連線暫存器r14中的值裝載到pc
arm暫存器
arm共有37個暫存器,其中31個通用暫存器和6個狀態暫存器,都是32位暫存器,但狀
態暫存器只使用了其中的12位。
arm處理器中當前可見的暫存器組和處理器當前工作模式是有關。每種模式都有一組
對應的暫存器組,各暫存器組中任意時刻可見的暫存器包括程式計數器,15個通用寄
存器(r0-r14)以及乙個或兩個狀態暫存器
通用暫存器分三類:
未備份暫存器r0-r7,所有處理器模式下都只同乙個物理暫存器。
備份暫存器r8-r14
r8-r12每個有兩個不同的物理暫存器
r13,r14每個六個不同的物理暫存器,系統模式和使用者模式共用乙個
r13通常叫做堆疊指標
r14通常被稱為連線暫存器(lr)
程式計數器pc:pc值為當前指令位址加8位元組,即當前指令的下兩條指令的位址。
由於arm每條指令都是32位元組長度,所以是字對齊的,即pc低兩位為0。
程式狀態暫存器
cpsr(當前程式狀態暫存器),任何模式都可訪問。
spsr(備份程式狀態暫存器),各模式專有
arm的儲存系統
arm為單位址空間,大小為2^32個8位位元組,。arm是大小端可配置的,預設為小端。
快速上下文切換技術(fcse)通過修改系統中不同程序的虛擬位址,避免在程序間切
換時造成的虛擬位址到實體地址的重對映,從而提高了效能。通常fcse位於cpu和mmu
之間。arm最小系統
通常包括boot選擇,電源,復位,時鐘,儲存器,jtag介面等電路部分,通常把最小
系統做成多層核心板(先調穩定了),把外圍介面板設計成雙層板,然後將這兩個系
統用乙個介面連線起來。
ARM嵌入式實驗
問題 在startup.s中增加函式,由c程式呼叫,以此取得彙編中相關引數的設定值。獲取pll中m,p值,c程式呼叫彙編函式 在c語言中,要extern 乙個函式宣告即可,然後這個函式在彙編裡面實現。在彙編裡面,用export 把c語言定義的函式名引進來,再開始編寫函式名開始的段 實現 c程式呼叫 ...
嵌入式arm開發學習
今天是學習arm的第二天.感覺又懂了一點.記錄下來,以便以後不時之需.今天先是看了一些linux應用開發的東西,由於之前自己對linux程式設計還算是有過了解,這部分看得很快,基本沒有什麼閱讀障礙.個人建議想學嵌入式linux的人,最好先把unix環境高階程式設計看一遍.你會發現一切都會順其自然.之...
嵌入式ARM彙編複習
嵌入式系統是將先進的計算機技術 半導體技術和電子技術與各個行業的具體應用相結合後的產物。嵌入式系統的特點 形式多樣 面向特定應用,處理器和處理器體系結構型別多,關注成本,實時性和可靠性的要求 嵌入式微處理器的體系結構 可以分為馮 諾依曼 von neumann 結構或哈佛 harvard 結構兩大類...