總線、IO、中斷_第1頁(yè)
總線、IO、中斷_第2頁(yè)
總線、IO、中斷_第3頁(yè)
總線、IO、中斷_第4頁(yè)
總線、IO、中斷_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、CPUsz總線的概念與分類zPC的總線與接口z嵌入式系統(tǒng)總線zIO 接口電路z中斷總線z計(jì)算機(jī)系統(tǒng)中模塊到模塊間傳送信息的一束信號(hào)線z總線實(shí)現(xiàn)了CPU、內(nèi)存和I/O設(shè)備之間的通信.z定義了通信協(xié)議.總線的分類y按功能分:x地址總線x數(shù)據(jù)總線x控制總線y按層次結(jié)構(gòu)分:x內(nèi)部總線x系統(tǒng)總線系統(tǒng)總線x外部總線外部總線y按通信方式分:x串行總線x并行總線CPUz總線的概念與分類zPC的總線與接口z嵌入式系統(tǒng)總線zIO 接口電路z中斷CPU內(nèi)存I/O接口I/O設(shè)備數(shù)據(jù)總線DB地址總線AB控制總線CB主機(jī)數(shù)據(jù)總線、控制總線是雙向的,地址總線是單向的地址總線用來(lái)尋址內(nèi)存單元和外設(shè)端口計(jì)算機(jī)組成數(shù)據(jù)總線數(shù)據(jù)總

2、線DB(Data Bus)雙向傳送數(shù)據(jù)(指令、數(shù)值)雙向傳送數(shù)據(jù)(指令、數(shù)值)地址總線地址總線AB(Address Bus)發(fā)送數(shù)據(jù)的來(lái)源地址和目的地址發(fā)送數(shù)據(jù)的來(lái)源地址和目的地址控制總線控制總線CB(Control Bus)發(fā)送各種控制指令信息發(fā)送各種控制指令信息計(jì)算機(jī)系統(tǒng)中模塊到模塊間傳送信息的一束信號(hào)線總線PC I/O PORTPC I/O PORTUSB音頻音頻網(wǎng)口PS2IDE串口并口IEEE1394PCIUSB+藍(lán)牙+WIFI 搞定一切CPUz總線的概念與分類zPC的總線與接口z嵌入式系統(tǒng)總線zIO 接口電路z中斷10MPU總線單總線多總線結(jié)構(gòu)z多總線結(jié)構(gòu):y低速設(shè)備連到低速總線上.

3、y高速設(shè)備連到高速總線.z橋?qū)崿F(xiàn)高速總線和低速總線的互聯(lián).CPUslow devicememoryhigh-speeddevicebridgeslow deviceARM總線結(jié)構(gòu)z兩類總線:yAHB 高速總線: AHB 支持 流水線,突發(fā)傳輸,分離事務(wù)和多總線控制器.yAPB 低速總線:所有低速設(shè)備連接到AHB上.ARM總線結(jié)構(gòu)DMAzDirect memory access (DMA) 允許不由CPU控制讀寫(xiě)的總線操作.y總線請(qǐng)求.y總線授權(quán).zDMA 控制器.常見(jiàn)的片內(nèi)外設(shè)zTimerzAD/DAz外部中斷接口zGPIOzUARTzI2C/USB/SPI外部總線 CPUz總線的概念與分類z

4、PC的總線與接口z嵌入式系統(tǒng)總線zIO 接口電路z中斷嵌入式系統(tǒng)應(yīng)用多樣性嵌入式計(jì)算系統(tǒng),lecture1-118n打印機(jī)、路由器n汽車:發(fā)動(dòng)機(jī)、剎車等.n飛機(jī):發(fā)動(dòng)機(jī)、飛行控制、導(dǎo)航、通信.n數(shù)字電視.n家用電氣.n手環(huán)、手表、插座、窗簾n智能車、機(jī)器人、物聯(lián)網(wǎng)設(shè)備n智能手機(jī)、平板(趨向于通用平臺(tái))多種多樣的外設(shè)z工作原理不同比如鍵盤:機(jī)械、電子、機(jī)電、電磁z傳送信息類型多樣比如傳感器:數(shù)字量、模擬量、開(kāi)關(guān)量z傳送速度差別極大z傳送方式不盡相同串行、并行z編碼方式不同二進(jìn)制、BCD碼、ASCII碼I/O接口基本概念為什么需要I/O接口(電路)?z外部設(shè)備多種多樣z工作原理、驅(qū)動(dòng)方式、信息格式

5、、以及工作速度、時(shí)序方面與CPU不匹配z必須經(jīng)過(guò)中間電路再與系統(tǒng)相連z這部分電路被稱為I/O接口電路多種外設(shè)多種外設(shè)I/O接口基本概念(續(xù)1)什么是I/O接口(電路)?zI/O接口是位于系統(tǒng)與外設(shè)間、用來(lái)協(xié)助完成數(shù)據(jù)傳送和控制任務(wù)的邏輯電路系統(tǒng)總線I/O接口基本概念(續(xù)2)什么是接口技術(shù)?z處理CPU與外設(shè)間聯(lián)系的技術(shù)z注意其軟硬結(jié)合的特點(diǎn)z根據(jù)應(yīng)用系統(tǒng)的需要,使用和構(gòu)造相應(yīng)的接口電路,編制配套的接口程序,支持和連接有關(guān)的設(shè)備接口技術(shù)是編程人員的一項(xiàng)基本技能。接口技術(shù)是編程人員的一項(xiàng)基本技能。嵌入式系統(tǒng)中的常用I/O接口zGPIO通用I/O接口zUART串口,數(shù)據(jù)通信zI2CIC器件之間的通信

6、zSPIIC器件之間的通信zCAN高性能和可靠性的串行通信協(xié)議zUSB通用串行總線zA/D and D/A數(shù)模轉(zhuǎn)換,模數(shù)轉(zhuǎn)換應(yīng)用示例應(yīng)用示例GPIOSPI溫濕度傳感I2CI2CAT86RF231-SPIRF 模塊UARTGPIOGPIO的作用的作用z輸出數(shù)據(jù)/控制yLED的控制z輸入數(shù)據(jù)y讀取當(dāng)前LED的狀態(tài)y按鍵STM32的GPIO功能實(shí)驗(yàn)課的LEDz如何連接的?zI/O端口選擇的是輸入還是輸出?z輸入輸出的模式?GPIO基本輸入結(jié)構(gòu)GPIO 輸入電路工作原理工作原理弱上拉輸入弱上拉弱上拉輸入下拉輸入如何實(shí)現(xiàn)?下拉輸入總結(jié)推挽輸出電路推挽輸出電路推挽輸出電路推挽輸出推推挽輸出挽總結(jié)開(kāi)漏輸出開(kāi)

7、漏輸出雙向開(kāi)漏雙向開(kāi)漏雙向開(kāi)漏開(kāi)漏輸出開(kāi)漏輸出總結(jié)GPIO與復(fù)用I/OSTM32 I/OCPUz總線的概念與分類zPC的總線與接口z嵌入式系統(tǒng)總線zIO 接口電路z中斷61I/0編程z使用I/O設(shè)備:y通過(guò)CPU讀取和寫(xiě)入I/O設(shè)備的寄存器z使用I/O設(shè)備要解決的問(wèn)題:yI/O寄存器的地址問(wèn)題yI/O寄存器的讀寫(xiě)問(wèn)題I/0編程z有兩種方式可以是I/O端口程序控制:yI/O指令指令:I/O提供單獨(dú)的地址空間,用特殊的 I/O 指令進(jìn)行操作;xIntel x86y內(nèi)存映射內(nèi)存映射I/O: I/O地址映射到內(nèi)存地址,通過(guò)內(nèi)存 load/store指令操作.x其他CPUs:ARM,MIPSARM me

8、mory-mapped I/Oz定義 I/O設(shè)備在內(nèi)存單元中的名稱: DEV1 EQU 0 x1000z讀寫(xiě)代碼:LDR r1,#DEV1 ; /set up device adrsLDR r0,r1 ; /read DEV1LDR r0,#8 ; /set up value to writeSTR r0,r1 ; /write value to deviceC語(yǔ)言#define DEV1 0 x1000/讀操作int peek(char *location) return *location; dev_status = peek(DEV1);/寫(xiě)操作void poke(char *locat

9、ion, char newval) (*location) = newval; poke(DEV1, 8);I/O操作忙等 I/O#define OUT_CHAR Ox1000#define OUT_STATUS Ox1001char *current_char = “hello world!”;while (*current_char != 0) poke(OUT_CHAR,*current_char); /write a charpoke(OUT_STATUS,1);/read statuswhile (peek(OUT_STATUS) != 0); /status !=0: busycu

10、rrent_char+;/ next輸入復(fù)制到輸出while (TRUE) /* read */while (peek(IN_STATUS) = 0); /status, =0: no inputchar achar = (char)peek(IN_DATA);/* write */poke(OUT_DATA,achar);poke(OUT_STATUS,1);while (peek(OUT_STATUS) != 0);忙等 I/O:前臺(tái)程序: 輸入/輸出CPUI/O設(shè)備查詢?cè)O(shè)備狀態(tài)(輪詢)設(shè)備操作 時(shí)間中斷中斷 I/Oz忙等I/O效率低yI/O事務(wù)未完成,CPU不能執(zhí)行其他操作 y不能同時(shí)執(zhí)

11、行I/Oz中斷中斷機(jī)制允許設(shè)備發(fā)送信號(hào)到CPU, 改變CPU程序執(zhí)行過(guò)程yCPU調(diào)用子程序處理設(shè)備操作(中斷處理程序)中斷接口CPU狀態(tài)寄存器數(shù)據(jù)寄存器設(shè)備管理機(jī)制PC中斷請(qǐng)求中斷應(yīng)答數(shù)據(jù)/地址IR中斷行為描述z基于子程序調(diào)用機(jī)制z中斷發(fā)生時(shí)強(qiáng)制CPU執(zhí)行一段特定代碼(中斷處理程序)y存儲(chǔ)當(dāng)前正在執(zhí)行的程序地址,執(zhí)行中斷處理程序后能夠返回到被中斷的程序y“上下文”切換到中斷服務(wù)程序中斷物理接口zCPU和設(shè)備之間通過(guò)CPU總線連接zCPU和設(shè)備的握手過(guò)程:y設(shè)備向CPU發(fā)送中斷請(qǐng)求y當(dāng)CPU能夠處理該中斷時(shí),向設(shè)備發(fā)送發(fā)送中斷應(yīng)答中斷中斷機(jī)制:前臺(tái)程序:輸入/輸出:中斷處理CPUI/O設(shè)備其他操

12、作設(shè)備操作 時(shí)間實(shí)例3.4:應(yīng)用中斷將字符從輸入設(shè)備復(fù)制到輸出設(shè)備/*輸入中斷處理程序*/void input_handler() /achar = IN_DATA; /全局變量gotchar = TRUE; /通知主程序IN_STATUS=0;/設(shè)置狀態(tài)值#define IN_DATA (*(volatile unsigned byte *) 0 xE0028018) /輸入寄存器#define IN_STATUS (*(volatile unsigned byte *) 0 xE002801C)/輸入狀態(tài)寄存器中斷驅(qū)動(dòng)的main程序main() while (TRUE) if (gotch

13、ar) OUT_DATA = achar;/寫(xiě)入字符OUT_STATUS = 1;/設(shè)置狀態(tài)值gotchar = FALSE; /重設(shè)標(biāo)志位#define OUT_DATA (*(volatile unsigned byte *) 0 xE0028020) /輸出寄存器#define OUT_STATUS (*(volatile unsigned byte *) 0 xE002802C)/輸出狀態(tài)寄存器Example: interrupt-driven main program executionmainInput_handlerpeek a charpeek a charpeek a cha

14、rpoke a charwhilepoke a charwhilepoke a charwhile:Input:Output中斷代碼調(diào)試z中斷處理程序有錯(cuò)誤,可能導(dǎo)致:y前臺(tái)程序發(fā)生奇怪的錯(cuò)誤yBug很難復(fù)現(xiàn)取決于中斷的頻率.Context save/restore中斷代碼調(diào)試舉例:/*輸入中斷處理程序*/void input_handler() /achar = IN_DATA; /全局變量gotchar = TRUE; /通知主程序通知主程序IN_STATUS=0;/設(shè)置狀態(tài)值#define IN_DATA (*(volatile unsigned byte *) 0 xE0028018)

15、 /輸入寄存器#define IN_STATUS (*(volatile unsigned byte *) 0 xE002801C)/輸入狀態(tài)寄存器中斷優(yōu)先級(jí)和中斷向量z有兩種機(jī)制可以使中斷機(jī)制更有效:y中斷優(yōu)先級(jí)決定了哪個(gè)中斷被CPU優(yōu)先執(zhí)行y中斷向量允許中斷設(shè)備指定其中斷處理程序z多數(shù)CPU同時(shí)支持這兩種機(jī)制帶優(yōu)先級(jí)的中斷機(jī)制CPU設(shè)備 1設(shè)備 2設(shè)備 nL1 L2 . Ln中斷應(yīng)答中斷優(yōu)先級(jí)z 中斷屏蔽 (Masking):優(yōu)先級(jí)低于當(dāng)前中斷的不被執(zhí)行,直到當(dāng)前中斷處理程序執(zhí)行完畢z 不可屏蔽中斷 (Non-maskable interrupt,NMI): 最高優(yōu)先級(jí)中斷,不被屏蔽y通常

16、為由電源故障引發(fā)的中斷準(zhǔn)備例子: 優(yōu)先級(jí)中斷A prior B, B prior C中斷向量z需求舉例:y設(shè)備只有一個(gè)中斷管腳,但是有多個(gè)中斷源y例如:射頻芯片有發(fā)送完成中斷、接收中斷、異常中斷等等中斷向量z硬件結(jié)構(gòu)支持中斷處理程序 0中斷處理程序 1中斷處理程序 2中斷處理程序 3中斷向量表表頭設(shè)備CPU中斷請(qǐng)求中斷響應(yīng)向量中斷向量獲取:CPU:設(shè)備收到中斷請(qǐng)求收到中斷應(yīng)答收到中斷向量中斷執(zhí)行過(guò)程zCPU 響應(yīng)中斷請(qǐng)求z設(shè)備發(fā)送中斷向量zCPU 調(diào)用中斷處理程序z執(zhí)行中斷處理程序zCPU恢復(fù)執(zhí)行前臺(tái)程序中斷開(kāi)銷z分支跳轉(zhuǎn)及返回開(kāi)銷z額外的時(shí)鐘周期應(yīng)答中斷和獲取中斷向量z寄存器的保存與恢復(fù).z流水線相關(guān)的開(kāi)銷.zCache相關(guān)的開(kāi)銷.ARM interruptszARM7 支持兩種中斷:y快速中斷請(qǐng)求(FIQs).y一般中斷請(qǐng)求(IRQs).z中斷向量表保存在內(nèi)存低地址部分,一般從 0 地址開(kāi)始.管態(tài)、異常和陷阱z管態(tài):提供用戶態(tài)不具有的特權(quán)指令

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論