嵌入式複習

2022-11-30 19:24:05 字數 4565 閱讀 5839

arm重點整理

第1章:

1、嵌入式系統定義:根據ieee(國際電氣和電子工程師協會)的定義:嵌入式系統是「用於控制、監視或者輔助操作機器和裝置的裝置」。簡單講,就是嵌入到物件體中的專用計算機系統。

從技術的角度定義:以應用為中心、以計算機技術為基礎、軟體硬體可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。

從系統的角度定義:嵌入式系統是設計完成複雜功能的硬體和軟體,並使其緊密耦合在一起的計算機系統。

2、c/os-定義:乙個原始碼公開、可移植、可裁剪、佔先式的實時多工作業系統,其絕大部分原始碼使用ansic寫的。特點:

提供源**、可移植、可固化、可裁剪、可剝奪、多工、可確定性、任務棧、系統服務、中斷管理、穩定性與可靠性。

第2章:

1、arm體系結構

arm處理器為risc晶元,其簡單的結構使arm核心非常小,這使得器件的功耗也非常低。它具有經典risc的特點:

(1)大的、統一的暫存器檔案;

(2)裝載/儲存結構,資料處理操作只針對暫存器的內容,而不直接對儲存器進行操作;

(3)簡單的定址模式;

(4)統一和固定長度的指令域,簡化了指令的解碼。

(5)每條資料處理指令都對算術邏輯單元和移位器控制,以實現alu和移位器的最大利用;

(6)位址自動增加和減少定址模式,優化程式迴圈;

(7)多暫存器裝載和儲存指令實現最大資料吞吐量;

(8)所有指令的條件執行實現最快速的**執行。

2、**流水線:正常操作過程中,在執行一條指令的同時對下一條(第二條)指令進行解碼,並將第三條指令從儲存器中取出。 arm處理器使用流水線來增加處理器指令流的速度,使得幾個操作可同時進行,處理和儲存器系統可連續操作,能提供0.

9mips/mhz的指令執行速度。

3、處理器狀態:arm7tdmi處理器核心使用v4t版本的arm結構,該結構包含32位arm指令集和16位thumb指令集。因此arm7tdmi處理器有兩種操作狀態:

arm狀態:32位,這種狀態下執行的是字方式的arm指令;

thumb狀態:16位,這種狀態下執行半字方式的thumb指令。

注意:兩個狀態之間的切換並不影響處理器模式或暫存器內容。

4、 處理器模式:arm體系結構支援7種處理器模式,分別為:使用者模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統模式,如下表所示。

這樣的好處是可以更好的支援作業系統並提高工作效率。arm7tdmi完全支援這七種模式。

4、內部暫存器:在arm7tdmi處理器內部有37個使用者可見的暫存器。所有的37個暫存器,分成兩大類:

31個通用32位暫存器、6個狀態暫存器。 在組合語言中暫存器r0~r13為儲存資料或位址值的通用暫存器。它們是完全通用的暫存器,不會被體系結構作為特殊用途,並且可用於任何使用通用暫存器的指令。

暫存器r13常作為堆疊指標(sp)。用於儲存待使用的暫存器的內容。

r14為鏈結暫存器(lr),在結構上有兩個特殊功能:

當使用bl指令呼叫子程式時,返回位址將自動存入r14中;

當發生異常時,將r14對應的異常模式版本設定為異常返回位址(有些異常有乙個小的固定偏移量)。

暫存器r15為程式計數器(pc),它指向正在取指的位址。可以認為它是乙個通用暫存器,但是對於它的使用有許多與指令相關的限制或特殊情況。如果r15使用的方式超出了這些限制,那麼結果將是不可**的

5、cpsr標誌位:

n 運算結果的最高位反映在該標誌位。對於有符號二進位制補碼,結果為負數時n=1,結果為正數或零時n=0;

z 指令結果為0時z=1(通常表示比較結果「相等」),否則z=0;

c 當進行加法運算(包括cmn指令),並且最高位產生進製時c=1,否則c=0。當進行減法運算(包括cmp 指令),並且最高位產生借位時c=0,否則c=1。對於結合移位操作的非加法/減法指令,c為從最高位最後移出的值,其它指令c通常不變;

v 當進行加法/減法運算,並且發生有符號溢位時v=1,否則v=0,其它指令v通常不變。

cpsr控制位:

cpsr的最低8位為控制位,當發生異常時,這些位被硬體改變。當處理器處於乙個特權模式時,可用軟體操作這些位。它們分別是:中斷禁止位;t位;模式位。

中斷禁止位包括i和f位:當i位置位時,irq中斷被禁止;當f位置位時,fiq中斷被禁止。

t位反映了正在操作的狀態:當t位置位時,處理器正在thumb狀態下執行;當t位清零時,處理器正在arm狀態下執行。

模式位包括m4、m3、m2、m1和m0,這些位決定處理器的操作模式。(注意:不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯誤的設定,將引起乙個無法恢復的錯誤。)

6、異常向量表(8個異常向量):

7、異常向量的優先順序:當多個異常同時發生時,乙個固定的優先順序系統決定它們被處理的順序:

8、異常的進入和退出

注意:中斷返回指令的暫存器列表(其中必須包括pc)後的「^」符號表示這是一條特殊形式的指令。這條指令在從儲存器中裝載pc的同時(pc是最後恢復的),cpsr也得到恢復。

這裡使用的堆疊指標sp(r13)是屬於異常模式的暫存器,每個異常模式有自己的堆疊指標。這個堆疊指標應必須在系統啟動時初始化。

進入異常:

在異常發生後,arm7tdmi核心會作以下工作:

1.在適當的lr中儲存下一條指令的位址,當異常入口來自:

arm狀態,那麼arm7tdmi將當前指令位址加4或加8複製(取決於異常的型別)到lr中;

為thumb狀態,那麼arm7tdmi將當前指令位址加2,加4或加8 (取決於異常的型別)複製到 lr中;異常處理器程式不必確定狀態。

2.將cpsr複製到適當的spsr中;

3. 將cpsr模式位強制設定為與異常型別相對應的值;

4.強制pc從相關的異常向量處取指。

退出異常:

當異常結束時,異常處理程式必須:

1.將lr中的值減去偏移量後存入pc,偏移量根據異常的型別而有所不同;

2.將spsr的值複製回cpsr;

3.清零在入口置位的中斷禁止標誌。

注:恢復cpsr的動作會將t、f和i位自動恢復為異常發生前的值

第3章:

1、 arm指令的基本格式如下:

其中<>號內的項是必須的,{}號內的項是可選的。各項的說明如下:

opcode:指令助記符; cond:執行條件;

s:是否影響cpsr暫存器的值;

rd:目標暫存器rn:第1個運算元的暫存器;

operand2:第2個運算元;

靈活的使用第2個運算元「operand2」能夠提高**效率。它有如下的形式:

#immed_8r——常數表示式;

rm——暫存器方式;

rm,shift——暫存器移位方式;

2、(1)前索引

前索引也稱為前變址,在資料傳送之前,將先計算基位址與偏移量,其結果作為傳送資料的儲存位址。 例如:

ldr rd, [rn, #0x04]!

ldr rd, [rn, #-0x04]

備註:其中的驚嘆號『!』用於指示指令執行後,修改否基址暫存器。

2)後索引

後索引也稱為後變址,是用基址暫存器中的位址值定址,找出運算元進行操作,操作完成後, 再把位址偏移量和基址相加/減, 結果送到基址暫存器。例:

ldr rd, [rn], #0x04

str rd, [rn], #-0x08

在後索引中, 都會修改基址暫存器(不需要驚嘆號字尾)。

第4章:

1、兩種常見的arm編譯開發環境

ads/sdt ide開發環境:它由arm公司開發,使用了codewarrior公司的編譯器;

embestide開發環境:整合了gnu開發工具的ide開發環境,由gnu的彙編器as、交叉編譯器gcc、和鏈結器ld等組成。

2、atpcs(arm-thumb produce call standard)是arm程式和thumb程式中子程式呼叫的基本規則。目的是為了使單獨編譯的c語言程式和匯程式設計序之間能夠相互呼叫。

這些基本規則包括子程式呼叫過程中

(1)暫存器的使用規則:

子程式間通過暫存器r0~r3來傳遞引數

這時,暫存器r0~r3可以記作a1~a4

在子程式中,使用暫存器r4~r11來儲存區域性變數

這時,暫存器 r4~r11可以記作v1~v8

在thumb程式中,通常只能使用暫存器r4~r7來儲存區域性變數

(2)資料棧的使用規則:

根據堆疊指標指向位置的不同和增長方向的不同可以分為以下4種資料棧 :

fd (full descending) 滿遞減

ed (empty descending)空遞減

fa (full ascending) 滿遞增

ea (empty ascending) 空遞增

atpcs規定資料棧為fd(滿遞減)型別,並且對資料棧的操作是8位元組對齊的。

(3)引數的傳遞規則 :

引數個數固定的子程式引數傳遞規則:

第一到四個整數引數,通過暫存器r0~r3來傳遞,其他引數通過資料棧傳遞 ;

引數個數可變的子程式引數傳遞規則:

當引數不超過4個時,可以使用暫存器r0~r3來傳遞引數。當引數超過4個時,還可以使用資料棧來傳遞引數。

嵌入式系統複習

嵌入式處理器可以分為幾大類?答 嵌入式處理器可以分為以下幾大類 嵌入式微處理器 嵌入式微控制器 嵌入式dsp處理器 嵌入式片上系統 soc p0.2和p0.3口是i2c介面,當設定它們為gpio時,是否需要外接上拉電阻才能輸出高電平?答 使用gpio注意要點 大部分gpio輸出為推挽方式 個別引腳為...

嵌入式總結

什麼叫嵌入式系統 以應用為中心 以計算機技術為基礎 軟體硬體可裁剪 適應應用系統對功能 可靠性 成本 體積 功耗嚴格要求的專用計算機系統。什麼叫嵌入式處理器?嵌入式處理器分為哪幾類?嵌入式處理器是為完成特殊的應用而設計的特殊目的的處理器。分為四類 1 嵌入式微處理器 embedded micropr...

嵌入式總結

第三部分 arm處理器特點。功耗低 成本低 效能高 支援thumb 16位 arm 32位 雙指令集 cortex支援thumb 2 16 32位混合指令系統 指令長度固定 32位 16位 大量使用暫存器,指令執行速度更快,都可用於多種用途 定址方式靈活簡單,執行效率高 arm處理器的各系列情況。a...