LM3S系列單片機是基于ARM Cortex-M3內核、ARMv7M架構的控制器,而且特別針對諸如微控制器、汽車車身系統、工業控制系統以及無線網絡等對成本功耗極端敏感的嵌入式應用領域。在簡單的消費電子及數碼產品應用方面,LM3S系列單片機也同樣表現出極高的性價比。
上傳時間: 2013-11-07
上傳用戶:gy592333
幾款單片機的原理介紹 主要單片機的介紹1. ATMEL公司的AVR單片機,是增強型RISC內載Flash的單片機,芯片上的Flash存儲器附在用戶的產品中,可隨時編程,再編程,使用戶的產品設計容易,更新換代方便.AVR單片機采用增強的RISC結構,使其具有高速處理能力,在一個時鐘周期內可執行復雜的指令,每MHz可實現1MIPS的處理能力.AVR單片機工作電壓為2.7~6.0V,可以實現耗電最優化.AVR的單片機廣泛應用于計算機外部設備,工業實時控制,儀器儀表,通訊設備,家用電器,宇航設備等各個領域. 2. Motorola單片機: Motorola是世界上最大的單片機廠商.從M6800開始,開發了廣泛的品種,4位,8位,16位32位的單片機都能生產,其中典型的代表有:8位機M6805,M68HC05系列,8位增強型M68HC11,M68HC12 , 16位機M68HC16, 32位機M683XX. Motorola單片機的特點之一是在同樣的速度下所用的時鐘頻率較Intel類單片機低得多,因而使得高頻噪聲低,抗干擾能力強,更適合于工控領域及惡劣的環境 . 3. MicroChip單片機: MicroChip單片機的主要產品是PIC 16C系列和17C系列8位單片機,CPU采用RISC結構,分別僅有33,35,58條指令,采用Harvard雙總線結構,運行速度快,低工作電壓,低功耗,較大的輸入輸出直接驅動能力,價格低,一次性編程,小體積. 適用于用量大,檔次低,價格敏感的產品.在辦公自動化設備,消費電子產品,電訊通信,智能儀器儀表,汽車電子,金融電子,工業控制不同領域都有廣泛的應用,PIC系列單片機在世界單片機市場份額排名中逐年提高.發展非常迅速.實達高奇電子科技有限公司: www.goldenchip.com.cn 代理PIC系列單片機.
標簽: 單片機
上傳時間: 2014-12-27
上傳用戶:鳳臨西北
單片機原理與應用技術 單片機到底是什么呢?就是一個電腦,只不過是微型的,麻雀雖小,五臟俱全:它內部也用和電腦功能類似的模塊,比如CPU,內存,并行總線,還有和硬盤作用相同的存儲器件,不同的是它的這些部件性能都相對我們的家用電腦弱很多,不過價錢也是低的,一般不超過10元即可......用它來做一些控制電器一類不是很復雜的工作足矣了。我們現在用的全自動滾筒洗衣機,排煙罩VCD等等的家電里面都可以看到它的身影!......它主要是作為控制部分的核心部件。 它是一種在線式實時控制計算機,在線式就是現場控制,需要的是有較強的抗干擾能力,較低的成本,這也是和離線式計算機的(比如家用PC)的主要區別。 單片機是靠程序的,并且可以修改。通過不同的程序實現不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復雜的功能要是用美國50年代開發的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機,結果就會有天壤之別!只因為單片機的通過你編寫的程序可以實現高智能,高效率,以及高可靠性! 由于單片機對成本是敏感的,所以目前占統治地位的軟件還是最低級匯編語言,它是除了二進制機器碼以上最低級的語言了,既然這么低級為什么還要用呢?很多高級的語言已經達到了可視化編程的水平為什么不用呢?原因很簡單,就是單片機沒有家用計算機那樣的CPU,也沒有像硬盤那樣的海量存儲設備。一個可視化高級語言編寫的小程序里面即使只有一個按鈕,也會達到幾十K的尺寸!對于家用PC的硬盤來講沒什么,可是對于單片機來講是不能接受的。 單片機在硬件資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計算機上的操作系統和應用軟件拿到家用PC上來運行,家用PC的也是承受不了的。 目前最常用的單片機為MCS-51,是由美國INTEL公司(生產CPU的英特爾)生產的,89C51是這幾年在我國非常流行的單片機,它是由美國ATMEL公司開發生產的,其內核兼容MCS-51單片機?! 纹瑱C的應用領域 單片機廣泛應用于儀器儀表、家用電器、醫用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇: 1.在智能儀器儀表上的應用 單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數字化、智能化、微型化,且功能比起采用電子或數字電路更加強大。例如精密的測量設備(功率計,示波器,各種分析儀)。 2.在工業控制中的應用 用單片機可以構成形式多樣的控制系統、數據采集系統。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統,與計算機聯網構成二級控制系統等。 3.在家用電器中的應用 可以這樣說,現在的家用電器基本上都采用了單片機控制,從電飯褒、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在。 4.在計算機網絡和通信領域中的應用 現代的單片機普遍具備通信接口,可以很方便地與計算機進行數據通信,為在計算機網絡和通信設備間的應用提供了極好的物質條件,現在的通信設備基本上都實現了單片機智能控制,從手機,電話機、小型程控交換機、樓宇自動通信呼叫系統、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。 5.單片機在醫用設備領域中的應用 單片機在醫用設備中的用途亦相當廣泛,例如醫用呼吸機,各種分析儀,監護儀,超聲診斷設備及病床呼叫系統等等。 此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途
上傳時間: 2013-11-14
上傳用戶:gououo
當今集成電路設計已經進入 SOC 時代,于是各公司針對自己的設計需求挑選一款性價比較高的處理器作為內核是一件非常重要的事情。下面將介紹一款集成了DSP 和MCU 功能的處理器ZSP neo 。ZSP neo 是一類新型的處理器,它在一個的內核中集成了DSP 和MCU 的功能。對于那些需要比現有8 位微控制器更高的控制處理性能,而又無需32 位微控制器的對成本敏感的應用來說,ZSP neo 是一個理想的選擇。ZSP neo 針對其性能要求采用了相應的架構:·采用基于 RISC 的架構:處理器具有靜態分支預測功能;所以程序員設計程序時無需考慮跳轉延時。·采用了 Load-Store 架構:處理器對存儲器的操作使用 load 和store 指令;操作不直接發生在存儲器中。所有其他指令均為寄存器-寄存器操作;使用寄存器節省了存儲器帶寬。采用多種load/store 指令,這樣優化了存儲器操作;同時支持32 位和16 位的數據操作。處理器允許前推的靈活架構;功能單元的結果能夠在下個周期無條件地被其他功能單元使用。
上傳時間: 2013-10-19
上傳用戶:奔跑的雪糕
Lattice 下載電纜導致單板無法上電案例一則及解決方案:Lattice下載電纜連接單板時JTAG 連接器VCC 管腳會呈現一個計算機并口竄過來的電壓,該電壓對VCC 電源來說是一個干擾電壓。若電源對該電壓敏感,則有可能造成VCC 無法正常上電。在JTAG 連接器VCC 管腳上串接一個肖特基二極管可解決此問題。
上傳時間: 2013-10-19
上傳用戶:sdlqbbla
世界著名廠家單片機簡介1.Motorola 單片機:Motorola是世界上最大的單片機廠商,品種全,選擇余地大,新產品多,在8位機方面有68HC05和升級產品68HC08,68HC05有30多個系列200多個品種,產量超過20億片.8位增強型單片機68HC11也有30多個品種,年產量1億片以上,升級產品有68HC12.16位單片機68HC16也有十多個品種.32位單片機683XX系列也有幾十個品種.近年來以PowerPC,Codfire,M.CORE等作為CPU,用DSP作為輔助模塊集成的單片機也紛紛推出,目前仍是單片機的首選品牌.Motorola單片機特點之一是在同樣的速度下所用的時鐘較Intel類單片機低的多因而使得高頻噪聲低,抗干擾能力強,更適合用于工控領域以及惡劣環境.Motorola 8位單片機過去策略是掩膜為主,最近推出OTP計劃以適應單片機的發展,在32位機上,M.CORE在性能和功耗上都勝過ARM7.2.Microchip 單片機:Microchip 單片機是市場份額增長最快的單片機.他的主要產品是16C系列8位單片機,CPU采用RISC結構,僅33條指令,運行速度快,且以低價位著稱,一般單片機價格都在1美元以下.Microchip 單片機沒有掩膜產品,全部都是OTP器件(現已推出FLASH型單片機).Microchip強調節約成本的最優化設計,是使用量大,檔次低,價格敏感的產品.3.Scenix單片機:Scenix單片機的I/O模塊最有創意.I/O模塊的集成與組合技術是單片機技術不可缺少的重要方面.除傳統的I/O功能模塊如并行I/O,URT,SPI,I2C,A/D,PWM,PLL,DTMF等,新的I/O模塊不斷出現,如USB,CAN,J1850,最具代表的是Motorola 32位單片機,它集成了包括各種通信協議在內的I/O模塊,而Scenix單片機在I/O模塊的處理上引入了虛擬I/O的概念. Scenix單片機采用了RISC結構的CPU,使CPU最高工作頻率達50MHz.運算速度接近50MIPS.有了強有力的CPU,各種I/O功能便可以用軟件的辦法模擬.單片機的封裝采用20/28引腳.公司提供各種I/O的庫函數,用于實現各種I/O模塊的功能.這些軟件完成的模塊包括多路UART,多種A/D,PWM,SPI,DTMF,FSK,LCD驅動等,這些都是通常用硬件實現起來相當復雜的模塊.4.NEC單片機:NEC單片機自成體系,以8位機78K系列產量最高,也有16位,32位單片機.16位單片機采用內部倍頻技術,以降低外時鐘頻率.有的單片機采用內置操作系統.NEC的銷售策略注重服務大客戶,并投入相當大的技術力量幫助大客戶開發新產品.5.東芝單片機:東芝單片機從4位倒64位,門類齊全.4位機在家電領域仍有較大市場.8位機主要有870系列,90系列等.該類單片機允許使用慢模式,采用32KHz時鐘功耗低至10uA數量級.CPU內部多組寄存器的使用,使得中斷響應與處理更加快捷.東芝公司的32位機采用MIPS3000 ARISC的CPU結構,面向VCD,數字相機,圖象處理市場.6.富士通單片機:富士通也有8位,16位和32位單片機,但是8位機使用的是16位的CPU內核.也就是說8位機與16位機指令相同,使得開發比較容易.8位機有名是MB8900系列,16位機有MB90系列.富士通注重服務大公司,大客戶,幫助大客戶開發產品.7.Epson 單片機:Epson公司以擅長制造液晶顯示器著稱,故Epson單片機主要為該公司生產的LCD配套.其單片機的LCD驅動做的特別好.在低電壓,低功耗方面也很有特色.目前0.9V供電的單片機已經上市,不久LCD顯示手表將使用0.5V供電.
上傳時間: 2014-12-28
上傳用戶:leyesome
82C55A是高性能,工業標準,并行I/O的LSI外圍芯片;提供24條I/O腳線。 在三種主要的操作方式下分組進行程序設計82C88A的幾個特點:(1)與所有Intel系列微處理器兼容;(2)有較高的操作速度;(3)24條可編程I/O腳線;(4)底功耗的CHMOS;(5)與TTL兼容;(6)擁有控制字讀回功能;(7)擁有直接置位/復位功能;(8)在所有I/O輸出端口有2.5mA DC驅動能力;(9)適應性強。方式0操作稱為簡單I/O操作,是指端口的信號線可工作在電平敏感輸入方式或鎖存輸出。所以,須將控制寄存器設計為:控制寄存器中:D7=1; D6 D5=00; D2=0。D7位為1代表一個有效的方式。通過對D4 D3 D1和D0的置位/復位來實現端口A及端口B是輸入或輸出。P56表2-1列出了操作方式0端口管腳功能。
上傳時間: 2013-10-26
上傳用戶:brilliantchen
家電制造業的競爭日益激烈,市場調整壓力越來越大,原始設備制造商們(OEM)為了面對這一挑戰,必須在滿足電磁兼容性的條件下,不斷降低產品的成本。由于強調成本控制,為防止由電源和信號線的瞬變所產生的電器故障而實施必要的瞬態免疫保護,對于家電設計者來說變得更具挑戰性。由于傳統的電源設計和電磁干擾(EMI)控制措施為節約成本讓路,家電設計者必須開發出新的技術來滿足不斷調整的電磁兼容(EMC)需求。本應用筆記探討了瞬態電氣干擾對嵌入式微控制器(MCU)的影響,并提供了切實可行的硬件和軟件設計技術,這些技術可以為電快速瞬變(EFT)、靜電放電(ESD)以及其它電源線或信號線的短時瞬變提供低成本的保護措施。雖然這種探討是主要針對家電制造商,但是也適用于消費電子、工業以及汽車電子方面的應用。 低成本的基于MCU 的嵌入式應用特別容易受到ESD 和EFT 影響降低性能。即使是運行在較低時鐘頻率下的微控制器,通常對快速上升時間瞬變也很敏感。這種敏感性歸咎于所使用的工藝技術。如今針對低成本8/16位的MCU的半導體工藝技術所實現的晶體管柵極長度在0.65 μm~0.25 μm范圍內。此范圍內的柵極長度能產生和響應上升時間在次納秒范圍內(或超過300 MHz 的等同帶寬)的信號。因此, MCU 能夠響應進入其引腳的ESD 或EFT 信號。除上述工藝技術之外, MCU 在ESD 或EFT 事件中的性能還會受到IC 設計及其封裝、印刷電路板(PCB)的設計、MCU 上運行的軟件、系統設計以及ESD 或EFT 波形特征的影響。各因素的相對影響(強調對最大影響的貢獻)如圖1 所示。
上傳時間: 2013-11-09
上傳用戶:Jerry_Chow
提出了一種改進的LSM-ALSM子空間模式識別方法,將LSM的旋轉策略引入ALSM,使子空間之間互不關聯的情況得到改善,提高了ALSM對相似樣本的區分能力。討論中以性能函數代替經驗函數來確定拒識規則的參數,實現了識別率、誤識率與拒識率之間的最佳平衡;通過對有限字符集的實驗結果表明,LSM-ALSM算法有效地改善了分類器的識別率和可靠性。關 鍵 詞 學習子空間; 性能函數; 散布矩陣; 最小描述長度在子空間模式識別方法中,一個線性子空間代表一個模式類別,該子空間由反映類別本質的一組特征矢量張成,分類器根據輸入樣本在各子空間上的投影長度將其歸為相應的類別。典型的子空間算法有以下三種[1, 2]:CLAFIC(Class-feature Information Compression)算法以相關矩陣的部分特征向量來構造子空間,實現了特征信息的壓縮,但對樣本的利用為一次性,不能根據分類結果進行調整和學習,對樣本信息的利用不充分;學習子空間方法(Leaning Subspace Method, LSM)通過旋轉子空間來拉大樣本所屬類別與最近鄰類別的距離,以此提高分類能力,但對樣本的訓練順序敏感,同一樣本訓練的順序不同對子空間構造的影響就不同;平均學習子空間算法(Averaged Learning Subspace Method, ALSM)是在迭代訓練過程中,用錯誤分類的樣本去調整散布矩陣,訓練結果與樣本輸入順序無關,所有樣本平均參與訓練,其不足之處是各模式的子空間之間相互獨立。針對以上問題,本文提出一種改進的子空間模式識別方法。子空間模式識別的基本原理1.1 子空間的分類規則子空間模式識別方法的每一類別由一個子空間表示,子空間分類器的基本分類規則是按矢量在各子空間上的投影長度大小,將樣本歸類到最大長度所對應的類別,在類x()iω的子空間上投影長度的平方為()211,2,,()argmax()jMTkkjpg===Σx (1)式中 函數稱為分類函數;為子空間基矢量。兩類的分類情況如圖1所示。
上傳時間: 2013-12-25
上傳用戶:熊少鋒
九.輸入/輸出保護為了支持多任務,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