1. 嵌入式系統簡介
嵌入式系統一般定義: 以應用為中心、以計算機技術為基礎,軟硬件可裁剪,應用系統對功能、可靠性、成本、體積、功耗和應用環境有特殊要求的專用計算機系統。
嵌入式系統的特點:系統內核小、專用性強、運行環境差異大、可靠性要求高、系統精簡和高實時性操作系統、具有固化在非易失性存儲器中的代碼、嵌入式系統開發工作和環境。( 專用性、隱蔽性、資源受限、高可靠性、 軟件固化、實時性)
嵌入式系統中的處理器分類:微處理器(MPU)、微控制器(MCU)、數字信號處理器(DSP)、嵌入式片上系統(SoC)
嵌入式系統分類
按嵌入式系統的用途進行分類:軍用,工業,民用
按嵌入式系統的實時性進行分類:硬實時系統,軟實時系統,非實時系統
按嵌入式系統的軟硬件技術復雜程度進行分類:
1)低端系統 采用4位或8位單片機,在工控領域和白色家電領域占主導地位,如計算器、遙控器、充電器、空調、傳真機等。
2)中端系統 采用8位/16位/32位單片機,主要用於普通手機、攝像機、錄像機、電子游戲機等。
3)高端系統采用32位/64位單片機,主要用於智能手機、調制解調器、掌上計算機、路由器、數碼相機等。
發展
20世紀60年代初,第一個工人的現代嵌入式系統(阿波羅導航計算機)
20世紀60年代中期,嵌入式計算機批量生產
20世紀70年代,微處理器出現
20世紀80年代中期,外圍電路的元器件被集成到處理器芯片中,昂貴的模擬電路元件能被數字電路替代
20世紀90年代中期SOC出現,集成電路進入超深亞微米乃至納米加工時代
應用:工業過程控制、網絡通信設備、消費電子產品、航空航天設備、軍事電子設備和現代武器
2.微電子技術(集成電路、SoC、IP核等技術的作用和發展)
(1)集成電路IC
集成電路的制造大約需要幾百道工序,工藝復雜。集成電路是在硅襯底上制作而成的。硅襯底是將單晶硅錠經切割、研磨和拋光后制成的像鏡面一樣光滑的圓形薄片,它的厚度不足1mm,其直徑可以是6、8、12英寸甚至更大這種硅片稱為硅拋光片,用於集成電路的制造。
制造集成電路的工藝技術稱為硅平面工藝,包括氧化、光刻、摻雜等多項工序。把這些工序反復交叉使用,最終在硅片上制成包含多層電路及電子元件的集成電路。
集成電路的特點:體積小、重量輕、可靠性高。其工作速度主要取決於邏輯門電路的晶體管的尺寸。尺寸越小,工作頻率就越高,門電路的開關速度就越快。
微機電系統(MIME):獨立芯片功能,光元件,傳感器,VLSI芯片,微型發電機或電池。
(2)IP核(Intellectual Property core)
IP核是一段具有特定電路功能的硬件描述語言程序,該程序與集成電路工藝無關,可以移植到不同的半導體工藝中去生產集成電路芯片。因此使用IP核是一個發展趨勢,IP核的重用大大縮短了產品上市時間。 核庫中的設計文件均屬於知識產權IP保護的范疇,所以稱為“知識產權核”或“IP核”。IP核的復用可以減少研發成本,縮短研發時間,是實現SoC的快速設計,盡早投放市場的有效途徑。
IP核是開發SoC的重要保證。按IC設計文件的類型,IP通常分為:軟核、固核、硬核。目前主要的CPU內核有ARM、MIPS、PowerPC、Coldfile、x86、8051等。ARM內核占所有32位嵌入式RISC處理器的90%以上。
IC設計文件:
邏輯門級,包括各種基本的門電路;
寄存器傳輸級,如寄存器、譯碼器、數據轉換器;
行為級,如CPU、DSP、存儲器、總線與接口電路等
(3) SoC芯片(片上系統)
一般認為SoC具有以下特點:
1)SoC應由可設計重用的IP核組成,IP核是具有復雜系統功能的能夠獨立出售的VLSI塊;2)IP核應采用深亞微米以上工藝技術;3)SoC芯片可以是一個CPU,單核SoC,SoC中可以有多個MPU、DSP、MCU或其復合的IP核,即多核SoC。4) 既包含數字電路,也可以包含模擬電路,還可以包含數模混合電路和射頻電路。
開發流程:
1)總體設計 可以采用系統設計語言System C(或稱IEEE 1666,它是C++的擴充)或System Vetilog語言對SoC芯片的軟硬件作統一的描述,按照系統需求說明書確定SoC的性能能參數,並據此進行系統全局的設計。
2)邏輯設計 將總體設計的結果用RTL(寄存器傳輸級描述語言)語言進行描述(源文件)后,在使用邏輯綜合將源文件進行綜合生成,生成最簡的布爾表達式核心好的連接關系(以類型為EDF的EDA工業標准文件表示)
3)綜合和仿真
4)芯片制造 借助EDA中的布局布線工具
3.嵌入式系統與數字媒體(文本、圖像和音頻/視頻等數字媒體的表示與處理)
(1)字符集及其編碼
1)西方字符的編碼
ASCII字符集和ASCII編碼,基本的ASCII字符集共128個字符,包括96個可打印字符,32個控制字符,每個字符使用7個二進位制進行編碼。
2)漢字的編碼
漢字國家編碼標准有GB2312和GB18030,每個漢字用2個字節表示。GB2312只有6763個漢字,它包括3755個一級常用漢字,3008個二級常用漢字,此外還有682個圖形符號(包括拉丁字母、俄文、日文平假名與片假名、希臘字母、漢語拼音等)。GB18030字符集與UCS/Unicode字符集基本兼容,采用不等長的編碼方法,單字節編碼表示ASCII字符,與ASCII碼兼容;雙字節表示漢字,與GB2312保持向下兼容(即GB2312中有的GB18030字符集都有)
3)Unicode/UTF-16編碼
Unicode/UTF-16編碼采用雙字節可變長編碼。Unicode它是由國際組織設計,可以容納全世界所有語言文字的編碼方案,
與ASCII兼容,與GB碼不兼容。例如“漢”字的Unicode編碼是6C49,而GB碼是BABA。ASCII、標點、希臘字母、阿拉伯文、CJK和漢字雙字節編碼,其他不常用字符四字節編碼。
(2) -數字圖像
數字圖像格式有多種,不同的格式有不同的編碼方法,具有不同的特點,適合不同的應用。GIF顏色數目少(不超過256種) ,文件特別小,支持動畫,適合互聯網傳輸。JPEG是靜止數據壓縮碼的國際標准,在數碼相機和互聯網中廣泛應用。
圖像獲取過程的核心是模擬信號的數字化,處理步驟為:
1)掃描 將畫面網格化,每個網格為一個取樣點
2)分色 將每個取樣點的顏色分解成三原色
3)取樣 測量每個取樣點的每個分量(基色)亮度值
4)量化 把模擬量使用數字量來表示,A/D轉換
數字圖像的主要參數:圖像大小(水平分辨率*豎直分辨率)、位平面數目、像素深度、顏色模型
一幅圖像的數據量計算公式: 圖像數據量=圖像大小*像素深度/8
音頻/視頻信息的數字化,處理步驟為:取樣、量化、編碼
4.嵌入式系統與網絡通信技術(數字通信與計算機網絡,TCP/IP協議,互聯網接入技術等)
(1)數字通信
通信的3個要素:信源,信宿,信道
電信號的兩種傳輸方式:模擬信號和數字信號。
按照信號的傳輸介質,通信系統可以分為有線通信和無線通信。
數字通信技術:調制解調技術,多路復用技術(時分多路復用技術,頻分多路復用技術),交換技術(電路交換,分組交換
(2) 互聯網
IP地址分為A,B,C三個基本類。
A類 0 網絡號(0-7) 主機號(8-31)
B類 10 網絡號(0-15) 主機號(16-31)
C類 110 網絡號(0-23) 主機號(24-31)
D類 1110 組播地址
E類 1111 備用
5. 嵌入式處理器
1).嵌入式處理器的結構分類
(1)按照指令集分:CISC(復雜指令集結構)與RISC(精簡指令集結構)
CISC處理器特點:指令數目很多且結構比較復雜。
CISC常見處理器:個人計算機中的Intel x86處理器
RISC處理器特點:指令數目較少,指令字長統一,格式規整,尋址模式單純,指令操作簡單,執行時間短。
RISC常見處理器:ARM,AVR,ARC等等。
(2)按照存儲結構分:馮諾依曼存儲結構與哈佛存儲結構
馮諾依曼結構:存儲器中可以存放數據,也可以存放程序。
哈佛結構:使用兩個獨立的存儲器分別存儲指令和數據,不允許指令和數據並存;使用獨立的兩條總線,分別作為CPU與每個存儲器之間的專用通信路徑。
改進式哈佛結構:在處理器與主存儲器之間增加了緩沖器(Cache)。
第一級采用哈佛結構。
第二三級以及主存儲器都采用哈佛結構。
這種改進式哈佛結構在x86系列和高端ARM處理器中得到了廣泛應用。
2).ARM處理器主要特點
(1)單周期操作
(2)只使用加載/存儲指令訪問內存
(3)指令長度固定32位(在16位代碼的Thumb工作狀態除外)
(4)三地址指令格式
(5)指令流水線技術
(6)低功耗設計
3).ARM處理器的分類
(1)經典ARM處理器
(2)ARM Cortex嵌入式處理器(Cortex-M)
(3)ARM Cortex實時嵌入式處理器(Cortex-R)
(4)ARM Cortex應用處理器(Cortex-A)
(5)ARM專家處理器
1991 年ARM 公司成立於英國劍橋,專門從事基於RISC 技術芯片設計開發的公司。主要出售芯片設計技術的授權,作為知識產權供應商,本身不直接從事芯片生產,靠轉讓設計許可由合作公司生產各具特色的芯片,世界各大半導體生產商從ARM公司購買其設計的ARM 微處理器核,根據各自不同的應用領域,加入適當的外圍電路,從而形成自己的ARM 微處理器芯片進入市場。采用ARM技術知識產權(IP核)的微處理器,即我們通常所說的ARM 微處理器,已遍及工業控制、消費類電子產品、通信系統、網絡系統、無線系統等各類產品市場,基於ARM 技術的微處理器應用約占據了32 位RISC 微處理器75 %以上的市場份額,ARM 技術正在逐步滲入到我們生活的各個方面。
6. 典型ARM處理器內核(ARM9,Cortex-A,Cortex-M,Cortex-R等的技術特點與應用領域)
1).ARM Cortex-M嵌入式處理器
(1)特點
CM0和CM0+成本低,簡單易用,適合成本控制要求高的中低端應用;
CM3性能好,通用性好,適合工業控制及中高端應用;
CM4具有有效的數字信號控制功能,適合數字信號處理要求高的應用。
(2)應用
CM0廣泛應用於已領料器械,電子測量,照明,智能控制,游戲裝置,緊湊型電源,電源和電機控制,精密模擬系統和無線通信領域。
CM3滿足專門面向電動機控制,汽車,電源管理,嵌入式音頻和工業自動化市場的靈活解決方案。
2).ARM Cortex-R嵌入式處理器
(1)特點
①高性能
②實時處理
③安全
④低成本
(2)應用
適用於計算復雜,實時性要求苛刻(如汽車電子,硬盤驅動器控制,手機等)的領域。
3).ARM Cortex-A應用處理器
(1)特點
NEON單指令多數據(SIMD)單元、ARMtrustZone安全擴展、以及thumb2指令集,通過16位和32位混合長度指令以減小代碼長度。
(2)應用
適用於有高計算要求,需運行功能豐富的操作系統以及要求提供交互媒體和圖形顯示的應用領域。
補充:處理器結構圖看書上吧。
(1)Cortex-A系列是面向高端嵌入式應用的處理器核:具有MMU、Cache、最快頻率、最高性能、合理功耗。
(2)Cortex-R系列是面向實時控制的處理器:具有MPU、Cache、實時響應、合理性能、較低功耗。
(3)Cortex-M系列是面向低端微控制器的處理器,沒有MMU但有MPU,極高性價比、最低成本,極低功耗。
系列 |
相應內核 |
主要性能特點 |
ARM7 |
|
馮-諾依曼結構,3級流水線,無MMU |
經典ARM9 |
ARM920T/ARM922T |
哈佛結構,5及流水線,單32位AMBA接口 |
ARM9E |
ARM926EJ-S/ARM946E-S/ARM966E-S/ ARM968E-S/ARM996HS |
哈佛結構,5及流水線,支持DSP指令,軟核(soft IP) |
ARM10 |
ARM1020E/ARM1022E/ARM1026EJ-S |
哈佛結構,6及流水線,分支預測,支持DSP指令,高性能浮點操作,雙64位總線接口,內部64位數據通路。 |
ARM11 |
ARM11MPCore/ARM1136J(F)-S |
哈佛結構,8級流水線,分支預測和返回棧,支持DSP指令、SIMD/Thumb-2核心技術 |
ARM1156T2(F)-S/ARM1176JZ(F)-S |
哈佛結構,9級流水線,分支預測和返回棧,支持DSP指令、SIMD/Thumb-2核心技術 |
|
嵌入 Cortex-M |
Cortex-M0, Cortex-M0+ |
馮-諾依曼結構,3級流水線,支持Thumb指令集並包含Thumb-2、嵌套向量中斷,M0+內部有MPU,而M0沒有。 |
Cortex-M1 |
馮-諾依曼結構,3級流水線,支持FPGA設計,Thumb指令集並包含Thumb-2 |
|
Cortex-M3 |
哈佛結構, 3級流水線,Thumb-2、嵌套向量中斷,分支指令預測,內置MPU |
|
Cortex-M4 |
哈佛結構, 3級流水線,Thumb-2、嵌套向量中斷,分支指令預測,內置MPU,高效信號處理,SIMD指令,飽和運算,FPU |
|
Cortex-R |
Cortex-R4/R4F/ Cortex-R5/Cortex-R7 |
哈佛結構,8級流水線,實時應用,支持ARM、Thumb和Thumb-2指令集,F標示內置FPU,DSP擴展,分支預測,超標量執行,內置MPU |
應用 Cortex-A |
Cortex-A5/ Cortex-A5MPcore |
|
Cortex-A7/ Cortex-A7MPcore |
|
|
Cortex-A8/ Cortex-A8MPcore |
|
|
Cortex-A9/ Cortex-A9MPcore |
哈佛結構,MPcore為多核,超標量結構,13級流水線,動態分支指令預測,有分支目標緩沖器BTB、MMU、FPU、L1、L2,支持ARM、Thumb和Thumb/EE指令集,SIMD/Jazelle RCT技術。 |
|
Cortex-A15/ Cortex-A15MPcore |
哈佛結構,可亂序執行指令流水線 |
|
Cortex-A50 |
Cortex-A53/57 |
哈佛結構,64位ARMv8架構,8級流水線 |
ARM處理器內核性能比較
以由高到低的方式來看,ARM處理器大體上可以排序為:Cortex-A57處理器、Cortex-A53處理器、Cortex-A15處理器、Cortex-A12處理器、Cortex-A9處理器、Cortex-A8處理器、Cortex-A7處理器、Cortex-A5處理器、ARM11處理器、ARM9處理器、ARM7處理器,再往低的部分手機產品中基本已經不再使用,這里就不再介紹。
7.ARM處理器內核的體系結構(工作狀態,工作模式,寄存器組織,異常與存儲格式等)
(1)工作狀態
一是ARM狀態:全部為32位指令,性能較好,代碼密度較低。
二是Thumb指令狀態(全部為16位指令,代碼密度高,占用空間小)及Thumb-2狀態(混合指令,性能好,代碼密度較高)。
三是調試狀態。
ARM處理器復位后開始執行代碼時總是只處於ARM狀態,如果需要,可通過下面的方法切換到Thumb狀態或Thumb-2狀態
ARM狀態切換到Thumb指令狀態:通過BX指令,將操作數寄存器的最低位設置為1即可。如果R0[0]=1,則執行BX R0指令將進入Thumb狀態
狀Thumb態切換到ARM狀態:通過BX指令,將操作數寄存器的最低位設置為0即可。如果R0[0]=0,則執行BX R0指令將進入ARM狀態。
(2)存儲格式
大端模式:32位數據字的高字節存儲在低地址,而數據字的低字節則存放在高地址中。
小端模式:32位數據字的高字節存儲在高地址,而數據字的低字節則存放在低地址中。
系統復位時,自動默認為小端模式。
例如:一個32位數據字0x12345678,存放在起始地址為0x30001000,則大端模式下0x30001000單元存放0x12,0x30001001單元存放0x34,0x30001002單元存放0x56,0x30001003單元存放0x78;而小端模式下0x30001000單元存放0x78,0x30001001單元存放0x56,0x30001002單元存放0x34,0x30001003單元存放0x12。
(3)工作模式(7種)
工作模式 |
功能說明 |
可訪問的寄存器 |
CPSR[M4:M0] |
用戶模User |
程序正常執行工作模式 |
PC,R14-R0,CPSR |
10000 |
快速中斷模式FIQ |
處理高速中斷,用於高速數據傳輸或通道處理 |
PC,R14_fiq-R8_fiq, R7-R0,CPSR,SPSR_fiq |
10001 |
外部中斷模式IRQ |
用於普通中斷處理 |
PC,R14_irq-R13_irq, R12-R0,CPSR,SPSR_irq |
10010 |
管理模式 SVC |
操作系統的保護模式,處理軟中斷SWI |
PC,R14_svc-R13_svc, R12-R0,CPSR,SPSR_svc |
10011 |
中止模式 ABT |
處理存儲器故障,實現虛擬存儲器和存儲器保護 |
PC,R14_abt-R13_abt, R12-R0,CPSR,SPSR_abt |
10111 |
未定義指令模式UND |
處理為定義的指令陷阱,用於支持硬件協處理器仿真 |
PC,R14_und-R13_und, R12-R0,CPSR,SPSR_und |
11011 |
系統模SYS |
運行特權及的操作系統任務 |
PC, R14-R0,CPSR |
11111 |
(4)寄存器組織
ARM處理器共有37種寄存器,包括31個通用寄存器(含PC)和6個狀態寄存器。
無論何種模式,R7-R0為公用的通用寄存器;R13堆棧指針SP;R14程序鏈接寄存器LR;R15均作為PC使用;R16為當前程序狀態寄存器CPSR;R17備份的程序狀態寄存器SPSR。所有通用寄存器均為32位結構。
程序狀態寄存器的格式:
31 30 29 28 27 26……8 7 6 5 4 3 2 1 0
N |
Z |
C |
V |
Q |
狀態保留 |
I |
F |
T |
M4 |
M3 |
M2 |
M1 |
M0 |
條件碼標志含義如下:
N為符號標志位,N=1為負數,N=0為正數。
Z為全0標志位,運算結果為0,則Z=1,否則Z=0;
C為進借位標志,有進/借位時C=1,否則C=0.
V為溢出標志,加減法運算結果溢出時V=1,否則V=0.
Q為增強的DSP運算指令溢出標志,溢出時Q=1,否則Q=0.
控制位含義如下:
I為中斷禁止控制位,I=1禁止IRQ中斷,I=0,允許中斷。
F為禁止快速中斷FIQ的控制位,F=1禁止FIQ中斷,F=0允許。
T為ARM和Thumb指令切換,T=1時執行Thumb指令,否則執行ARM指令。
M4-M0為模式選擇位
(5)異常(7種)
異常類型 |
優先級 |
工作模式 |
異常向量地址 |
復位RESET |
1 |
管理模式 |
0x00000000 |
未定義的指令UND |
6 |
未定義指令中止模式 |
0x00000004 |
軟件中斷SWI |
6 |
管理模式 |
0x00000008 |
指令預取中止PABT |
5 |
中止模式 |
0x0000000C |
數據訪問中止DABT |
2 |
中止模式 |
0x00000008 |
外部中斷請求IRQ |
4 |
外部中斷模式 |
0x00000010 |
快速中斷請求FIQ |
3 |
快速中斷模式 |
0x0000001C |
8.ARM處理器指令系統及匯編語言程序設計(指令格式,尋址方式,指令集,偽指令,語句格式與程序結構,ARM匯編語言與C的混合編程等)
(1)指令格式
指令一般格式
{}{S} ,{,} 其中<>不可省
指令格式說明:
項目 |
含義 |
備注 |
|
指令的操作碼 |
即助記符,如MOV、ADD、B等 |
{cond} |
條件域,滿足條件才執行指令 |
可不加條件即可省略條件,如EQ、NE等 |
{S} |
指令執行時是否需要更新CPSR |
可省略 |
Rd |
目的寄存器 |
Rd可為任意通用寄存器 |
Rn |
第一個源操作數 |
Rd可為任意通用寄存器,可以與Rd相同 |
Op2 |
第二個源操作數 |
可為#imm8m、寄存器Rm及任意移位寄存器 |
關於#imm8m的說明:#表示立即數,其后可以是十進制或十六進制數。對於ARM指令集,#imm8m表示一個由8位立即數經循環右移任意偶數位次形成的32位操作數。對於Thumb指令集,#imm8m表示一個由8位立即數經左移任意位次形成的32位操作數。
指令的條件碼
條件碼 |
助記符 |
標 志 |
含 義 |
0000 |
EQ |
Z置位 |
相等 |
0001 |
NE |
Z清零 |
不相等 |
0010 |
CS |
C置位 |
無符號數大於或等於 |
0011 |
CC |
C清零 |
無符號數小於 |
0100 |
MI |
N置位 |
負數 |
0101 |
PL |
N清零 |
正數或零 |
0110 |
VS |
V置位 |
溢出 |
0111 |
VC |
V清零 |
未溢出 |
1000 |
HI |
C置位Z清零 |
無符號數大於 |
1001 |
LS |
C清零Z置位 |
帶符號數小於或等於 |
1010 |
GE |
N等於V |
帶符號數大於或等於 |
1011 |
LT |
N不等於V |
帶符號數小於 |
1100 |
GT |
Z清零且N等於V |
帶符號數大於 |
1101 |
LE |
Z置位或N不等於V |
帶符號數小於或等於 |
1110 |
AL |
忽略 |
無條件執行 |
(2)尋址方式
1)立即尋址(立即數尋址)
例如:MOV R0,#0x1212121212
ADC R0,R0,#100 ;R0 R0+100+C
2)寄存器尋址(執行效率較高)
例如:ADD R0,R1,R2 ;R0 R1+R2
3)寄存器間接尋址
寄存器間接轉址就是以寄存器中的值作為操作數地址,而操作數本身存放在存儲器中。用間接尋址的寄存器必須用[ ]括起來。
例如: LDR R5,[R4] ;R5 [R4],間接尋址的寄存器是R4
STR R1,[R2] ;[R2] R1,間接尋址的寄存器是R2
4)基址加變址尋址
常見的幾種形式:
LDR R0,[R1,#4]
STR R1,[R2,#8]
LDR R0,[R1,#4]! (!表示指令在完成數據傳輸后更新基址存儲器)
LDR R0,[R1],#4
LDR R0, [R1, R2]
STR R0, [R1, R2]
5)相對尋址
相對尋址以程序計數器PC的當前值為基地址,指令中的地址標號作為偏移量,將兩者相加后得到操作數的有效地址。下列程序中跳轉指令BL利用相對尋址方式:
BL Subroutine_A ;跳轉子程序Subroutine_A處執行
…
Subroutine_A:
…
MOV PC ,LR ;從子程序返回
6)堆棧尋址
7)塊拷貝尋址
(3)ARM指令集
1)數據處理指令:
MOV數據傳送、MVN數據取反后傳送、CMP比較、CMN反值比較、TST位測試、TEQ相等測試、ADC帶進位的加法指令、ADD加法指令、SUB減法、SBC帶借位減法、RSB逆向減法RSC帶借位逆向減法、ORR邏輯或、AND邏輯與、EOR邏輯異或、BIC位清除。MUL 32位乘法、MLA 32位乘加
程序狀態訪問指令:MRS,MSR
MRS Rd PSR ;程序狀態寄存器PSR>>通用寄存器
MSR PSR Rd ;通用寄存器>>程序狀態寄存器PSR
加載存儲類指令:LDR,STR
LDRB字節數據加載、LDRH半字數據加載 格式:LDR Rd,[Rn imm] 或 LDR Rd,=ox1234
STRB字節數據存儲、STRH半字數據存儲
LDM批量數據加載
STM批量數據存儲
4) 跳轉指令:BL帶返回的跳轉、BX帶狀態切換的跳轉、BLX帶返回帶狀態切換的跳轉
5) 數據交換指令:SWP字數據交換指令、SWPB字節數據交換
6) 移位指令:LSL邏輯左移,LSR邏輯右移,ASR算數右移,ASL算數左移,ROR循環右移
7) 協處理器指令
CMP LDC MCR MRC STC
異常產生指令
SWI軟中斷指令 ,BKPT斷點中斷指令
偽指令
Thumb 關外部中斷指令 CPSID I
開外部中斷指令 CPSIE I
常見問題:
1.在ARM指令集匯編碼中,32位有效立即數是通過循環左移偶數位而間接得到的。
2.MRS 傳送CPSR或SPSR的內容到通用寄存器指令
MSR 傳送通用寄存器到CPSR或SPSR的指令
3.LDR 字數據加載
4.iOS的前身是UNIX-BSD
5.目前數碼相機用於存儲相片的大多是Flash存儲器
6.Thumb-2指令集,關外部中斷:CPSID I,開外部中斷:CPSIE I
7.FRAM:鐵電隨機存儲器 MRAM:磁性隨機存取器
8.S3C2410的nGGS2的首地址為0x10000000
9.創建事件控制塊:OSQCreate()
10.Symbian屬於普通實時系統
11.堆棧指針SP:R13 程序鏈接存儲器LR:R14
12.AND:與 ORR:或
9.嵌入式硬件組成與嵌入式處理芯片(組成,特點,類型,AMBA總線,嵌入式處理芯片的選型)
(1)基於ARM內核的典型嵌入式應用系統硬件組成
嵌入式最小硬件系統(電源電路、時鍾(晶振)電路、復位電路、JTAG測試接口、存儲器、處理器)
前向通道(輸入接口)
后向通道(輸出接口)
人機交互通道(鍵盤、觸摸屏以及LED或LCD顯示輸出接口)
相互互聯通信通道(CAN通信接口、以太網通信接口、USB通信接口)
(2)基於ARM內核的典型嵌入式芯片的硬件組成
1)存儲器及控制器(ARM處理器中MMU和MPU)
MMU存儲器管理單元(memory management unit)功能:
1) 虛擬地址到物理地址映射+
2)存儲器訪問權限受限
3)虛擬存儲空間的緩沖特性設置
MPU存儲器保護單元(memory protect unit)
2)中斷控制器
一般采用向量中斷(VIC)或嵌套向量中斷(NVIC)。Cortex-M支持嵌套的向量中斷。
3)DMA控制器(直接存儲器訪問控制器)
DMA控制器,可將數據塊從外設傳輸至內存、從內存傳輸至外設或從內存傳輸至內存,中間不經過CPU,提高計算機系統效率。
4)電源管理與時鍾控制器
電源電路為整個嵌入式系統提供能量,是整個系統工作的基礎,具有極其重要的位置。一般來說 ,如果電源電路處理得好,整個系統的故障往往能顯著減少。選擇設計電源電路是主要考慮以下因素:輸出電壓電流、輸入電壓電流(交流還是直流)、安全因素、體積限制、功耗限制、成本限制。
常用的電源模塊是交流變直流(AC-DC)模塊、直流變直流模塊(DC-DC)、低壓穩壓器(LDO)。穩壓器包括普通穩壓器和低壓差穩壓器LDO。78XX系列屬於普通穩壓器,LM2576/2596為開關穩壓芯片,CAT6219/AS2815/1117/2908等屬於低壓穩壓器。穩壓器的最大特點就是低噪聲、低成本、紋波小、精度高、電路簡單。
電源管理模塊s3c2440芯片有四種工作模式:正常模式、慢速模式(不使用PLL由外部時鍾供給)、休眠模式(內核斷點,外部硬件時鍾不斷電)、掉電模式(內核斷點)
5)定時計數組件
WDT看門狗定時器 監視着程序的運行狀態
Timer通用定時器 用於一般的定時
RTC可直接提供年月日時分秒,使應用系統具有獨立的日期和時間
PWM脈沖寬度調制解調器 用於脈沖寬度的調制,比如電機控制、用於變頻調整等
6)模擬通道組件: ADC和DAC
7)互聯通信組件:UART,I²C,I²S,SPI,CAN,USB,Ethernet
10.嵌入式系統的存儲器(層次結構,分類,性能指標;片內存儲器,片外存儲器,外部存儲設備等)
1)RAM(隨機讀取存儲器)與ROM區別(只讀存儲器)
RAM讀寫方便,使用靈活,但不能長期保存信息,一旦掉電,信息丟失;應用二進制信息的臨時存儲或緩沖存儲。ROM斷點數據保存,但只能讀數據;一般用來存放系統軟件(如BIOS)等不隨時間改變的代碼或數據。
SRAM與DRAM區別
RAM主要有兩大類存儲設備,即靜態RAM(SRAM)和動態RAM(DRAM)。兩者都是易失性存儲器,它們之間的最大差別是存儲於其中的數據的壽命。 SRAM的存儲單元電路是以雙穩態電路為基礎的,因此狀態穩定,只要不掉電,信息就不會丟失。DRAM的存儲單元是以電容為基礎的,電路簡單,集成度高,功耗小,但DRAM即使不掉電也會因電容放電而丟失信息,需要定時刷新。
2) NVRAM
NVRAM通常就是帶有后備電池的SRAM。當電源接通的時候,NVRAM就像任何其他SRAM一樣,但是當電源切斷的時候,NVRAM從電池中獲取足夠的電力以保持其中現存的內容。NVRAM在嵌入式系統中使用十分普遍,它最大的缺點是價格昂貴,因此,它的應用被限制於存儲僅僅幾百字節的系統關鍵信息。
3)Flash
Flash(閃速存儲器,簡稱閃存)是不需要Vpp電壓信號的EEPROM,一個扇區的字節可以在瞬間(與單時鍾周期比較是一個非常短的時間)擦除。Flash比EEPROM優越的方面是,可以同時擦除許多字節,節省了每次寫數據前擦除的時間,但一旦一個扇區被擦除,必須逐個字節地寫進去,其寫入時間很長。
NOR Flash與NAND Flash區別
或非型NOR Flash:以字節為單位存取,容量小,寫入和擦除速度慢,讀取快。與非型NAND Flash:以頁(行)為單位存取,容量大,改寫速度快,讀出較慢,編程復雜,使用壽命長。U盤、存儲卡都是使用NAND Flash技術
4)新型存儲器
FRAM:鐵電隨機存取存儲器,擁有ROM非易失性,RAM快速隨機讀寫,且速度快功耗低
MRAM:磁性隨機存取存儲器,擁有SRAM高速存儲能力及DRAM高集成度
5)存儲器的性能指標:
1)容量 內存容量=單元總數*數據位數/單元
假設單元個數為L,數據線為n,地址線為m,則m=㏒₂L,因此,存儲容量V=2^m*n
2)存取時間,從CPU給出有效的存儲地址開始到存儲器讀出或寫入所需要的時間。
3)帶寬,每秒可傳輸的最大數據量。
6)總結
片內存儲器:Cache,Flash ROM,E²PROM,SRAM
片外存儲器:片外程序存儲器 NOR Flash ROM,NAND Flash ROM
片外數據存儲器 SDRAM,DDR3
外部輔助存儲器:SM卡,SD卡,U盤
11. I/O設備通信接口(GPIO、I2C、SPI、UART、USB、HDMI、RS-232/RS-485、CAN、以太網和常用無線通信接口等)
(1)GPIO(General Purpose Input Output通用輸入/輸出端口)
可編程並行I/O接口,主要用於數字量, 作為輸入時具有緩沖功能,而作為輸出是具有鎖存功能,GPIO也可以作為雙向I/O使用。在ARM處理芯片中,GPIO引腳通常是多功能的,以減少引腳數,減少功耗。GPIO一般有三態:0態、1態、高阻狀態。
(2)ARM的AMBA總線
先進系統總線(ASB)用於連接高性能系統模塊,先進外圍總線(APB)支持低性能的外圍接口,先進高性能總線(AHB)用於連接高性能系統組件和高帶寬組件。
AMBA1—ASB+APB AMBA2—AHB+APB
AMBA3 —AHB+ATB+AXI+APB AMBA4 —ACE+ATB+AXI+APB
(3)串行外設接口SPI
全雙工的同步串行外設接口。使用4條線:串行時鍾線SCK,主機輸入/從機輸出數據線MISO,主機輸出/從機輸入數據線MOSI,低電平有效的從機選擇線SSEL。支持一主一從,互為主從,一主多從,多主多從式連接。基於此接口的外部設備有Flash ROM,RAM,A/D轉換器,網絡控制器,MCU等。
(4)集成電路互連總線接口IIC
集成電路互連總線用於連接嵌入式處理器及外圍器件,采用同步串行半雙工串行傳輸的總線標准。
IIC總線具有的接口線少,控制方式簡單,器件封裝緊湊,通信速率較高(100kb/s,400kb/s,高速模式可達3.4Mb/s)等優點。
【IIC總線的操作時序】
IIC總線只有兩條信號線,一條是數據線SDA(雙向三態),另一條是時鍾線SCL,所有的操作均通過這兩條信號線完成。數據線SDA上的數據必須在時鍾的高電平周期保持穩定,它的高/低電平狀態只有在SCL時鍾信號線是低電平時才能改變。
1)啟動和停止條件
總線上的所有器件都不使用總線時,SCL線和SDA線各自的上拉電阻把電平拉高,使它們均處於高電平。主控制器啟動總線操作的條件是當SCL線保持高電平時SDA線有高電平轉為低電平,此時主控制器在SCL產生時鍾信號,SDA線開始傳輸數據。若SCL線為高電平時SDA由低轉為高,則總線工作停止,恢復空閑狀態。
2)數據傳送格式
數據傳送時高位在前,低位在后,每個字節都是八位,每次能傳送的字節數目不定。傳輸操作啟動后,主控器件傳送首字節是地址,其中前七位指出與哪個器件通信,第八位指出數據傳輸的方向(發送還是接收)
3)應答(ACK)信號傳送
主控器件在接收從器件字節后,如果不准備終止傳輸,會發送一個ack信號給從器件;從器件接收到主控器件的字節后,總是發送一個ack信號給主控器件;如果他沒有准備好再次接受,它可以保持scl為低電平。
4)讀/寫操作
5)總線仲裁
只要檢測到電平與自己發出的電平相同,就會繼續占用總線。總線控制遵循“低電平優先”的原則,即誰發送低電平誰就掌握對總線的控制權。
(5)以太網接口(Ethernet)
由以太網媒體接入控制器(MAC)和物理收發器(PHY)組成,MAC與PHY通信采用MII接口或RMII接口。數據傳輸速率高達10Mbps——10Gbps,延時時間短,采用分組交換技術。
(6)UART通用異步收發器
全雙工串行異步通信。由發送器,接收器,控制單元,波特率發生器構成。
起始位(1) 數據位(5-8) 奇偶校驗位(1) 停止位(1-2)
UART按位傳送,字符總是以起始位開始(標識符為邏輯0)停止位結束(標識符為邏輯1),數據可以是5-8位,並且總是以低位在前高位在后的次序傳送,接受采用中斷方式,發送采用查詢方式。
【基於UART的RS—232/RS—485總線接口 】
UART外接邏輯電平轉換芯片,可構成RS—232/RS—485接口來進行近距離或遠距離通信
RS—232采用負邏輯傳輸方式,即-3~-15v定義為邏輯1,,3~15v定義為邏輯0。缺點:無法消除共模干擾,傳輸距離小於15米
RS—485 采用差分信號傳輸方式,有很強的抗共模干擾的能力,當A比B的電位高200mV時邏輯電平為1;當B比A的電位高200mV時邏輯電平為0,傳輸距離長達1200米。
(7)CAN控制器局域網絡
采用差分信號傳輸方式,僅有CANH和CANL兩根信號線,可以進行遠距離多機通信。CAN是目前唯一有國際標准的現場總線,主要用於要求抗干擾能力強的工業控制領域,可組成多主從系統。
(8) USB
支持熱拔插和即插即用,可以支持異步傳輸和同步傳輸兩種傳輸方式,可以擴展127個菊花鏈,支持USB總線供電提供最大5V和最多500mV的電源
(9) 以太網通信接口常用無線通信接口(GPS模塊、GPRS模塊、WiFi模塊、藍牙模塊、射頻無線收發模塊)
以太局域網:數據傳輸速率高10Mb/s~10Gb/s,延遲時間短,以MAC地址標識設備,采用分組交換技術,幀傳送。
常用無線通信接口
(1)GPS模塊
(2)北斗模塊
(3)GPRS模塊
(4)WiFi模塊
(5)藍牙模塊
無線局域網(WLAN):WLAN是以太網與無線通信技術結合的產物,他借助無線電波進行數據傳輸,協議IEEE802.11,通常也稱WiFi,傳輸速率11Mb/s,54Mb/s,108Mb/s(802.11n)。所謂的WiFi熱點正式的名稱為“無線接入點”,它實際上是一個無線交換機或無線路由器,室內覆蓋距離一般30米左右,室外100—300米。另一種是藍牙技術,它是一種短距離、低成本、低速率的無線通信技術,其最高傳輸速率為1Mbps,傳輸距離為10米。藍牙模塊主要由三部分組成:無線傳輸收發單元、基頻處理單元以及數據傳輸接口。
(10)高清多媒體接口(HDMI)、 不對稱數字用戶線(ADSL)
12. 其他硬件組件(鍵盤、LED、LCD、觸摸屏、傳感器等)
(1)常用簡單輸入設備(鍵盤、觸摸屏、傳感器)
在嵌入式應用系統中,目前使用的觸摸屏主要有兩種:一種是電阻式觸摸屏(俗稱軟屏),結構簡單,價格較低;另一種是電容式觸摸屏(俗稱硬屏),其結構相對復雜,價格較高。
觸摸屏類型 |
工作原理 |
觸摸方式 |
安裝方式 |
透明度 |
易用性 |
電阻式 |
電壓測量 |
筆、手指點壓 |
顯示屏前 |
一般 |
好 |
電容式 |
電容耦合 |
金屬筆尖、手指接觸 |
顯示屏前 |
比電阻式好 |
一般 |
電感式 |
電磁諧振 |
筆尖接近感應 |
顯示屏后 |
好 |
好 |
(2) 常用簡單輸出設備(LED、數碼管、LCD、)
嵌入式系統中多數采用液晶顯示器(LCD,Liquid Crystal Display),LCD是一種低成本、低功率的器件,既可顯示文字,又可顯示圖像。LCD顯示器根據其工作原理可分為反射式、吸收式(又稱透視式)LCD顯示器。
13.典型嵌入式處理芯片S3C2410
1).S3C2410的硬件組成
內部具有分離的16KB大小的指令Cache和16KB大小的數據Cache。同時由於采用哈佛體系結構,程序存儲器與數據存儲器分開,分別有各自的存儲管理器件MMU。采用五級指令流水線。使用ARM公司特有的AMBA總線,對於高速組件采用AHB總線,而對於低速外設接口則采用APB總線。AHB通過橋接器連接APB。
芯片內部集成了許多硬件組件,包括了連到系統總線AHB上的系統總線控制器,電源管理單位,PLL(鎖相環)時鍾發生器,內部SRAM,外部存儲器控制器……等等。
2).S3C2410的存儲控制組件
包括存儲控制器,總線控制器,外部主控器,NAND Flash控制器等。
存儲器控制器提供訪問外部存儲器所需存儲器控制器,支持大/小端模式,地址空間共1GB(8個BANK,每個BANK大小為128MB)。
3).S3C2410的時鍾電源組件功能及組成
14.嵌入式軟件組成結構
嵌入式軟件是針對特定應用以及相應的硬件平台,為完成用戶預期任務而設計的計算機軟件。
嵌入式軟件具有四層結構。最低層是BSP/HAL, 稱之為板級支持包或者是硬件抽象層, 其功能是提供基本的硬件支持;再上一層是OS,操作系統,負責對於任務資源的分配與管理,接着是中間件,例如我們最為熟知的JVM,其是跨平台中間件的使用,到了最上層就是應用軟件。
實時操作系統(RTOS)體系結構
在實時操作系統中,操作系統負責的基本任務就是對於內存、文件的管理,以及進程的調度,擴展功能就是對於網絡模塊等的調度以及使用。
1. 實時系統
實時系統是必須在有限和確定的時間內對外部事件作出響應的信息系統。IEEE對實時系統的定義:正確性不僅取決於計算的結果,而且取決於產生結果的時間的計算系統。
關鍵特性:時間約束性,可預測性,可靠性,交互性。
實時性指標:中斷延遲時間,任務切換時間,任務搶占時間。
2.嵌入式操作系統的特點和分類
(1)嵌入式操作系統特點
①代碼固化存儲
②可裁剪性
③實時性
④強穩定性
⑤硬件適應性
(2)嵌入式操作系統分類
實時性:硬實時性系統,軟實時性系統。
開發方式:專門用嵌入式環境開發的嵌入式操作系統,從通用計算機操作系統移植而來的嵌入式操作系統。
商業模式:免費的嵌入式操作系統,商業嵌入式操作系統。
3.嵌入式系統的內核結構
單內核結構:把內核的各個功能模塊整合在一起,模塊間的交互通過直調用其他模塊中的函數來實現。
微內核結構:操作系統僅將必須的基本功能放入內核,它們運行在核心態,其他功能都在內核之外,由在用戶態運行的服務來完成。
4.硬件抽象層(HAL)和板級支持包(BSP)
HAL是在操作系統層與硬件之間設置的獨立的接口軟件層,是所有直接依賴於硬件的軟件,包括引導程序,硬件配置程序和硬件訪問代碼等。
BSP的特點是硬件和操作系統都關系緊密,既有硬件相關性,又有操作系統相關性。
5.引導加載程序(bootloader)
bootloader負責系統的上電自檢,硬件初始化,建立存儲空間映射,配置系統參數,建立上層軟件的運行環境,並加載和啟動操作系統。
6.設備驅動程序(device driver)
設備驅動程序是指直接與硬件相互作用並控制硬件的軟件。
7. 1).μC/OS-Ⅱ操作系統內核的基本特征
(1)公開源碼的高質量實時內核
(2)可移植
(3)可裁剪,可固化
(4)時間確定性
(5)多任務
(6)搶占式內核
(7)多種系統服務
2).μC/OS-Ⅱ的任務結構
(1)任務的程序代碼
(2)任務堆棧
(3)任務控制塊
3).μC/OS-Ⅱ的任務狀態
(1)休眠態
(2)就緒態
(3)運行態
(4)等待態
(5)被中斷態
4).μC/OS-Ⅱ的任務調用
μC/OS-Ⅱ可以管理64個任務每個任務都被賦予一個不同於其他任務的優先級,共有64個優先級別。
μC/OS-Ⅱ預定義了兩個系統任務為應用程序服務:
(1)空閑任務(idle task)
(2)統計任務
μC/OS-Ⅱ采用基於優先級的調度算法,任務調度時,內核總是選擇當前所有就緒任務中最高優先級的任務轉入運行態。
在當前程序進入臨界區時,並不希望系統進行任務調度,也不希望處理器轉入中斷服務程序。在μC/OS-Ⅱ中有兩種解決方法:
(1)利用宏OS_ENTER_CRITICAL和OS_EXIT_CRITICAL實現關中斷和開中斷。
(2)利用函數OSSchedLock()和OSSchedUnlock()給任務調度開鎖和上鎖。
5).μC/OS-Ⅱ的中斷處理
在μC/OS-Ⅱ系統中,中斷服務程序的執行步驟大致如下:
(1)保存全部CPU寄存器
(2)調用OSIntEnter()或OSIntNesting直接加1
(3)執行用戶中斷服務代碼(調用中斷處理函數)
(4)調用OSIntExit()
(5)恢復所有CPU寄存器
(6)執行中斷返回指令
6).μC/OS-Ⅱ的任務管理服務
(1)任務創建:OSTaskCreate()或OSTaskCreateExt()
(2)任務刪除:OSTaskDel()
(3)任務掛起和任務恢復:OSTaskSuspend()和OSTaskResume()
7).μC/OS-Ⅱ的時鍾節拍與時間管理服務
OSTimeTick()檢查啊等待超時或等待時間的任務是否超時
OSTimeSet()改變tick計數器的當時值
OSTimeDly()和OSTimeDlyHMSM()延時一段時間