九.輸入/輸出保護為了支持多任務,80386不僅要有效地實現任務隔離,而且還要有效地控制各任務的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護。 這里下載本文源代碼。 <一>輸入/輸出保護80386采用I/O特權級IPOL和I/O許可位圖的方法來控制輸入/輸出,實現輸入/輸出保護。 1.I/O敏感指令輸入輸出特權級(I/O Privilege Level)規定了可以執行所有與I/O相關的指令和訪問I/O空間中所有地址的最外層特權級。IOPL的值在如下圖所示的標志寄存器中。 標 志寄存器 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許可位圖規定了I/O空間中的哪些地址可以由在任何特權級執行的程序所訪問。I/O許可位圖在任務狀態段TSS中。 I/O敏感指令 指令 功能 保護方式下的執行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數據 CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數據 CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關,并且只有在滿足所列條件時才可以執行,所以把它們稱為I/O敏感指令。從表中可見,當前特權級不在I/O特權級外層時,可以正常執行所列的全部I/O敏感指令;當特權級在I/O特權級外層時,執行CLI和STI指令將引起通用保護異常,而其它四條指令是否能夠被執行要根據訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執行,那么將引起出錯碼為0的通用保護異常。 由于每個任務使用各自的EFLAGS值和擁有自己的TSS,所以每個任務可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實模式下總是可執行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執行是很不方便的,不能滿足實際要求需要。因為這樣做會使得在特權級3執行的應用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實際需要與此剛好相反,只允許任務甲的應用程序訪問部分I/O地址,只允許任務乙的應用程序訪問另一部分I/O地址,以避免任務甲和任務乙在訪問I/O地址時發生沖突,從而避免任務甲和任務乙使用使用獨享設備時發生沖突。 因此,在IOPL的基礎上又采用了I/O許可位圖。I/O許可位圖由二進制位串組成。位串中的每一位依次對應一個I/O地址,位串的第0位對應I/O地址0,位串的第n位對應I/O地址n。如果位串中的第位為0,那么對應的I/O地址m可以由在任何特權級執行的程序訪問;否則對應的I/O地址m只能由在IOPL特權級或更內層特權級執行的程序訪問。如果在I/O外層特權級執行的程序訪問位串中位值為1的位所對應的I/O地址,那么將引起通用保護異常。 I/O地址空間按字節進行編址。一條I/O指令最多可涉及四個I/O地址。在需要根據I/O位圖決定是否可訪問I/O地址的情況下,當一條I/O指令涉及多個I/O地址時,只有這多個I/O地址所對應的I/O許可位圖中的位都為0時,該I/O指令才能被正常執行,如果對應位中任一位為1,就會引起通用保護異常。 80386支持的I/O地址空間大小是64K,所以構成I/O許可位圖的二進制位串最大長度是64K個位,即位圖的有效部分最大為8K字節。一個任務實際需要使用的I/O許可位圖大小通常要遠小于這個數目。 當前任務使用的I/O許可位圖存儲在當前任務TSS中低端的64K字節內。I/O許可位圖總以字節為單位存儲,所以位串所含的位數總被認為是8的倍數。從前文中所述的TSS格式可見,TSS內偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達8K字節,所以開始偏移應小于56K,但必須大于等于104,因為TSS中前104字節為TSS的固定格式,用于保存任務的狀態。 1.I/O訪問許可檢查細節保護模式下處理器在執行I/O指令時進行許可檢查的細節如下所示。 (1)若CPL<=IOPL,則直接轉步驟(8);(2)取得I/O位圖開始偏移;(3)計算I/O地址對應位所在字節在I/O許可位圖內的偏移;(4)計算位偏移以形成屏蔽碼值,即計算I/O地址對應位在字節中的第幾位;(5)把字節偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產生出錯碼為0的通用保護故障;(6)若不越界,則從位圖中讀對應字節及下一個字節;(7)把讀出的兩個字節與屏蔽碼進行與運算,若結果不為0表示檢查未通過,則產生出錯碼為0的通用保護故障;(8)進行I/O訪問。設某一任務的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對應I/O端口00H—3FH DB 10000000B ;對應I/O端口40H—47H DB 01100000B ;對用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對應I/O端口50H—0FFFFH DB 0FFH ;位圖結束字節TSSLen = $TSSSEG ENDS 再假設IOPL=1,CPL=3。那么如下I/O指令有些能正常執行,有些會引起通用保護異常: in al,21h ;(1)正常執行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執行 out 20h,eax ;(6)正常執行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執行 由上述I/O許可檢查的細節可見,不論是否必要,當進行許可位檢查時,80386總是從I/O許可位圖中讀取兩個字節。目的是為了盡快地執行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個字節。例如,上面的第(8)條指令要對I/O位圖中的兩個位進行檢查,其低位是某個字節的最高位,高位是下一個字節的最低位??梢娂词怪灰獧z查兩個位,也可能需要讀取兩個字節。另一方面,最多檢查四個連續的位,即最多也只需讀取兩個字節。所以每次要讀取兩個字節。這也是在判別是否越界時再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節時產生越界,必須在I/O許可位圖的最后填加一個全1的字節,即0FFH。此全1的字節應填加在最后一個位圖字節之后,TSS界限范圍之前,即讓填加的全1字節在TSS界限之內。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當TSS的界限大于I/O許可位圖開始偏移加8K時,I/O許可位圖的有效部分就有8K字節,I/O許可檢查全部根據全部根據該位圖進行。當TSS的界限不大于I/O許可位圖開始偏移加8K時,I/O許可位圖有效部分就不到8K字節,于是對較小I/O地址訪問的許可檢查根據位圖進行,而對較大I/O地址訪問的許可檢查總被認為不可訪問而引起通用保護故障。因為這時會發生字節越界而引起通用保護異常,所以在這種情況下,可認為不足的I/O許可位圖的高端部分全為1。利用這個特點,可大大節約TSS中I/O許可位圖占用的存儲單元,也就大大減小了TSS段的長度。 <二>重要標志保護輸入輸出的保護與存儲在標志寄存器EFLAGS中的IOPL密切相關,顯然不能允許隨便地改變IOPL,否則就不能有效地實現輸入輸出保護。類似地,對EFLAGS中的IF位也必須加以保護,否則CLI和STI作為敏感指令對待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對EFLAGS中的這三個字段的處理比較特殊,只有在較高特權級執行的程序才能執行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權級下對這三個字段的處理情況。 不同特權級對標志寄存器特殊字段的處理 特權級 VM標志字段 IOPL標志字段 IF標志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權級0執行的程序才可以修改IOPL位及VM位;只能由相對于IOPL同級或更內層特權級執行的程序才可以修改IF位。與CLI和STI指令不同,在特權級不滿足上述條件的情況下,當執行POPF指令和IRET指令時,如果試圖修改這些字段中的任何一個字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標志中的VM位總為0。 <三>演示輸入輸出保護的實例(實例九)下面給出一個用于演示輸入輸出保護的實例。演示內容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權指令引起的異常;使用段間調用指令CALL通過任務門調用任務,實現任務嵌套。 1.演示步驟實例演示的內容比較豐富,具體演示步驟如下:(1)在實模式下做必要準備后,切換到保護模式;(2)進入保護模式的臨時代碼段后,把演示任務的TSS段描述符裝入TR,并設置演示任務的堆棧;(3)進入演示代碼段,演示代碼段的特權級是0;(4)通過任務門調用測試任務1。測試任務1能夠順利進行;(5)通過任務門調用測試任務2。測試任務2演示由于違反I/O許可位圖規定而導致通用保護異常;(6)通過任務門調用測試任務3。測試任務3演示I/O敏感指令如何引起通用保護異常;(7)通過任務門調用測試任務4。測試任務4演示特權指令如何引起通用保護異常;(8)從演示代碼轉臨時代碼,準備返回實模式;(9)返回實模式,并作結束處理。
上傳時間: 2013-12-11
上傳用戶:nunnzhy
《數字信號處理實踐方法(第二版)》根據實際工程應用和具體實例,詳細介紹了數字信號處理(DSP)領域內的基本概念和相關技術。全書共分為14章,首先講解了DSP的基本概念及其應用,并從實際的例子出發,闡述了DSP的一些基本內容,如信號的抽樣、量化及其在實時DSP上的內涵。然后,作者介紹了離散變換(DFT和FFT),離散時間信號與系統分析的工具(z變換),以及DSP的基本運算(相關和卷積),并分析了數字濾波器設計的實際問題?!稊底中盘柼幚韺嵺`方法(第二版)》還介紹了多抽樣率數字信號處理、自適應數字濾波器、譜估計及其分析等現代數字信號處理理論,最后討論了通用和專用數字信號處理器、定點DSP系統有限字長效應分析及DSP的應用和設計實例。另外,書中還提供了有關范例和實驗的MATLAB實現方法。 《數字信號處理實踐方法(第二版)》可作為通信與電子信息類專業高年級本科生和研究生的教材或教學參考書,而且對于相關學科的工程技術人員也具有很好的參考價值。
上傳時間: 2013-12-30
上傳用戶:assef
根據通用主動視覺系統的設計要求,提出了基于DSP的嵌入式主動視覺系統的設計方案,并完成系統的軟硬件設計。最終實現的系統具有俯仰和搖擺2個自由度、支持雙CCD視覺傳感器和雙傾角傳感器。該系統的硬件分別采用TMS320C6711和TMS320F2812實現了視頻處理、運動控制、傳感器信息采集及系統與PC機之間的通訊。實驗結果表明該系統具有計算和接口資源豐富、操作靈活等特點,達到設計要求。
上傳時間: 2013-11-23
上傳用戶:brain kung
德州儀器 (TI) 處理器幾乎能滿足您所能想到的各種應用需求。我們陣營強大的處理器系列擁有各種價位、性能及功耗的產品可供選擇,能滿足幾乎任何數字電子設計的要求。利用 TI 廣博的系統專業知識、針對外設設計的全方位支持以及隨時可方便獲得的全套軟件與配套模擬組件,您能夠實現無窮無盡的設計方案。德州儀器 2008 年第二季度 數字信號處理選擇指南TI 數字信號處理技術介紹1Ô數字媒體處理器OMAP應用處理器C6000數字信號處理器C5000數字信號處理器C2000數字信號處理器MSP430微控制器音頻汽車通信工業醫療安全監控視頻無線主要特性完整的定制型視頻解決方案低功耗與高性能高性能低功耗與高性能結合高性能與高集成度可實現更環保的工業應用超低功耗達芬奇數字媒體處理器:針對數字視頻而精心優化達芬奇 (DaVinci) 技術包括可擴展的可編程信號處理片上系統 (SoC)、加速器與外設,專為滿足各種視頻終端設備在性價比與特性方面的要求進行了優化。最新的 OMAP™ 應用處理器:最佳的通用多媒體與圖形功能TI 高度可擴展的 OMAP 平臺能夠以任何單芯片組合實現業界通用多媒體與圖形處理功能的最佳組合。最新推出的四款 OMAP35x 器件的目標應用非常廣泛,其中包括便攜式導航設備、因特網設備、便攜式媒體播放器以及個人醫療設備等。最高性能:TMS320C6000™ DSP平臺C6000™ DSP 平臺可提供業界最高性能的定點與浮點 DSP,理想適用于視頻、影像、寬帶基礎局端以及高性能音頻等應用領域。低功耗與高性能相結合:TMS320C5000™ DSP 平臺C5000™ DSP 平臺不僅可提供業界最低的待機功耗,同時還支持高級自動化電源管理,能夠充分滿足諸如數字音樂播放器、VoIP、免提終端附件、GPS 接收機以及便攜式醫療設備等個人及便攜式產品的需求。結合類似 MCU 的控制功能與DSP 的高性能:TMS320C2000™數字信號控制器C2000™ 數字信號控制器 (DSC) 平臺融合了控制外設的集成功能與微控制器 (MCU) 的易用性,以及 TI 先進DSP 技術的處理能力和 C 語言編程效率。C2000 DSC 理想適用于嵌入式工業應用,如數字馬達控制、數字電源以及智能傳感器等。MSP430 超低功耗微控制器平臺TI MSP430 系列超低功耗 16 位 RISC 混合信號處理器可為電池供電的測量應用提供具有終極性能的解決方案。TI充分發揮自身在混合信號與數字技術領域卓越的領先優勢, 推出的MSP430 使系統設計人員不僅能夠同時實現與模擬信號、傳感器與數字組件的接口相連,而且還能實現無與倫比的低功耗。輕松易用的軟件與開發工具對于加速 DSP 產品開發而言,TMS320™ DSP 獲得了 eXpressDSP™ 軟件與開發工具的支持,其中包括Code Composer Studio™ IDE、DSP/BIOS™內核、TMS320 DSP 算法標準以及眾多可重復使用的模塊化軟件等,均來自業界最大規模開發商網絡。配套模擬產品TI 可提供各種配套的數據轉換器、電源管理、放大器、接口與邏輯產品,能夠充分滿足您設計的整體需求。
上傳時間: 2013-10-14
上傳用戶:jasson5678
通用FPGA架構匯總
上傳時間: 2013-11-21
上傳用戶:baiom
用VerilogHDL實現基于FPGA的通用分頻器的設計
標簽: VerilogHDL FPGA 分頻器
上傳時間: 2013-10-28
上傳用戶:xiaoxiang
uPLM2200 是一款小型高性能通用電力線通信模塊,由電力線調制/解調、功率放大、藕合及濾波、電源、MCU 及協議固件等組成,可直接連接到220V 電力線上,通過其數據接口實現數據發送和接收。
上傳時間: 2013-10-30
上傳用戶:13215175592
介紹了一種基于多DSP的并行處理系統設計與實現,以及其在分布式雷達組網航跡融合中的實際應用。重點介紹了該系統由1塊系統主板和4塊TS201處理板卡組成的原理和結構,即系統內主板與處理板卡的板級并行設計、單塊板卡多DSP并行結構的設計、板級間,單塊板卡內傳輸通道的設計。通過具體應用說明,該多DSP并行處理系統充分體現了航跡融合的實時、高速特性,作為硬件處理平臺具備高速、通用的特點。
上傳時間: 2014-09-01
上傳用戶:671145514
MC68HC11A0在熱印字機中的應用.pdf
上傳時間: 2013-10-11
上傳用戶:Wwill
ZigBee2007-通用通信傳輸
上傳時間: 2013-10-10
上傳用戶:kangqiaoyibie