進入異常
- 1. ARM狀態:LR(Link Register連接寄存器)保存下一條指令的地址(pc+4/+8)
- Thumble狀態:LR保存的是當前PC的偏移量(不需要確定異常是從何種狀態進入)
- CPSR(current program status register程序狀態寄存器)復制到相應的SPSR(saved program status register程序狀態保存寄存器)中,使CPSR模式位的值設置成對應的異常模式值。
- PC從相關的異常向量取下一條指令。
- 也可以設置中斷禁止位,阻止其他無法處理的異常嵌套。
- 如果異常發生時,處理器處於Thumble狀態,那么當用中斷向量地址加載PC時,自動切換到ARM狀態。
退出異常
- LR減去相應的偏移量,送到PC中
- SPSR復制回CPSR,清除中斷禁止位標志。
專用寄存器/特殊功能寄存器SFR(special function register)
GPU圖像處理器(Graphical Processing Unit)
NPU神經網絡處理器模塊(Neuro processing Unit)
ARM11單發處理器:一次向流水線中加載一條機器指令
ARMCortexA8:同時向流水線發射兩條指令,雙發射
ARMCortex:同時發射3條指令
ARMCortexA9:亂序執行(OOE)
三態門:
高電平(上拉Pull Up )、低電平(下拉Pull Down)、高阻態
最基本的作用是:將狀態不確定的信號線通過一個電阻將其箝位至高電平(上拉)或低電平(下拉),在不同應用場合中會對電阻的阻值要求有所不同。
高阻態:指的是電路的一種輸出狀態,既不是高電平也不是低電平,可以把它看作輸出(輸入)電阻非常大,它的極限狀態可以認為懸空(開路)。
假設這個使能信號是用來控制電機的,如果懸空的話,此信號線可能在上電后(或在運行中)受到其它噪聲干擾而誤觸發為高電平,從而導致電機出現不期望的轉動,這肯定不是我們想要的,此時可以增加一個下拉電阻。而相應的,對於低有效的復位控制信號(RST#),我們希望上電復位后處於無效狀態,則應使用上拉電阻。
拉電阻越小則表示電平能力越強(強拉),可以抵抗外部噪聲的能力也越強,但是拉電阻越小則相應的功耗也越大,因為正常信號要改變信號線的狀態也需要更多的能量。
STM32單片機GPIO模式即包含上拉或下拉
ARM尋址的方式
- 寄存器尋址:指令中地址碼給出的是寄存器的編號。ADD R0,R1,R2;R0-R1+R2
- 立即尋址:指令中在操作碼字段后面的地址碼部分不是操作數地址,而是操作數本身。ADD R3,R3,#10;R3-R3+10
- 寄存器移位尋址
- 寄存器間接尋址
- 變址尋址
- 多寄存器尋址
- 堆棧尋址
- 塊復制尋址
- 相對尋址:
ARM系統引導程序(Boot)
嵌入式系統硬件加電 以后運行的第一段程序。主要作用就是對硬件初始化。
引導加載程序(Bootloader):系統硬件加電到執行操作系統內核之前,執行的一段程序。為操作系統提供基本的運行環境,並啟動操作系統,將操作權交給內核。
PC機中,引導加載程序由BIOS(Basic Input Output System,一段固件程序)和硬盤中的操作系統Bootloader共同組成。
存儲器的組織結構
存儲器組織成金字塔結構。寄存器,cache一般在CPU的內部,外部的硬件設計主要考慮主存儲器和輔存儲器。
主存儲器和輔存儲器是通過地址來識別的,一個地址對應一個存儲單元。嵌入式系統存儲器部分設計時主要考慮:
1.CPU的存儲結構:CPU本身定義了能夠訪問多大的存儲空間、能夠訪問什么類型的存儲器以及訪問時序。
2.存儲器本身的工作原理。
人機接口
1.鍵盤接口:獨立式鍵盤,行列式鍵盤(行掃描法)。
抖動:軟件延遲,硬件R-S觸發器。
2.LED顯示器:
單個(發光電流5-20mA)、
7段(8段)(共陰極或共陽極):
靜態顯示:占有I/O資源較多,CPU時間少。
動態顯示:所有的段選端並聯在一起,由一個輸出寄存器作I/O口,成為段選寄存器。所有的共陰極點連在一起,由一個輸出寄存器作為I/O接口,成為位選寄存器。
點陣式:每個LED表示一個像素。單色點陣式,每個像素需要一位二進制數表示。彩色點陣式,每個像素需要更多的二進制表示,通常1個字節。
3.LCD(Liquid Crystal Display):
靜態驅動:
單純矩陣驅動(被動式):TN/STN
主動矩陣驅動:TFT(Thin Film Transistor薄膜式晶體管)背透式,相應時間塊,真彩。
4.觸摸屏接口
電阻觸摸屏:觸摸之后產生電壓,A/D轉換后與Vref比較,可得坐標。
紅外線觸摸屏:光點距架框排列紅外線發射接管。不適宜戶外和公共場所使用。
電容觸摸屏:
DMA技術:
CPU給DMA下指令,讓DMA控制器來處理數據,降低CPU資源利用率。與中斷請求的區別:
- DMA請求僅使CPU暫停一下,不需要對斷點和現場進行處理,外設與主存之間傳輸數據利用系統總線,無需CPU干擾,。
- CUP對DMA的請求是立即響應,即:在每條指令的每個階段都可以讓給DMA使用,占用CPU時間少。
DMA傳送過程:申請階段--響應階段--數據傳送階段--傳送結束階段。
- 外設向DMA控制器發信號,DMA再向CPU發出總線請求信號,請求獲得總線的控制權。
- CPU執行完當前總線周期后,響應請求並暫停主程序,釋放總線控制權。DMA通知外設,我已獲得總線控制權。
- 如內存向外設傳送時,DMA給總線內存地址和讀信號。DMA控制器內部的地址寄存器值加1,字節計數器減1,直至設定的字節數傳送完成。
- DMA將總線控制權還給CPU。
硬件請求模式下(H/W)4個DMA通道均可以從5個DMA源中選擇一個。但軟件請求模式下(S/W),DMA請求源沒有意義。
DMA模式:
- 請求模式:表明DMA操作是由誰發起的。
- 傳輸模式:詢問模式、握手模式。
- 服務模式:描述操作如何結束。整體服務模式和單獨服務模式。
串行通信接口
串行通信:數據的各位按順序一位一位傳送,成本低適合長距離通信,但是傳輸效率低。
單工、半雙工、全雙工。
異步串行通信:把每個字節當作獨立的信息來傳送,字節內部各位之間按照預先定義的時序傳送,時序取決於發送端。
- 一個完整的字節傳送包含(幀格式):起始位+所要傳送字節的二進制位+校驗位+停止位。串行通信數據線在沒有數據時保持在某個狀態(空閑狀態),當要發送數據時,先發送一個與空閑狀態相反的狀態,再發送字節的最低有效位(LSB),再傳送一個奇偶校驗位檢測誤碼,最后至少發送一個停止位(ASCII碼傳送時為10位)。這樣的一串數據稱為1幀。各位代碼之間的時間間隔是固定的。異步串行通信允許空字符。
- 波特率:傳送數據位時的速率(b/s),每位的傳送時間為波特率的倒數。
- 校驗位:可以選擇奇校驗(字符中有奇數個1則為1)、偶校驗、無校驗。
校驗位和停止位一般是串行通信控制器內部自動產生。停止位可為1、1.5、2位,若無可能傳輸錯誤。
同步串行通信:一次傳輸一塊數據(信息幀)+同步字符+錯誤檢測數據塊(CRC循環冗余校驗:傳送的數據為被除數,發送器產生固定的除數,所得余數即為“冗余字符”。接收的數據和“冗余字符”相除,商為0表示接收數據無誤??)。在沒有字符傳輸時,要發送空閑字符或者同步字符,因為同步通信必須連續傳輸,不可以有間隙。效率高、電路復雜對硬件要求高。
RS-232C串行通信接口
連接數據終端設備(DTE)、數據通信設備(DCE)。
板載一般是陽性插座DB9。
計算機外圍接口采用TTL標准,+5V代表1,接地代表0。RS232C-12V代表1,+12V代表0,需要電平轉換。
RS422:單機發送、多機接收,速度快距離長。
RS485