本文為我在復(fù)習(xí)嵌入式系統(tǒng)這門課程時(shí)對(duì)該課程的知識(shí)點(diǎn)的歸納總結(jié)沉填,不定期更新寥袭,希望可以有所幫助。
考試相關(guān)
考試內(nèi)容
單片機(jī)(80C51)
- Ch2 單片機(jī)芯片的硬件結(jié)構(gòu)
- Ch5 單片機(jī)存儲(chǔ)器的擴(kuò)展
ARM9(S3C24XX)
- Samsung S3C2410/S3C2416/S3C2440
- Ch1~Ch6、Ch8、Ch9煌妈、Ch10(了解)
考試題型(開卷)
論述題(20分)
簡(jiǎn)答,100~200字宣羊,題目怎么問怎么回答璧诵,簡(jiǎn)單分析
設(shè)計(jì)題(40分)(80C51/S3C2410)
按題目給出的點(diǎn)回答,沒讓寫代碼不要寫代碼仇冯,畫框圖
設(shè)計(jì)題(40分)(S3C2410)
同上
單片機(jī)(80C51)
Ch2 單片機(jī)芯片的硬件結(jié)構(gòu)
單片機(jī)概念
集成中央處理器CPU之宿、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM苛坚、多種I/O口和中斷系統(tǒng)比被、定時(shí)器/計(jì)數(shù)器等功能 —— 一臺(tái)計(jì)算機(jī)
單片機(jī)結(jié)構(gòu)
電源引腳
VCC:芯片主電源,外接+5V炕婶。
GND:電源地線。
時(shí)鐘引腳
XTAL1與XTAL2為內(nèi)部振蕩器的兩條引出線莱预。
控制引腳
- ALE/PROG:地址鎖存控制信號(hào)/編程脈沖輸入端
- PSEN:片外程序存儲(chǔ)器讀選通有效信號(hào)
- EA/VPP:訪問程序存儲(chǔ)器控制信號(hào)/編程電源輸入端
- RST:復(fù)位柠掂,掉電保護(hù)信號(hào)輸入端
輸入輸出引腳
- P0.0~P0.7:通道0是一個(gè)8位漏極開路的雙向輸入輸出通道。在外接存儲(chǔ)器或者擴(kuò)展I/O接口時(shí)依沮,P0端口作為復(fù)用的低8位地址總線和雙向數(shù)據(jù)總線涯贞。在不擴(kuò)展存儲(chǔ)器或者I/O接口時(shí),作為準(zhǔn)雙向輸入輸出接口危喉。
- P1.0~P1.7:只有一種功能宋渔,即準(zhǔn)雙向I/O接口,帶內(nèi)部電阻上拉辜限。
- P2.0~P2.7:可作為準(zhǔn)雙向I/O接口使用皇拣,帶內(nèi)部電阻上拉;但在接有片外存儲(chǔ)器或擴(kuò)展I/O接口范圍超過256B時(shí)薄嫡,則該口一般只能作為高8位地址總線使用氧急。
- P3.0~P3.7:該口除了作為準(zhǔn)雙向口,帶內(nèi)部電阻上拉外毫深,還具有第二功能吩坝。
P3端口的第二功能如下表所示:
端子 | 名稱 | 功能 |
---|---|---|
P3.0 | RXD | 串行輸入 |
P3.1 | TXD | 串行輸出 |
P3.2 | INT0 | 外部中斷0輸入 |
P3.3 | INT1 | 外部中斷1輸入 |
P3.4 | T0 | 定時(shí)器0外部輸入 |
P3.5 | T1 | 定時(shí)器1外部輸入 |
P3.6 | WR | 片外數(shù)據(jù)存儲(chǔ)器寫選通輸出 |
P3.7 | RD | 片外數(shù)據(jù)存儲(chǔ)器讀選通輸出 |
單片機(jī)存儲(chǔ)器結(jié)構(gòu)
ROM
RAM
特殊功能寄存器
- 程序計(jì)數(shù)器(PC):不可尋址,不可讀寫
- 累加器(ACC):操作數(shù)/運(yùn)算中間結(jié)果
- B寄存器:乘除運(yùn)算/乘積高8位/除法余數(shù)
- 程序狀態(tài)字(PSW)
功能 | 標(biāo)志符號(hào) | 位地址 |
---|---|---|
進(jìn)位標(biāo)志(又是C寄存器) | CY | PSW.7 |
輔助進(jìn)位標(biāo)志 | AC | PSW.6 |
用戶標(biāo)志 | FO | PSW.5 |
工作寄存器組選擇 | RS1 | PSW.4 |
工作寄存器組選擇 | RS0 | PSW.3 |
溢出標(biāo)志 | OV | PSW.2 |
保留 | PSW.1 | |
奇偶標(biāo)志 | P | PSW.0 |
引腳內(nèi)部結(jié)構(gòu)
P0
P1
P2
P3
Ch5 單片機(jī)存儲(chǔ)器的擴(kuò)展
系統(tǒng)總線
地址總線(AB)(16位)
數(shù)據(jù)總線(DB)(8位)
控制總線(CB)
存儲(chǔ)器擴(kuò)展
- 當(dāng)/EA=1時(shí)哑蔫,80C51單片機(jī)所有片內(nèi)程序存儲(chǔ)器有效
- P0:分時(shí)輸出程序存儲(chǔ)器的低8位地址和8位數(shù)據(jù)
- ALE:輸出钉寝,在ALE下降沿時(shí)弧呐,P0上出現(xiàn)穩(wěn)定的程序存儲(chǔ)器的低8位地址,用ALE信號(hào)鎖存這低8位地址
- P2:在整個(gè)取指周期中嵌纲,輸出穩(wěn)定的ROM的高8位地址
- /PSEN:輸出俘枫,低電平有效。在ALE的下降沿之后疹瘦,/PSEN由高變?yōu)榈捅懒ǎ藭r(shí)片外ROM的內(nèi)容(指令字)送到P0口,而后在/PSEN的上升沿將指令字送入指令寄存器言沐。因而邓嘹,/PSEN信號(hào)作為片外程序存儲(chǔ)器的“讀”選通信號(hào)。
-
當(dāng)/EA=0時(shí)险胰,80C51單片機(jī)所有片內(nèi)ROM無效汹押,只能訪問片外ROM。
ARM9(S3C24XX)
Ch1 嵌入式系統(tǒng)概論
嵌入式系統(tǒng)定義(無嚴(yán)格定義)
一般認(rèn)為起便,嵌入式系統(tǒng)是以應(yīng)用為中心棚贾,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁減榆综,可滿足系統(tǒng)功能與要求的專用計(jì)算機(jī)系統(tǒng)妙痹。
嵌入式系統(tǒng)組成
嵌入式微處理器(核心)、外圍硬件設(shè)備鼻疮、嵌入式操作系統(tǒng)怯伊、用戶應(yīng)用軟件
嵌入式微處理器分類
按數(shù)據(jù)總線寬度
8位、16位判沟、32位耿芹、64位
按體系結(jié)構(gòu)
馮·諾依曼體系結(jié)構(gòu):程序和數(shù)據(jù)共用存儲(chǔ)空間
哈佛體系結(jié)構(gòu):程序和數(shù)據(jù)分用存儲(chǔ)空間
按指令系統(tǒng)
精簡(jiǎn)指令集系統(tǒng) RISC (Reduced Instruction Set Computer):MIPS、ARM (Advanced RISC Machines Limited)
復(fù)雜指令集系統(tǒng) CISC (Complex Instruction Set Computer):Intel 80x86挪哄、8086吧秕、Pentium
按應(yīng)用
嵌入式微處理器 EMPU
嵌入式微控制器 MCU
嵌入式數(shù)字信號(hào)處理器 DSP
嵌入式片上系統(tǒng) SoC
Ch2 ARM9體系結(jié)構(gòu)
五級(jí)流水線
取指 —— 譯碼 —— 執(zhí)行 —— 訪存 —— 回寫
ARM指令集分類(可相互切換)
ARM指令集(默認(rèn)):32位(功能全)
Thumb指令集:16位(代碼密度高)
ARM9工作模式(7種)
- 用戶模式(usr):ARM處理器正常執(zhí)行程序時(shí)的處理
- 快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理
- 外部中斷模式(irq):用于通用的中斷處理
- 管理模式(svc):操作系統(tǒng)使用的保護(hù)模式
- 指令/數(shù)據(jù)訪問終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)
- 系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)時(shí)的模式
- 未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式迹炼,可用于支持硬件協(xié)處理器的軟件仿真
ARM9存儲(chǔ)器組織結(jié)構(gòu)
32位砸彬,4GB,4字節(jié)/字
小端存儲(chǔ):高對(duì)高斯入,低對(duì)低(默認(rèn)為小端存儲(chǔ)拿霉,可通過硬件輸入引腳BIGEND配置,默認(rèn)低電平)
程序計(jì)數(shù)器PC總是指向取指的指令(字對(duì)齊)
PC寄存器中的值 = 當(dāng)前執(zhí)行的指令地址 + 8(ARM指令)
PC寄存器中的值 = 當(dāng)前執(zhí)行的指令地址 + 4(Thumb指令)
目的地址 = 當(dāng)前執(zhí)行的指令地址 + 8 + 偏移量(分支指令)(不可溢出)
I/O端口的訪問方式
存儲(chǔ)器映射方式:端口地址和存儲(chǔ)器統(tǒng)一編址(ARM9)
I/O映射方式(獨(dú)立編址):I/O端口地址與存儲(chǔ)器分開獨(dú)立編址
內(nèi)部寄存器(37個(gè)32位)P30~35
通用寄存器(31個(gè))R0~R15(在不同工作模式下會(huì)映射到不同寄存器咱扣,如上圖所示)
未分組寄存器 R0~R7
分組寄存器 R8~R14
R13 常用作 堆棧指針(SP)
R14 常用作 子程序鏈接寄存器(LR)
程序寄存器 R15(PC)(ARM:末兩位為0绽淘;Thumb:末一位為0)
狀態(tài)寄存器(6個(gè))CPSR(R16)/ SPSR(5個(gè),如上圖闹伪,用于備份CPSR)
條件碼標(biāo)志
控制位
- 中斷禁止位(I=1:禁止IRQ中斷沪铭;I=0:允許IRQ中斷)(F=1:禁止FIQ中斷壮池;F=0:允許FIQ中斷)
- T標(biāo)志位(T=1:Thumb狀態(tài);T=0:ARM狀態(tài)(默認(rèn)))
- 工作模式位(M [4:0])
ARM9異常
S3C2410嵌入式微處理器
Ch3 ARM指令系統(tǒng)
ARM指令分類
- 數(shù)據(jù)處理指令 數(shù)據(jù)傳輸指令杀怠、算術(shù)指令椰憋、邏輯指令、比較指令赔退、乘法指令橙依、前導(dǎo)零計(jì)數(shù)
- 程序狀態(tài)訪問指令 MRS、MSR
- 分支指令 B硕旗、BL窗骑、BX
- 訪存指令 單數(shù)據(jù)訪存指令、多數(shù)據(jù)訪存指令漆枚、數(shù)據(jù)交換指令
- 異常產(chǎn)生指令 SWI创译、BKPT
- 協(xié)處理器指令 CDP、LDC墙基、STC软族、MCR、MRC
數(shù)據(jù)處理指令
例:MOVEQ R0,R1 ; if z==1 then R0 = R1
ARM指令尋址方式(P58)
寄存器尋址
例:ADD R0,R1,R2 ; R0 = R1 + R2
立即尋址
例:ADD R3,R3,#10 ; R3 = R3 + 10
<immediate> = Immed_8 循環(huán)右移 2 × rot 位
寄存器移位尋址
例:ADD R3,R2,R1,LSL #3 ; R3 = R2 + 8 × R1
例:MOV R0,R1,ROR R2 ; R0 = R1 循環(huán)右移 R2 位
寄存器間接尋址
例:LDR R0,[R1] ; R0 = [R1]
變址尋址
- 前變址方式 例:LDR R0,[R1,#4] ; R0 = [R1 + 4]
- 自動(dòng)變址方式 例:LDR R0,[R1,#4]! ; R0 = [R1 + 4] , R1 = R1 + 4
- 后變址方式 例:STR R0,[R1],#12 ; [R1] = R0 , R1 = R1 + 12
多寄存器尋址
例:LDMIA R1,{R0,R2,R5} ; R0 = [R1] , R2 = [R1 + 4] , R5 = [R1 + 8]
堆棧尋址(P62)
塊復(fù)制尋址(P63)
相對(duì)尋址
例:BL ROUTE_A ; 調(diào)用 ROUTE_A 子程序
常用ARM指令(P64~P79)這個(gè)太多了残制,先跳過吧
ARM匯編偽指令(4條常用)
特殊指令助記符立砸,不屬于ARM指令集,為了編程方便而定義初茶,在匯編時(shí)被合適的機(jī)器指令替代
- ADR(小范圍的地址讀取偽指令)
- ADRL(中等范圍的地址讀取偽指令)
- LDR(大范圍的地址讀取偽指令)
- NOP(空操作偽指令)
ARM匯編偽操作
為匯編程序所用颗祝,在源程序進(jìn)行匯編時(shí)由匯編程序處理,只在匯編過程起作用纺蛆,不參與程序運(yùn)行
符號(hào)定義偽操作
- GBLA吐葵,GBLL规揪,GBLS 聲明全局變量
- LCLA桥氏,LCLL,LCLS 聲明局部變量
- SETA猛铅,SETL字支,SETS 給變量賦值
- RLIST 給通用寄存器列表定義名稱
數(shù)據(jù)定義偽操作
- LTORG 用于聲明一個(gè)數(shù)據(jù)緩沖池(文字池)的開始
- SPACE 用于分配一塊字節(jié)內(nèi)存單元,并用0初始化
- DCB 用于定義并且初始化一個(gè)或者多個(gè)字節(jié)的內(nèi)存區(qū)域
- DCD奸忽,DCDU 用于分配一段字對(duì)齊的內(nèi)存單元堕伪,并初始化
匯編控制偽操作
- IF,ELSE栗菜,ENDIF 有條件選擇匯編
- WHILE欠雌,WEND 有條件循環(huán)(重復(fù))匯編
- MACRO,MEND疙筹,MEXIT 宏定義匯編
其他偽操作(P83~P86)
ARM程序常用文件格式
源程序文件 | 文件擴(kuò)展名 | 說明 |
---|---|---|
匯編程序文件 | *.s | 用ARM匯編語(yǔ)言編寫的ARM程序或Thumb程序 |
C程序文件 | *.c | 用C語(yǔ)言編寫的程序代碼 |
頭文件 | *.h | 為了簡(jiǎn)化源程序富俄,通常將程序中經(jīng)常使用的常量名禁炒、宏定義、數(shù)據(jù)結(jié)構(gòu)定義等單獨(dú)存放在一個(gè)文件中霍比,該文件一般稱為頭文件 |
ARM預(yù)定義變量(大小寫敏感)
- R0 ~ R15 和 r0 ~ r15
- a1 ~ a4:參數(shù)幕袱、結(jié)果或臨時(shí)寄存器,與 r0 ~ r3 同義
- v1 ~ v8:變量寄存器悠瞬,與 r4 ~ r11 同義
- sb 和 SB:靜態(tài)基址寄存器们豌,與 r9 同義
- sl 和 SL:堆棧限制寄存器,與 r10 同義
- fp 和 FP:幀指針浅妆,與 r11 同義
- ip 和 IP:過程調(diào)用中間臨時(shí)寄存器望迎,與 r12 同義
- sp 和 SP:堆棧指針,與 r13 同義
- lr 和 LR:鏈接寄存器狂打,與 r14 同義
- pc 和 PC:程序計(jì)數(shù)器擂煞,與 r15 同義
- cpsr 和 CPSR:程序狀態(tài)寄存器
- spsr 和 SPSR:程序狀態(tài)寄存器
- f0 ~ f7 和 F0 ~ F7:FPA 寄存器 (Floating Point Accelerator)
- p0 ~ p15:協(xié)處理器 0 ~ 15
- c0 ~ c15:協(xié)處理器寄存器 0 ~ 15
C語(yǔ)言與匯編混合編程
C程序嵌入?yún)R編程序
_asm("指令[;指令]")
或 asm("指令[;指令]")
Ch4 時(shí)鐘及電源管理
主時(shí)鐘來源于外部晶振(XTIpll / XTOpll)或外部時(shí)鐘(EXT-CLK)
啟動(dòng)時(shí)的時(shí)鐘源選擇方式
OM[3:2] | MPLL狀態(tài) | UPLL狀態(tài) | 主時(shí)鐘源 | USB時(shí)鐘源 |
---|---|---|---|---|
00 | On | On | 晶振 | 晶振 |
01 | On | On | 晶振 | 外部時(shí)鐘 |
10 | On | On | 外部時(shí)鐘 | 晶振 |
11 | On | On | 外部時(shí)鐘 | 外部時(shí)鐘 |
S3C2410電源管理模式
正常模式
所有外圍設(shè)備和基本模塊(包括電源管理模塊、CPU 核趴乡、總線控制器对省、存儲(chǔ)控制器、中斷控制器晾捏、DMA 和外部控制單元)都在運(yùn)行蒿涎。但每個(gè)外圍設(shè)備的時(shí)鐘,不包含基本模塊惦辛,都可以通過軟件控制運(yùn)行或停止劳秋,以便降低功耗。
空閑模式
停止供給CPU 核時(shí)鐘胖齐,但總線控制器玻淑、存儲(chǔ)控制器、中斷控制器和電源管理模塊仍然供給時(shí)鐘呀伙。
低速模式
通過低速時(shí)鐘頻率來降低功耗补履。
休眠模式
模塊斷開內(nèi)部電源連接,除了喚醒邏輯剿另。休眠模式有效的前提是系統(tǒng)需要兩套獨(dú)立的電源箫锤,其中一套給喚醒邏輯供電,另一套則給其他設(shè)備包括CPU供電雨女,并且電源上電可控制谚攒。在休眠模式下,給CPU和內(nèi)部邏輯供電的第二套電源被關(guān)閉氛堕。
相關(guān)特殊功能寄存器
- PIL鎖定時(shí)間計(jì)數(shù)器(LOCKTIME)
- PLL控制寄存器(MPLLCON 和 UPLLCON)
- 時(shí)鐘控制寄存器(CLKCON)
- 低速時(shí)鐘控制寄存器(CLKSLOW)
- 時(shí)鐘分頻控制寄存器(CLKDIVN)
常用單元電路設(shè)計(jì)
電源電路設(shè)計(jì)
晶振電路設(shè)計(jì)
復(fù)位電路設(shè)計(jì)
Ch5 存儲(chǔ)器與I/O接口原理
SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)
一般容量為64KB馏臭,16根地址引腳(A0~A15),讀/寫速度快讼稚,功耗大括儒,不需要周期性刷新浪耘,數(shù)據(jù)線有8位/16位
DRAM(動(dòng)態(tài)隨機(jī)存儲(chǔ)器)
功耗小,集成度高塑崖,容量大七冲,需要周期性刷新
存儲(chǔ)系統(tǒng)機(jī)制
存儲(chǔ)器接口方式
高速緩存機(jī)制(Cache)
存儲(chǔ)管理單元(MMU)
S3C2410存儲(chǔ)空間
I/O端口引腳(共117個(gè)引腳)
- PortA(GPA)23個(gè)輸出端口;
- PortB(GPB)11個(gè)I/O端口规婆;
- PortC(GPC)16個(gè)I/O端口澜躺;
- PortD(GPD)16個(gè)I/O端口;
- PortE(GPE)16個(gè)I/O端口抒蚜;
- PortF(GPF)8個(gè)I/O端口掘鄙;
- PortG(GPG)16個(gè)I/O端口;
- PortH(GPH)11個(gè)I/O端口嗡髓;
I/O端口控制寄存器
- 端口配置器(GPACON ~ GPHCON)
- 端口數(shù)據(jù)寄存器(GPADAT ~ GPHDAT)
- 端口上拉寄存器(GPBUP ~ GPHUP)
Ch6 中斷與定時(shí)技術(shù)
中斷向量 = 中斷程序入口地址(56個(gè)中斷源/IRQ/FIQ)
- 固定中斷向量:地址不可修改操漠,響應(yīng)速度快
- 可變中斷向量:地址可以修改,響應(yīng)速度慢
中斷屏蔽
- 可屏蔽中斷請(qǐng)求(INTR):受本身屏蔽位和IF=1(開中斷)控制饿这,打印機(jī)中斷
- 不可屏蔽中斷請(qǐng)求(NMI):無條件執(zhí)行浊伙,電源掉電
中斷控制寄存器
- 中斷請(qǐng)求寄存器(SRCPND)
- 中斷模式寄存器(INTMOD)
- 中斷屏蔽寄存器(INTMSK)
- 優(yōu)先級(jí)寄存器(PRIORITY)
- 中斷允許寄存器(INTPND)
定時(shí)器計(jì)算
定時(shí)器控制寄存器
- 定時(shí)器配置寄存器0(TCFG0)
- 定時(shí)器配置寄存器1(TCFG1)
- 定時(shí)器控制寄存器(TCON)
- Timer0計(jì)數(shù)緩沖寄存器和比較緩沖寄存器(TCNTB0/TCMPB0)
- Timer0計(jì)數(shù)觀察寄存器(TCNTO0)