亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

Z-stack

  • 匯編+保護模式+教程

    九.輸入/輸出保護為了支持多任務,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位圖中的兩個位進行檢查,其低位是某個字節的最高位,高位是下一個字節的最低位。可見即使只要檢查兩個位,也可能需要讀取兩個字節。另一方面,最多檢查四個連續的位,即最多也只需讀取兩個字節。所以每次要讀取兩個字節。這也是在判別是否越界時再加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

  • 51單片機復位電路分析

    影響單片機系統運行穩定性的因素可大體分為外因和內因兩部分1. 外因􀁺 射頻干擾它是以空間電磁場的形式傳遞在機器內部的導體引線或零件引腳感生出相應的干擾可通過電磁屏蔽和合理的布線/器件布局衰減該類干擾􀁺 電源線或電源內部產生的干擾它是通過電源線或電源內的部件耦合或直接傳導可通過電源濾波隔離等措施來衰減該類干擾2. 內因􀁺 振蕩源的穩定性主要由起振時間頻率穩定度和占空比穩定度決定起振時間可由電路參數整定穩定度受振蕩器類型溫度和電壓等參數影響􀁺 復位電路的可靠性

    標簽: 51單片機 復位電路

    上傳時間: 2013-10-24

    上傳用戶:AbuGe

  • 單片機復位電路設計

    一概述影響單片機系統運行穩定性的因素可大體分為外因和內因兩部分1. 外因􀁺 射頻干擾它是以空間電磁場的形式傳遞在機器內部的導體引線或零件引腳感生出相應的干擾可通過電磁屏蔽和合理的布線/器件布局衰減該類干擾􀁺 電源線或電源內部產生的干擾它是通過電源線或電源內的部件耦合或直接傳導可通過電源濾波隔離等措施來衰減該類干擾2. 內因􀁺 振蕩源的穩定性主要由起振時間頻率穩定度和占空比穩定度決定起振時間可由電路參數整定穩定度受振蕩器類型溫度和電壓等參數影響􀁺 復位電路的可靠性二 復位電路的可靠性設計1. 基本復位電路復位電路的基本功能是系統上電時提供復位信號直至系統電源穩定后撤銷復位信號為可靠起見電源穩定后還要經一定的延時才撤銷復位信號以防電源開關或電源插頭分-合過程中引起的抖動而影響復位圖1 所示的RC 復位電路可以實現上述基本功能圖3 為其輸入-輸出特性但解決不了電源毛刺A 點和電源緩慢下降電池電壓不足等問題而且調整RC 常數改變延時會令驅動能力變差左邊的電路為高電平復位有效 右邊為低電平Sm 為手動復位開關 Ch 可避免高頻諧波對電的干擾

    標簽: 單片機復位 電路設計

    上傳時間: 2014-01-18

    上傳用戶:shanxiliuxu

  • 數字信號處理實踐方法

    《數字信號處理實踐方法(第二版)》根據實際工程應用和具體實例,詳細介紹了數字信號處理(DSP)領域內的基本概念和相關技術。全書共分為14章,首先講解了DSP的基本概念及其應用,并從實際的例子出發,闡述了DSP的一些基本內容,如信號的抽樣、量化及其在實時DSP上的內涵。然后,作者介紹了離散變換(DFT和FFT),離散時間信號與系統分析的工具(z變換),以及DSP的基本運算(相關和卷積),并分析了數字濾波器設計的實際問題?!稊底中盘柼幚韺嵺`方法(第二版)》還介紹了多抽樣率數字信號處理、自適應數字濾波器、譜估計及其分析等現代數字信號處理理論,最后討論了通用和專用數字信號處理器、定點DSP系統有限字長效應分析及DSP的應用和設計實例。另外,書中還提供了有關范例和實驗的MATLAB實現方法。   《數字信號處理實踐方法(第二版)》可作為通信與電子信息類專業高年級本科生和研究生的教材或教學參考書,而且對于相關學科的工程技術人員也具有很好的參考價值。

    標簽: 數字信號處理 實踐

    上傳時間: 2013-12-30

    上傳用戶:assef

  • 數字陷波器的設計

    陷波器是無限沖擊響應(IIR)數字濾波器,該濾波器可以用以下常系數線性差分方程表示:ΣΣ==−−−=MiNiiiinybinxany01)()()( (1)式中: x(n)和y(n)分別為輸人和輸出信號序列;和為濾波器系數。 iaib對式(1)兩邊進行z變換,得到數字濾波器的傳遞函數為: ΠΠΣΣ===−=−−−==NiiMiiNiiiMiiipzzzzbzazH1100)()()( (2)式中:和分別為傳遞函數的零點和極點。 izip由傳遞函數的零點和極點可以大致繪出頻率響應圖。在零點處,頻率響應出現極小值;在極點處,頻率響應出現極大值。因此可以根據所需頻率響應配置零點和極點,然后反向設計帶陷數字濾波器??紤]一種特殊情況,若零點在第1象限單位圓上,極點在單位圓內靠近零點的徑向上。為了防止濾波器系數出現復數,必須在z平面第4象限對稱位置配置相應的共軛零點、共軛極點。 izip∗iz∗ip這樣零點、極點配置的濾波器稱為單一頻率陷波器,在頻率ωo處出現凹陷。而把極點設置在零的的徑向上距圓點的距離為l-μ處,陷波器的傳遞函數為: ))1()()1(())(()(2121zzzzzzzzzHμμ−−−−−−= (3)式(3)中μ越小,極點越靠近單位圓,則頻率響應曲線凹陷越深,凹陷的寬度也越窄。當需要消除窄帶干擾而不能對其他頻率有衰減時,陷波器是一種去除窄帶干擾的理想數字濾波器。當要對幾個頻率同時進行帶陷濾波時,可以按(2)式把幾個單獨頻率的帶陷濾波器(3)式串接在一起。一個例子:設有一個輸入,它

    標簽: 數字 陷波器

    上傳時間: 2013-10-18

    上傳用戶:uuuuuuu

  • 一階IIR數字濾波器時域濾波效果模擬

    一階IIR數字濾波器時域濾波效果模擬tzl1963摘要- 供初學如何設計實際的數字濾波器參考。一,基本概念FIR Filter-有限長單位脈沖響應濾波器,傳遞函數:Σ−=−=10)()(NnnznhzH ; (1))(nh是一個有限長序列。IIR Filter-無限長單位脈沖響應濾波器,傳遞函數: ΣΣ=−=−−=NiiNiizbzazH01011)( ; (2)二,沖激響應不變法設模擬濾波器的沖激響應是h,取樣周期是T,則它的取樣沖擊響應是。又設數字濾波器的沖擊響應是。如果讓 )(tA)(n)(nThAh)(nh= (3) )(nThA這就是沖激響應不變法,物理概念就是讓數字濾波器的沖激響應等于對應的模擬濾波器沖激響應的抽樣函數。模擬濾波器的傳遞函數是它的沖激函數的拉氏變換,數字濾波器的傳遞函數的它的沖激函數的z變換。

    標簽: IIR 數字濾波器 時域 濾波

    上傳時間: 2013-11-20

    上傳用戶:gaome

  • ADXL345快速入門及范例

    ADXL345的詳細介紹資料 本模塊使用說明書。 本壓縮文件能夠利用角度傳感器對x,y,z三方的加速度值,角度值進行測量,并集成了1602對其進行顯示。 為了便于使用,我們分別將模塊單獨化,如果您有使用的意向,可以單獨摘出  angle.c 引入到您自己新建的工程中。 關于angle.c文件的內部函數使用說明。     首先為了便于使用和方便引用我們對內部函數進行了高度集成化,您在引入angle.c后直接在您的主程序中調用   dis_data();函數,可完成ADXL345芯片的測量數據,         測量數據說明: char    as_Xjiasu[6],as_Yjiasu[6],as_Zjiasu[6];    //定義3軸靜態重力加速度值的ASCII碼值 unsigned char as_Xangel[4],as_Yangel[4],as_Zangel[4];    //定義3軸角度值的ASCII碼值 as_Xjiasu[x]數組里邊我們為了您的使用直接將 加速度值轉換成了 能夠直接顯示到 1602上的ASCII碼值,同理as_Xangel     真實數據存放說明。 float jiasu_xyz[3]; angel_xyz[3];     //存放X,Y,Z 軸的靜態重力加速度,角度值 存放了 加速度和角度的真實值(未經轉換成ASCII碼的數據)--本數據可以用于其他用途,直接參與MCU內部運算等。

    標簽: ADXL 345 快速入門 范例

    上傳時間: 2013-11-17

    上傳用戶:wpwpwlxwlx

  • 新型三軸電容式加速度計的設計分析

    設計了一種新型結構的體硅工藝梳齒電容式加速度計,該設計采用2個檢測質量塊,分別檢測水平方向和垂直方向的加速度。x,y水平方向不對稱梳齒的設計,消除了z軸對水平軸向加速度的干擾,同時z軸支撐梁的設計,解決了水平軸向對z軸的干擾。

    標簽: 電容式 加速度計 設計分析

    上傳時間: 2013-10-13

    上傳用戶:1142895891

  • 用MDK生成bin格式的可執行文件

    用MDK 生成bin 文件1用MDK 生成bin 文件Embest 徐良平在RV MDK 中,默認情況下生成*.hex 的可執行文件,但是當我們要生成*.bin 的可執行文件時怎么辦呢?答案是可以使用RVCT 的fromelf.exe 工具進行轉換。也就是說首先將源文件編譯鏈接成*.axf 的文件,然后使用fromelf.exe 工具將*.axf 格式的文件轉換成*.bin格式的文件。下面將具體說明這個操作步驟:1. 打開Axf_To_Bin 文件中的Axf_To_Bin.uv2 工程文件;2. 打開Options for Target ‘Axf_To_Bin’對話框,選擇User 標簽頁;3. 構選Run User Programs After Build/Rebuild 框中的Run #1 多選框,在后邊的文本框中輸入C:\Keil\ARM\BIN31\fromelf.exe --bin -o ./output/Axf_To_Bin.bin ./output/Axf_To_Bin.axf 命令行;4. 重新編譯文件,在./output/文件夾下生成了Axf_To_Bin.bin 文件。在上面的步驟中,有幾點值得注意的是:1. C:\Keil\ARM\BIN31\表示RV MDK 的安裝目錄;2. fromelf.exe 命令的具體語法格式如下:命令的格式為:fromelf [options] input_file命令選項如下:--help 顯示幫助信息--vsn 顯示版本信息--output file 輸出文件(默認的輸出為文本格式)--nodebug 在生成的映象中不包含調試信息--nolinkview 在生成的映象中不包含段的信息二進制輸出格式:--bin 生成Plain Binary 格式的文件--m32 生成Motorola 32 位十六進制格式的文件--i32 生成Intel 32 位十六進制格式的文件--vhx 面向字節的位十六進制格式的文件t--base addr 設置m32,i32 格式文件的基地址--text 顯示文本信息文本信息的標志-v 打印詳細信息-a 打印數據地址(針對帶調試信息的映象)-d 打印數據段的內容-e 打印表達式表print exception tables-f 打印消除虛函數的信息-g 打印調試表print debug tables-r 打印重定位信息-s 打印字符表-t 打印字符串表-y 打印動態段的內容-z 打印代碼和數據大小的信息

    標簽: MDK bin 可執行文件

    上傳時間: 2013-12-17

    上傳用戶:AbuGe

  • arm7tdmi介紹

    介紹這一章介紹ARMTDMI-S 處理器包含以下小節􀁺􀀃 關于ARM7TDMI-S 處理器􀁺􀀃 ARM7TDMI-S 結構􀁺􀀃 ARM7TDMI-S 模塊內核和功能框圖􀁺􀀃 ARM7TDMI-S 指令集匯總􀁺􀀃 Rev 3a 和Rev 4 之間的差異1.1 關于ARM7TDMI-S 處理器ARM7TDMI-S 處理器是ARM 通用32 位微處理器家族的成員之一ARM 處理器具有優異的性能但功耗卻很低使用門的數量也很少ARM 結構是基于精簡指令集計算機(RISC)原理而設計的指令集和相關的譯碼機制比復雜指令集計算機要簡單得多這樣的簡化實現了􀁺􀀃 高的指令吞吐量􀁺􀀃 出色的實時中斷響應􀁺􀀃 小的高性價比的處理器宏單元

    標簽: arm7tdmi

    上傳時間: 2014-12-30

    上傳用戶:xiaowei314

主站蜘蛛池模板: 卢湾区| 呼图壁县| 子洲县| 松滋市| 易门县| 万年县| 罗田县| 凤冈县| 邻水| 弋阳县| 龙山县| 彭泽县| 阿城市| 延吉市| 永昌县| 海淀区| 古田县| 古交市| 高州市| 贞丰县| 崇信县| 鄢陵县| 大埔县| 留坝县| 周口市| 伊宁县| 六枝特区| 社旗县| 鄂温| 阳谷县| 泰顺县| 内江市| 阳山县| 达拉特旗| 图木舒克市| 青海省| 天水市| 陆河县| 东丽区| 乳山市| 襄垣县|