LPC900 FLASH單片機(jī),是PHILIPS公司推出的一款高性能、微功耗51內(nèi)核單片機(jī),主要集成了字節(jié)方式的I2C總線、SPI總線、增強(qiáng)型UART接口、實時時鐘、E2PROM、A/D轉(zhuǎn)換器、ISP/IAP在線編程和遠(yuǎn)程編程方式等一系列有特色的功能部件。LPC900系列單片機(jī)提供從8腳DIP到28腳的PLCC等豐富的封裝形式,可以滿足各種對成本、線路板空間有限制而又要求高性能、高可靠性的應(yīng)用。且其具有高速率(6倍于普通51單片機(jī)),低功耗(完全掉電模式功耗僅為1uA),高穩(wěn)定性,小封裝,多功能(內(nèi)嵌眾多流行的功能模塊),多選擇等特點(該系列有多款不同封裝,不同價位,不同功能的型號供用戶選擇)。
標(biāo)簽: LPC 900 SPI 單片機(jī)
上傳時間: 2013-10-19
上傳用戶:hanbeidang
紅外通信是目前比較流行的一種無線通信模式,其具有無污染,信息傳輸穩(wěn)定(不受電磁影響),信息保密性高(經(jīng)過一定強(qiáng)度的編解碼),及安裝簡單使用方便等優(yōu)點。因此其被廣泛應(yīng)用于日常生活(水表電表遠(yuǎn)程操控,紅外無接觸式測溫…)工業(yè)生產(chǎn)、科研等諸多領(lǐng)域。當(dāng)然由于其本身傳輸特性的限制,導(dǎo)致其易受光線影響,傳輸距離教短,這些也是平時我們應(yīng)用中應(yīng)該注意的地方。
標(biāo)簽: FLASH LPC 900 單片機(jī)
上傳時間: 2013-10-26
上傳用戶:vmznxbc
擴(kuò)展1個I2C總線為多個;通過主機(jī)I2C命令進(jìn)行總線選擇;每次選擇一個下級總線;廣播模式下可同時打開所有通道;收集中斷并發(fā)送給主機(jī);復(fù)位芯片可取消所有通道選擇,在總線掛起時恢復(fù)主機(jī)的控制。
標(biāo)簽: SMBus 954x PCA 954
上傳時間: 2013-11-20
上傳用戶:songrui
ARM處理器的工作模式 ARM處理器狀態(tài) ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換:第一種為ARM狀態(tài),此時處理器執(zhí)行32位的字對齊的ARM指令;第二種為Thumb狀態(tài),此時處理器執(zhí)行16位的、半字對齊的Thumb指令。在程序的執(zhí)行過程中,微處理器可以隨時在兩種工作狀態(tài)之間切換,并且,處理器工作狀態(tài)的轉(zhuǎn)變并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。但ARM微處理器在開始執(zhí)行代碼時,應(yīng)該處于ARM狀態(tài)。 ARM處理器狀態(tài) 進(jìn)入Thumb狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為1時,可以采用執(zhí)行BX指令的方法,使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此外,當(dāng)處理器處于Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時,自動切換到Thumb狀態(tài)。 進(jìn)入ARM狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位為0時,執(zhí)行BX指令時可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。此外,在處理器進(jìn)行異常處理時,把PC指針放入異常模式鏈接寄存器中,并從異常向量地址開始執(zhí)行程序,也可以使處理器切換到ARM狀態(tài)。ARM處理器模式 ARM微處理器支持7種運行模式,分別為:用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)。快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理。外部中斷模式(irq):用于通用的中斷處理。管理模式(svc):操作系統(tǒng)使用的保護(hù)模式。數(shù)據(jù)訪問終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時進(jìn)入該模式,可用于虛擬存儲及存儲保護(hù)。系統(tǒng)模式(sys):運行具有特權(quán)的操作系統(tǒng)任務(wù)。定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。ARM處理器模式 ARM微處理器的運行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。大多數(shù)的應(yīng)用程序運行在用戶模式下,當(dāng)處理器運行在用戶模式下時,某些被保護(hù)的系統(tǒng)資源是不能被訪問的。 除用戶模式以外,其余的所有6種模式稱之為非用戶模式,或特權(quán)模式;其中除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式,常用于處理中斷或異常,以及需要訪問受保護(hù)的系統(tǒng)資源等情況。ARM寄存器 ARM處理器共有37個寄存器。其中包括:31個通用寄存器,包括程序計數(shù)器(PC)在內(nèi)。這些寄存器都是32位寄存器。以及6個32位狀態(tài)寄存器。 關(guān)于寄存器這里就不詳細(xì)介紹了,有興趣的人可以上網(wǎng)找找,很多這方面的資料。異常處理 當(dāng)正常的程序執(zhí)行流程發(fā)生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個異常同時發(fā)生,它們將會按固定的優(yōu)先級進(jìn)行處理。當(dāng)一個異常出現(xiàn)以后,ARM微處理器會執(zhí)行以下幾步操作:進(jìn)入異常處理的基本步驟:將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。將CPSR復(fù)制到相應(yīng)的SPSR中。根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運行模式位。強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。如果異常發(fā)生時,處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時,處理器自動切換到ARM狀態(tài)。 ARM微處理器對異常的響應(yīng)過程用偽碼可以描述為: R14_ = Return LinkSPSR_= CPSRCPSR[4:0] = Exception Mode NumberCPSR[5] = 0 ;當(dāng)運行于 ARM 工作狀態(tài)時If == Reset or FIQ then;當(dāng)響應(yīng) FIQ 異常時,禁止新的 FIQ 異常CPSR[6] = 1PSR[7] = 1PC = Exception Vector Address異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回:將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。將SPSR復(fù)制回CPSR中。若在進(jìn)入異常處理時設(shè)置了中斷禁止位,要在此清除。
標(biāo)簽: ARM 處理器 工作模式
上傳時間: 2013-11-15
本系統(tǒng)針對設(shè)計制作簡易多功能計數(shù)器能接收函數(shù)信號發(fā)生器產(chǎn)生的信號,實現(xiàn)周期測量、頻率測量和時間間隔測量的功能的要求。通過分頻和整形,利用C8051F020 [1] 的可編程計數(shù)器陣列(PCA)的邊沿捕捉模式對信號的上升沿捕捉并計時,從而達(dá)到對頻率、周期和時間間隔測量的目的,并能使測量的范圍和測量精度達(dá)到預(yù)期的要求,還能實現(xiàn)顯示溫度、時間和記憶10 個測量過的歷史數(shù)據(jù)、顯示峰值等擴(kuò)展需求。
標(biāo)簽: C8051F020 芯片 多功能 計數(shù)器
上傳時間: 2013-10-21
上傳用戶:13788529953
用單片機(jī)制作多功能莫爾斯碼電路:用單片機(jī)制作多功能莫爾斯碼電路莫爾斯電碼通信有著悠久的歷史,盡管它已被現(xiàn)代通信方式所取代,但在業(yè)余無線電通信和特殊的專業(yè)場合仍具有重要的地位,這是因為等幅電碼通信的抗干擾能力是其它任何一種通信方式都無法相比的。在短波波段用幾瓦的功率即可進(jìn)行國際間的通信,收發(fā)射設(shè)備簡單易制成本低廉,所以深受業(yè)余無線電愛好者的喜愛,是業(yè)余無線電高手必備的技能。要想熟練掌握莫爾斯電碼的收發(fā)技術(shù)除了持之以恒的毅力外,還需要相關(guān)的設(shè)備。設(shè)計本電路的目的就是給愛好者提供一個實用和訓(xùn)練的工具。 一、功能簡介 本電路可以配合自動鍵體和手動鍵體,產(chǎn)生莫爾斯碼控制信號,設(shè)有16種速度,從初學(xué)者到操作高手都能適用。監(jiān)聽音調(diào)也有16種,均可以通過功能鍵進(jìn)行選擇。可以按程序中設(shè)定好的呼號自動呼叫,設(shè)有聽抄練習(xí)功能,聽抄練習(xí)有短碼和混合碼兩種模式,分別對10個數(shù)字和常用的38個混合碼模擬隨機(jī)取樣,產(chǎn)生分組報碼,供愛好者提高抄收水平之用,速度低4檔的聽抄練習(xí)是專為初學(xué)者所設(shè),內(nèi)容是時間間隔較長的單字符。設(shè)有PTT開關(guān)鍵,可以決定是否控制發(fā)射機(jī)工作,不需要反復(fù)通斷控制線。無論當(dāng)前處于呼叫狀態(tài)還是聽抄狀態(tài)只要電鍵接點接通則自動轉(zhuǎn)到人工發(fā)報程序。4分鐘內(nèi)不使用電路將自動關(guān)閉電源,只有按復(fù)位鍵才能重新開始工作。先按住聽抄練習(xí)鍵復(fù)位則進(jìn)入短碼練習(xí)狀態(tài),其它功能不變。從開機(jī)到自動關(guān)機(jī)執(zhí)行每個功能都有不同的莫爾斯碼提示音。本電路具有較強(qiáng)的抗高低頻干擾的能力和使用方便的大電流開關(guān)接口,以適應(yīng)不同的發(fā)射設(shè)備。 二、硬件電路原理硬件電路如圖1所示。設(shè)計電路的目的在于方便實用,以免在緊張的操作中失誤,所以除了聽抄練習(xí)鍵外其它鍵沒有定義復(fù)用功能。各鍵的作用在圖中已經(jīng)標(biāo)出。PTT控制在每次復(fù)位時處于關(guān)閉狀態(tài),每按動一次PTT功能鍵則改變一次狀態(tài),這樣可以使用軟件開關(guān)控制發(fā)射。 PTT處于控制狀態(tài)時發(fā)光二極管隨控制信號閃亮。考慮到自制設(shè)備及淘汰軍用設(shè)備與高檔設(shè)備控制電流的不同,PTT開關(guān)管采用了2SC2073,可以承受500mA的電流,同時還增加了無極性PTT開關(guān)電路,無論外部被控制的端口直流極性如何加到VT3的極性始終不變,供有興趣的愛好者實驗。應(yīng)該注意,如果被控制的負(fù)載是感性,則電感兩端必須并聯(lián)續(xù)流二極管,除自制設(shè)備外成品機(jī)在這方面一般沒有什么問題。手動鍵只有一個接點,接通后產(chǎn)生連續(xù)的音頻和發(fā)射控制信號。在本電路中手動鍵的輸入端是P1.5 ,程序不斷檢測P1.5電平,當(dāng)按鍵按下時P1.5電平為0,程序轉(zhuǎn)入手動鍵子程序。 自動鍵的接點分別接到P1.3和P1.4 ,同樣當(dāng)程序檢測到有接點閉合時便自動產(chǎn)生“點”或“劃”。音頻信號從P輸出,經(jīng)VT1放大后推動揚聲器發(fā)音。單片機(jī)的I/O口在輸入狀態(tài)下阻抗較高,容易受到高低頻信號干擾,所以在每個輸入端口和三極管的be端并聯(lián)電阻和高頻旁路電容,確保在較長的電鍵連線和大功率發(fā)射時電路工作穩(wěn)定。圖2是印刷電路版圖,尺寸為110mmX85mm,揚聲器用粘合劑直接粘接在電路版有銅箔的面。 三、軟件設(shè)計方法 “點”時間長度是莫爾斯電碼中的基本時間單位。按規(guī)定“劃”的時間長度不小于三個“點”,同字符中“點”與“劃”的間隔不小于一個“點”,字符之間不小于一個“劃”,詞與詞之間不應(yīng)小于五個“點”。在本程序中用條件轉(zhuǎn)移指令來產(chǎn)生“點”時間長度。通過速度功能鍵功可以設(shè)置16種延時參數(shù)。用T0中斷產(chǎn)生監(jiān)聽音頻信號,并將中斷設(shè)為優(yōu)先級,保證在聽覺上純正悅耳。T1用于自動關(guān)機(jī)計時,如果不使用任何功能四分鐘后將向PCON 位寫1,單片機(jī)進(jìn)入休眠狀態(tài),此時耗電量僅有幾個微安。自動鍵的“點”或“劃”以及手動鍵的連續(xù)發(fā)音都是子程序的反復(fù)調(diào)用。P1.2對地短接時自動呼叫可設(shè)定為另一內(nèi)容。為了便于熟悉匯編語言的讀者對發(fā)音內(nèi)容進(jìn)行修改,這里介紹發(fā)音字符的編碼方法。莫爾斯碼的信息與計算機(jī)中二進(jìn)制恰好相同,我們可以用0表示“點”,用1表示“劃”。提示音、自動呼叫、聽抄內(nèi)容等字符是預(yù)先按一定編碼方式存儲在程序中的常數(shù)。每個字符的莫爾斯碼一般是由1至6位“點”、“劃”組成,也就是發(fā)音次數(shù)最多6次。程序中每個字符占用1個字節(jié),字符時間間隔不占用字節(jié),但更長的延時或發(fā)音結(jié)束信息占用一個字節(jié)。我們用字節(jié)的低三位表示字節(jié)的性質(zhì),對于5次及5次以下發(fā)音的字符我們用存儲器的高5位存儲發(fā)音信息,發(fā)音順序由高位至低位,用低3位存儲發(fā)音次數(shù),發(fā)音時將數(shù)據(jù)送入累加器A,先得到發(fā)音次數(shù),然后使A左環(huán)移,對E0進(jìn)行位尋址,判斷是發(fā)“點”還是“劃”,環(huán)移次數(shù)由發(fā)音次數(shù)決定。對于6次發(fā)音的字符不能完全按照上述編碼規(guī)則,否則會出現(xiàn)信息重疊,如果是6次發(fā)音且最后一次是“劃”我們把發(fā)音次數(shù)定義為111B,因為這時第6次位尋址得到的是1。如果第6次發(fā)音是“點”,那么這個字符的低三位定義為000B。字符間隔時間由程序自動產(chǎn)生,更長的時間隔或結(jié)束標(biāo)志由字節(jié)低三位110B來定義,高半字節(jié)表示字符間隔的倍數(shù),例如26H表示再加兩倍時間間隔。如果字節(jié)為06H則表示讀字符程序結(jié)束,返回主程序。更詳細(xì)的內(nèi)容不再贅述,讀者可閱讀源程序。四、使用注意事項手動鍵的操作難度相對大一些,時間節(jié)拍全由人掌握,其特點是發(fā)出的電碼帶有“人情味”。自動鍵的“點”、“劃”靠電路產(chǎn)生,發(fā)音標(biāo)準(zhǔn),容易操作,而且可以達(dá)到相當(dāng)快的速度,長時間工作也不易疲勞。在干擾較大、信號微弱的條件下自動鍵碼的辨別程度好于手動鍵碼。初學(xué)者初次使用手動鍵練習(xí)發(fā)報要有老師指導(dǎo),且不可我行我素,一旦養(yǎng)成不正確的手法則很難糾正。在電臺上時常聽到一些讓對方難以抄收的電碼,這可能會使對方反感而拒絕回答。使用自動鍵也應(yīng)在一定的聽抄基礎(chǔ)上再去練習(xí)。在暫時找不老師的情況下可多練習(xí)聽力,這對于今后能夠發(fā)出標(biāo)準(zhǔn)正確的電碼非常有益。
標(biāo)簽: 用單片機(jī) 多功能 莫爾斯 電路
上傳時間: 2013-10-31
上傳用戶:sdq_123
九.輸入/輸出保護(hù)為了支持多任務(wù),80386不僅要有效地實現(xiàn)任務(wù)隔離,而且還要有效地控制各任務(wù)的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護(hù)。 這里下載本文源代碼。 <一>輸入/輸出保護(hù)80386采用I/O特權(quán)級IPOL和I/O許可位圖的方法來控制輸入/輸出,實現(xiàn)輸入/輸出保護(hù)。 1.I/O敏感指令輸入輸出特權(quán)級(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關(guān)的指令和訪問I/O空間中所有地址的最外層特權(quán)級。IOPL的值在如下圖所示的標(biāo)志寄存器中。 標(biāo) 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規(guī)定了I/O空間中的哪些地址可以由在任何特權(quán)級執(zhí)行的程序所訪問。I/O許可位圖在任務(wù)狀態(tài)段TSS中。 I/O敏感指令 指令 功能 保護(hù)方式下的執(zhí)行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設(shè)置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數(shù)據(jù) CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關(guān),并且只有在滿足所列條件時才可以執(zhí)行,所以把它們稱為I/O敏感指令。從表中可見,當(dāng)前特權(quán)級不在I/O特權(quán)級外層時,可以正常執(zhí)行所列的全部I/O敏感指令;當(dāng)特權(quán)級在I/O特權(quán)級外層時,執(zhí)行CLI和STI指令將引起通用保護(hù)異常,而其它四條指令是否能夠被執(zhí)行要根據(jù)訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執(zhí)行,那么將引起出錯碼為0的通用保護(hù)異常。 由于每個任務(wù)使用各自的EFLAGS值和擁有自己的TSS,所以每個任務(wù)可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實模式下總是可執(zhí)行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執(zhí)行是很不方便的,不能滿足實際要求需要。因為這樣做會使得在特權(quán)級3執(zhí)行的應(yīng)用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實際需要與此剛好相反,只允許任務(wù)甲的應(yīng)用程序訪問部分I/O地址,只允許任務(wù)乙的應(yīng)用程序訪問另一部分I/O地址,以避免任務(wù)甲和任務(wù)乙在訪問I/O地址時發(fā)生沖突,從而避免任務(wù)甲和任務(wù)乙使用使用獨享設(shè)備時發(fā)生沖突。 因此,在IOPL的基礎(chǔ)上又采用了I/O許可位圖。I/O許可位圖由二進(jìn)制位串組成。位串中的每一位依次對應(yīng)一個I/O地址,位串的第0位對應(yīng)I/O地址0,位串的第n位對應(yīng)I/O地址n。如果位串中的第位為0,那么對應(yīng)的I/O地址m可以由在任何特權(quán)級執(zhí)行的程序訪問;否則對應(yīng)的I/O地址m只能由在IOPL特權(quán)級或更內(nèi)層特權(quán)級執(zhí)行的程序訪問。如果在I/O外層特權(quán)級執(zhí)行的程序訪問位串中位值為1的位所對應(yīng)的I/O地址,那么將引起通用保護(hù)異常。 I/O地址空間按字節(jié)進(jìn)行編址。一條I/O指令最多可涉及四個I/O地址。在需要根據(jù)I/O位圖決定是否可訪問I/O地址的情況下,當(dāng)一條I/O指令涉及多個I/O地址時,只有這多個I/O地址所對應(yīng)的I/O許可位圖中的位都為0時,該I/O指令才能被正常執(zhí)行,如果對應(yīng)位中任一位為1,就會引起通用保護(hù)異常。 80386支持的I/O地址空間大小是64K,所以構(gòu)成I/O許可位圖的二進(jìn)制位串最大長度是64K個位,即位圖的有效部分最大為8K字節(jié)。一個任務(wù)實際需要使用的I/O許可位圖大小通常要遠(yuǎn)小于這個數(shù)目。 當(dāng)前任務(wù)使用的I/O許可位圖存儲在當(dāng)前任務(wù)TSS中低端的64K字節(jié)內(nèi)。I/O許可位圖總以字節(jié)為單位存儲,所以位串所含的位數(shù)總被認(rèn)為是8的倍數(shù)。從前文中所述的TSS格式可見,TSS內(nèi)偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達(dá)8K字節(jié),所以開始偏移應(yīng)小于56K,但必須大于等于104,因為TSS中前104字節(jié)為TSS的固定格式,用于保存任務(wù)的狀態(tài)。 1.I/O訪問許可檢查細(xì)節(jié)保護(hù)模式下處理器在執(zhí)行I/O指令時進(jìn)行許可檢查的細(xì)節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉(zhuǎn)步驟(8);(2)取得I/O位圖開始偏移;(3)計算I/O地址對應(yīng)位所在字節(jié)在I/O許可位圖內(nèi)的偏移;(4)計算位偏移以形成屏蔽碼值,即計算I/O地址對應(yīng)位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯碼為0的通用保護(hù)故障;(6)若不越界,則從位圖中讀對應(yīng)字節(jié)及下一個字節(jié);(7)把讀出的兩個字節(jié)與屏蔽碼進(jìn)行與運算,若結(jié)果不為0表示檢查未通過,則產(chǎn)生出錯碼為0的通用保護(hù)故障;(8)進(jìn)行I/O訪問。設(shè)某一任務(wù)的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對應(yīng)I/O端口00H—3FH DB 10000000B ;對應(yīng)I/O端口40H—47H DB 01100000B ;對用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對應(yīng)I/O端口50H—0FFFFH DB 0FFH ;位圖結(jié)束字節(jié)TSSLen = $TSSSEG ENDS 再假設(shè)IOPL=1,CPL=3。那么如下I/O指令有些能正常執(zhí)行,有些會引起通用保護(hù)異常: in al,21h ;(1)正常執(zhí)行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執(zhí)行 out 20h,eax ;(6)正常執(zhí)行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執(zhí)行 由上述I/O許可檢查的細(xì)節(jié)可見,不論是否必要,當(dāng)進(jìn)行許可位檢查時,80386總是從I/O許可位圖中讀取兩個字節(jié)。目的是為了盡快地執(zhí)行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個字節(jié)。例如,上面的第(8)條指令要對I/O位圖中的兩個位進(jìn)行檢查,其低位是某個字節(jié)的最高位,高位是下一個字節(jié)的最低位。可見即使只要檢查兩個位,也可能需要讀取兩個字節(jié)。另一方面,最多檢查四個連續(xù)的位,即最多也只需讀取兩個字節(jié)。所以每次要讀取兩個字節(jié)。這也是在判別是否越界時再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節(jié)時產(chǎn)生越界,必須在I/O許可位圖的最后填加一個全1的字節(jié),即0FFH。此全1的字節(jié)應(yīng)填加在最后一個位圖字節(jié)之后,TSS界限范圍之前,即讓填加的全1字節(jié)在TSS界限之內(nèi)。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當(dāng)TSS的界限大于I/O許可位圖開始偏移加8K時,I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進(jìn)行。當(dāng)TSS的界限不大于I/O許可位圖開始偏移加8K時,I/O許可位圖有效部分就不到8K字節(jié),于是對較小I/O地址訪問的許可檢查根據(jù)位圖進(jìn)行,而對較大I/O地址訪問的許可檢查總被認(rèn)為不可訪問而引起通用保護(hù)故障。因為這時會發(fā)生字節(jié)越界而引起通用保護(hù)異常,所以在這種情況下,可認(rèn)為不足的I/O許可位圖的高端部分全為1。利用這個特點,可大大節(jié)約TSS中I/O許可位圖占用的存儲單元,也就大大減小了TSS段的長度。 <二>重要標(biāo)志保護(hù)輸入輸出的保護(hù)與存儲在標(biāo)志寄存器EFLAGS中的IOPL密切相關(guān),顯然不能允許隨便地改變IOPL,否則就不能有效地實現(xiàn)輸入輸出保護(hù)。類似地,對EFLAGS中的IF位也必須加以保護(hù),否則CLI和STI作為敏感指令對待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對EFLAGS中的這三個字段的處理比較特殊,只有在較高特權(quán)級執(zhí)行的程序才能執(zhí)行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權(quán)級下對這三個字段的處理情況。 不同特權(quán)級對標(biāo)志寄存器特殊字段的處理 特權(quán)級 VM標(biāo)志字段 IOPL標(biāo)志字段 IF標(biāo)志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權(quán)級0執(zhí)行的程序才可以修改IOPL位及VM位;只能由相對于IOPL同級或更內(nèi)層特權(quán)級執(zhí)行的程序才可以修改IF位。與CLI和STI指令不同,在特權(quán)級不滿足上述條件的情況下,當(dāng)執(zhí)行POPF指令和IRET指令時,如果試圖修改這些字段中的任何一個字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標(biāo)志中的VM位總為0。 <三>演示輸入輸出保護(hù)的實例(實例九)下面給出一個用于演示輸入輸出保護(hù)的實例。演示內(nèi)容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權(quán)指令引起的異常;使用段間調(diào)用指令CALL通過任務(wù)門調(diào)用任務(wù),實現(xiàn)任務(wù)嵌套。 1.演示步驟實例演示的內(nèi)容比較豐富,具體演示步驟如下:(1)在實模式下做必要準(zhǔn)備后,切換到保護(hù)模式;(2)進(jìn)入保護(hù)模式的臨時代碼段后,把演示任務(wù)的TSS段描述符裝入TR,并設(shè)置演示任務(wù)的堆棧;(3)進(jìn)入演示代碼段,演示代碼段的特權(quán)級是0;(4)通過任務(wù)門調(diào)用測試任務(wù)1。測試任務(wù)1能夠順利進(jìn)行;(5)通過任務(wù)門調(diào)用測試任務(wù)2。測試任務(wù)2演示由于違反I/O許可位圖規(guī)定而導(dǎo)致通用保護(hù)異常;(6)通過任務(wù)門調(diào)用測試任務(wù)3。測試任務(wù)3演示I/O敏感指令如何引起通用保護(hù)異常;(7)通過任務(wù)門調(diào)用測試任務(wù)4。測試任務(wù)4演示特權(quán)指令如何引起通用保護(hù)異常;(8)從演示代碼轉(zhuǎn)臨時代碼,準(zhǔn)備返回實模式;(9)返回實模式,并作結(jié)束處理。
標(biāo)簽: 匯編 保護(hù)模式 教程
上傳時間: 2013-12-11
上傳用戶:nunnzhy
摘 要:研究一種基于FPGA的多路視頻合成系統(tǒng)。系統(tǒng)接收16路ITU656格式的視頻數(shù)據(jù),按照畫面分割的要求對視頻數(shù)據(jù)流進(jìn)行有效抽取和幀合成處理,經(jīng)過視頻編碼芯片轉(zhuǎn)換成模擬信號輸出到顯示器,以全屏或多窗口模式顯示多路視頻畫面。系統(tǒng)利用FPGA的高速并行處理能力的優(yōu)勢,應(yīng)用靈活的的多路視頻信號的合成技術(shù)和數(shù)字圖像處理算法,實現(xiàn)實時處理多路視頻數(shù)據(jù)。
標(biāo)簽: FPGA 多路 視頻合成
上傳時間: 2014-12-05
上傳用戶:jiangfire
高速串并轉(zhuǎn)換器的設(shè)計是FPGA 設(shè)計的一個重要方面,傳統(tǒng)設(shè)計方法由于采用FPGA 的內(nèi)部邏輯資源來實現(xiàn),從而限制了串并轉(zhuǎn)換的速度。該研究以網(wǎng)絡(luò)交換調(diào)度系統(tǒng)的FGPA 驗證平臺中多路高速串并轉(zhuǎn)換器的設(shè)計為例,詳細(xì)闡述了1 :8DDR 模式下高速串并轉(zhuǎn)換器的設(shè)計方法和16 路1 :8 串并轉(zhuǎn)換器的實現(xiàn)。結(jié)果表明,采用Xilinx Virtex24 的ISERDES 設(shè)計的多路串并轉(zhuǎn)換器可以實現(xiàn)800 Mbit/ s 輸入信號的串并轉(zhuǎn)換,并且減少了設(shè)計復(fù)雜度,縮短了開發(fā)周期,能滿足設(shè)計要求。關(guān)鍵詞:串并轉(zhuǎn)換;現(xiàn)場可編程邏輯陣列;Xilinx ; ISERDES
標(biāo)簽: FPGA 多路 串并轉(zhuǎn)換
上傳時間: 2013-11-03
上傳用戶:王小奇
針對實際應(yīng)用中電子戰(zhàn)設(shè)備對雷達(dá)信號分選的實時性要求,在分析了序列差直方圖算法和多核DSP任務(wù)并行模式的基礎(chǔ)上,設(shè)計了基于TMS320C6678的八核DSP雷達(dá)信號分選電路,對密集的雷達(dá)信號進(jìn)行分選。實驗結(jié)果表明:該電路可對常規(guī)雷達(dá)信號實現(xiàn)快速分選,并且分選效果良好,系統(tǒng)可靠性高。
標(biāo)簽: SDIF DSP 多核 雷達(dá)信號分選
上傳時間: 2013-10-16
上傳用戶:攏共湖塘
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1