炮製了一篇,基本是拿來主義,不算技術,只能算雜談。
主要來源是腦中的記憶和《主流ARM嵌入式系統設計技術與執行個體精解》,歡迎指正。
*******************************************************************************
關於嵌入式
*******************************************************************************
嵌入式應用的特點:功能特定,規模靈活,即時穩定
類別:MCU, MPU, DSP, SoC
硬體:核心 + 外圍介面
軟體:Bootloader, Kernel & Driver, File System & Application
Bootloader是嵌入式系統的啟動代碼,主要用來初始化處理器、傳遞核心啟動參數給核心,
使得核心可以按照傳遞的參數啟動。通常還具有搬運核心代碼到RAM並跳轉到核心代碼地址
執行的功能。
核心主要進行進程管理、處理序間通訊和同步、記憶體管理和IO資源管理。
驅動,一般作為核心的一部分,主要給上層應用程式提供通過處理器外設介面控制器和外
設進行通訊的媒介。
嵌入式OS: Windows CE, Linux, Plam OS, Symbian OS, VxWorks, uCOS, pSOS,
Nucleus, EPOC等
RSIC的典型特點:所有指令寬度相同,所有指令都單周期執行(許多實現並不嚴格尊從,
比如ARM處理器),指令流水線
*******************************************************************************
關於ARM
*******************************************************************************
ARM處理器系列
ARM7, ARM9, ARM9E, ARM10E, SecurCore, ARM11
ARM核心功能模組:
T(Thumb,支援Thumb指令)
D(Debug,JTAG,可使CPU進入偵錯模式,從而設定斷點,進行單步調試)
I(Embedded ICE,實現斷點和變數觀測的邏輯電路部分,包括TAP控制器)
M(Multiplier,8位乘法器)
E(DSP Enhancement,提供某些DSP指令)
J(Jazelle DBX,Java加速模組,甚至可以直接執行某些JAVA指令)
S(softcore,可綜合的軟核)
ARM處理器工作模式
共支援7種工作模式,具體取決於體繫結構的版本,模式對應了異常向量表。
+----------+----------+--------------------+
| 普通模式 | | 使用者模式 |
+----------+ 正常模式 +--------------------+
| | | 系統模式 |
| |----------+--------------------+
| | | 快速中斷模式 |
| | +--------------------+
| | | 外部中斷模式 |
| 特權模式 | 異常模式 +--------------------+
| | | 特權模式 |
| | +--------------------+
| | | 資料訪問中止模式 |
| | +--------------------+
| | | 未定義指令中止模式 |
+----------+----------+--------------------+
注: 此處正常模式和普通模式是我生造的術語,沒有確定是否存在,各位請暫且忽略。
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介面等電路部分,通常把最小
系統做成多層核心板(先調穩定了),把外圍介面板設計成雙層板,然後將這兩個系
統用一個介面串連起來。