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

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

相關(guān)信息

  • 基于ARMLinux平臺的嵌入式信息管理系統的研究與實現

    隨著經濟的發展,生活節奏的加快以及信息技術的進步,人們越來越多的借助高性能的移動手持設備來完成日常工作,目前手持設備處理性能有了很大的提高,其所能處理的數據量也越來越大,傳統的文件系統管理數據方式已經越來越滿足不了需求,嵌入式數據庫就隨之誕生,為手持設備提供專業的數據管理。嵌入式數據庫的輕量級、被軟件產品包含、無需人工數據庫管理等特點使其適合被應用于各類嵌入式系統及手持設備中。使用嵌入式數據庫與使用文件系統進行客戶端數據管理相比更加靈活方便、可以高效地實時更新客戶端本地數據。使用數據庫完成大量數據的存儲和管理,同圖形界面軟件結合構成嵌入式系統應用開發的支撐系統。 SQLite數據庫作為一種開源的嵌入式數據庫,具有體積小,速度快,存儲量大,API使用方便等諸多的優點,目前已經成為被廣泛應用的嵌入式數據庫之一。同樣的,嵌入式圖形界面MINIGUI的開源版本也具有體積小,控件比較豐富,編程難度不高等優點,受到廣大嵌入式開發者的喜愛。 本文的主要任務是將MINIGUI和SQLite進行有針對的裁剪或添加部分功能后移植到開發板上,然后將圖形界面和數據庫相結合在arm—linux平臺上建立一個具有基本功能的嵌入式信息管理系統。首先分析了系統所使用的硬件平臺并研究了軟件環境的搭建過程,包括移植Bootloader、移植linux內核、建立NFS網絡文件系統進行程序調試,然后分別給出了嵌入式圖形界面MINIGUI和嵌入式數據庫SQLite移植到開發板的過程和它們各自的開發技術,最后詳細研究了如何在MINIGUI中連接SQLite數據庫,從而將二者結合起來編程以實現本系統并給出了系統在開發過程中所遇到的關鍵問題的解決方案,包括屏幕旋轉及校正、設計軟鍵盤進行屏幕輸入、利用SQLite存儲圖片文件。從而證明了當前條件下在嵌入式系統中實現一個比較簡單的信息管理系統是完全可行的。最后討論了該領域存在的一些問題和今后需要進一步研究的課題。

    標簽: ARMLinux 嵌入式 信息管理系統

    上傳時間: 2013-07-10

    上傳用戶:visit8888

  • 實時三維信息獲取系統

    三維彩色信息獲取系統目的是獲取對象的三維空間坐標和顏色信息。它是計算機視覺研究的重要內容,也是當前信息科學研究中的一個重要熱點。 本文首先介紹了三維信息獲取技術的意義和實時可重構三維激光彩色信息獲取系統總體方案。該方案合理劃分了系統的圖像處理任務,充分地利用了擁有的硬、軟件資源。闡述了基于FPGA處理器的硬件系統結構及其工作原理和系統工作時序。 本文還研究了圖像處理系統中的數字邏輯設計,總結出了較完整、規范化的設計流程和方法,介紹了從圖像處理算法到可編程邏輯器件的規范化映射方法,總結了在視頻系統中的高級設計技巧,包括并行流水線技術和循環結構的硬件實現方式等。 為了說明提出的設計方法,本文分析了基于自適應閾值的結構光條紋中心的方向模板快速檢測算法的硬件實現。該算法是把自適應閾值法與可變方向模板法相結合,具有穩定性好、精度高、計算簡單、數據存儲量小、實現速度快的特點,此外,該方法有利于硬件快速實現。實踐證明這種方法是實用的、有效的。 本文的重點在于研制了具有完全自主知識產權的實時可重構三維激光彩色信息獲取系統中視頻圖像處理專用集成電路。該集成電路是實現系統快速算法的核心,使用現場可編程器FPGA器件EPlK50實現提取激光線、提取人頭輪廓線和提取中心顏色線算法;該集成電路還要實現系統所需的控制邏輯。控制部分包括將視頻采集輸出端口信號轉化為RGB真彩色信號的數據鎖存模塊、各FIFO緩存器的輸入輸出控制模塊和系統需要的其它信號控制模塊。提出提取輪廓線快速算法,即由FPGA處理器與主機交互式共同快速完成提取人頭正側影輪廓線算法。該專用集成電路研制是整個實時可重構三維激光彩色信息獲取系統實現的關鍵。

    標簽:

    上傳時間: 2013-07-23

    上傳用戶:lguotao

  • 高頻感應加熱電源中用傳統的模擬鎖相環跟蹤頻率所存在的問題

    針對高頻感應加熱電源中用傳統的模擬鎖相環跟蹤頻率所存在的問題,提出一種非常適合于高頻感應加熱的\r\n新型的數字鎖相環。使用FPGA 內底層嵌入功能單元中的數字鎖相環74HCT297 ,并添加少量的數字電路來實現。最后利\r\n用仿真波形驗證該設計的合理性和有效性。整個設計負載范圍寬、鎖相時間短,現已成功應用于100 kHz/ 30 kW 的感應加\r\n熱電源中。

    標簽: 高頻感應 加熱電源 模擬鎖相環 頻率

    上傳時間: 2013-08-22

    上傳用戶:nairui21

  • 關于數字鎖相環的一點東西

    關于數字鎖相環的一點東西,可以下來看看\r\n

    標簽: 數字鎖相環

    上傳時間: 2013-08-26

    上傳用戶:7891

  • 數據管理:包括司機基本信息、汽車基本信息、車輛事故信息、車輛維修信

    1.數據管理:包括司機基本信息、汽車基本信息、車輛事故信息、車輛維修信\r\n息等的管理;\r\n2.派車運營記錄管理:登記派車的情況、進行派車修改;\r\n來確定庫存是否有需要的車型,為賣車做好準備;\r\n3.查詢管理:能夠根據車輛編號和派車日期查詢當日的派車情況,并能進行統\r\n計派車次數等;\r\n 4.系統管理:用戶管理和系統退出等。\r\n

    標簽: 數據管理 汽車

    上傳時間: 2013-09-09

    上傳用戶:wanqunsheng

  • p-n結的隧道擊穿模型研究

    在理論模型的基礎上探討了電子勢壘的形狀以及勢壘形狀隨外加電壓的變化, 并進行定量計算, 得出隧穿電壓隨雜質摻雜濃度的變化規律。所得結論與硅、鍺p-n 結實驗數據相吻合, 證明了所建立的理論模型在定量 研究p-n 結的隧道擊穿中的合理性與實用性。該理論模型對研究一般材料或器件的隧道擊穿具有重要的借鑒意義。

    標簽: p-n 隧道 擊穿 模型研究

    上傳時間: 2013-10-31

    上傳用戶:summery

  • 時鐘分相技術應用

    摘要: 介紹了時鐘分相技術并討論了時鐘分相技術在高速數字電路設計中的作用。 關鍵詞: 時鐘分相技術; 應用 中圖分類號: TN 79  文獻標識碼:A   文章編號: 025820934 (2000) 0620437203 時鐘是高速數字電路設計的關鍵技術之一, 系統時鐘的性能好壞, 直接影響了整個電路的 性能。尤其現代電子系統對性能的越來越高的要求, 迫使我們集中更多的注意力在更高頻率、 更高精度的時鐘設計上面。但隨著系統時鐘頻率的升高。我們的系統設計將面臨一系列的問 題。 1) 時鐘的快速電平切換將給電路帶來的串擾(Crosstalk) 和其他的噪聲。 2) 高速的時鐘對電路板的設計提出了更高的要求: 我們應引入傳輸線(T ransm ission L ine) 模型, 并在信號的匹配上有更多的考慮。 3) 在系統時鐘高于100MHz 的情況下, 應使用高速芯片來達到所需的速度, 如ECL 芯 片, 但這種芯片一般功耗很大, 再加上匹配電阻增加的功耗, 使整個系統所需要的電流增大, 發 熱量增多, 對系統的穩定性和集成度有不利的影響。 4) 高頻時鐘相應的電磁輻射(EM I) 比較嚴重。 所以在高速數字系統設計中對高頻時鐘信號的處理應格外慎重, 盡量減少電路中高頻信 號的成分, 這里介紹一種很好的解決方法, 即利用時鐘分相技術, 以低頻的時鐘實現高頻的處 理。 1 時鐘分相技術 我們知道, 時鐘信號的一個周期按相位來分, 可以分為360°。所謂時鐘分相技術, 就是把 時鐘周期的多個相位都加以利用, 以達到更高的時間分辨。在通常的設計中, 我們只用到時鐘 的上升沿(0 相位) , 如果把時鐘的下降沿(180°相位) 也加以利用, 系統的時間分辨能力就可以 提高一倍(如圖1a 所示)。同理, 將時鐘分為4 個相位(0°、90°、180°和270°) , 系統的時間分辨就 可以提高為原來的4 倍(如圖1b 所示)。 以前也有人嘗試過用專門的延遲線或邏輯門延時來達到時鐘分相的目的。用這種方法產生的相位差不夠準確, 而且引起的時間偏移(Skew ) 和抖動 (J itters) 比較大, 無法實現高精度的時間分辨。 近年來半導體技術的發展, 使高質量的分相功能在一 片芯片內實現成為可能, 如AMCC 公司的S4405, CY2 PRESS 公司的CY9901 和CY9911, 都是性能優異的時鐘 芯片。這些芯片的出現, 大大促進了時鐘分相技術在實際電 路中的應用。我們在這方面作了一些嘗試性的工作: 要獲得 良好的時間性能, 必須確保分相時鐘的Skew 和J itters 都 比較小。因此在我們的設計中, 通常用一個低頻、高精度的 晶體作為時鐘源, 將這個低頻時鐘通過一個鎖相環(PLL ) , 獲得一個較高頻率的、比較純凈的時鐘, 對這個時鐘進行分相, 就可獲得高穩定、低抖動的分 相時鐘。 這部分電路在實際運用中獲得了很好的效果。下面以應用的實例加以說明。2 應用實例 2. 1 應用在接入網中 在通訊系統中, 由于要減少傳輸 上的硬件開銷, 一般以串行模式傳輸 圖3 時鐘分為4 個相位 數據, 與其同步的時鐘信號并不傳輸。 但本地接收到數據時, 為了準確地獲取 數據, 必須得到數據時鐘, 即要獲取與數 據同步的時鐘信號。在接入網中, 數據傳 輸的結構如圖2 所示。 數據以68MBös 的速率傳輸, 即每 個bit 占有14. 7ns 的寬度, 在每個數據 幀的開頭有一個用于同步檢測的頭部信息。我們要找到與它同步性好的時鐘信號, 一般時間 分辨應該達到1ö4 的時鐘周期。即14. 7ö 4≈ 3. 7ns, 這就是說, 系統時鐘頻率應在300MHz 以 上, 在這種頻率下, 我們必須使用ECL inp s 芯片(ECL inp s 是ECL 芯片系列中速度最快的, 其 典型門延遲為340p s) , 如前所述, 這樣對整個系統設計帶來很多的困擾。 我們在這里使用鎖相環和時鐘分相技術, 將一個16MHz 晶振作為時鐘源, 經過鎖相環 89429 升頻得到68MHz 的時鐘, 再經過分相芯片AMCCS4405 分成4 個相位, 如圖3 所示。 我們只要從4 個相位的68MHz 時鐘中選擇出與數據同步性最好的一個。選擇的依據是: 在每個數據幀的頭部(HEAD) 都有一個8bit 的KWD (KeyWord) (如圖1 所示) , 我們分別用 這4 個相位的時鐘去鎖存數據, 如果經某個時鐘鎖存后的數據在這個指定位置最先檢測出這 個KWD, 就認為下一相位的時鐘與數據的同步性最好(相關)。 根據這個判別原理, 我們設計了圖4 所示的時鐘分相選擇電路。 在板上通過鎖相環89429 和分相芯片S4405 獲得我們所要的68MHz 4 相時鐘: 用這4 個 時鐘分別將輸入數據進行移位, 將移位的數據與KWD 作比較, 若至少有7bit 符合, 則認為檢 出了KWD。將4 路相關器的結果經過優先判選控制邏輯, 即可輸出同步性最好的時鐘。這里, 我們運用AMCC 公司生產的 S4405 芯片, 對68MHz 的時鐘進行了4 分 相, 成功地實現了同步時鐘的獲取, 這部分 電路目前已實際地應用在某通訊系統的接 入網中。 2. 2 高速數據采集系統中的應用 高速、高精度的模擬- 數字變換 (ADC) 一直是高速數據采集系統的關鍵部 分。高速的ADC 價格昂貴, 而且系統設計 難度很高。以前就有人考慮使用多個低速 圖5 分相技術應用于采集系統 ADC 和時鐘分相, 用以替代高速的ADC, 但由 于時鐘分相電路產生的相位不準確, 時鐘的 J itters 和Skew 比較大(如前述) , 容易產生較 大的孔徑晃動(Aperture J itters) , 無法達到很 好的時間分辨。 現在使用時鐘分相芯片, 我們可以把分相 技術應用在高速數據采集系統中: 以4 分相后 圖6 分相技術提高系統的數據采集率 的80MHz 采樣時鐘分別作為ADC 的 轉換時鐘, 對模擬信號進行采樣, 如圖5 所示。 在每一采集通道中, 輸入信號經過 緩沖、調理, 送入ADC 進行模數轉換, 采集到的數據寫入存儲器(M EM )。各個 采集通道采集的是同一信號, 不過采樣 點依次相差90°相位。通過存儲器中的數 據重組, 可以使系統時鐘為80MHz 的采 集系統達到320MHz 數據采集率(如圖6 所示)。 3 總結 靈活地運用時鐘分相技術, 可以有效地用低頻時鐘實現相當于高頻時鐘的時間性能, 并 避免了高速數字電路設計中一些問題, 降低了系統設計的難度。

    標簽: 時鐘 分相 技術應用

    上傳時間: 2013-12-17

    上傳用戶:xg262122

  • (N+X)熱插拔模塊并聯逆變電源應用前景

    隨著我國通信、電力事業的發展,通信、電力網絡的規模越來越大,系統越來越復雜。與之相應的對交流供電的可靠性、靈活性、智能化、免維護越來越重要。在中國通信、電力網絡中,傳統的交流供電方案是以UPS或單機式逆變器提供純凈不間斷的交流電源。由于控制技術的進步、完善,(N+X)熱插拔模塊并聯逆變電源已經非常成熟、可靠;在歐美的通信、電力發達的國家,各大通信運營商、電力供應商、軍隊均大量應用了這種更合理的供電方案。與其它方案相比較,(N+X)熱插拔模塊并聯逆變電源具有以下明顯的優點。

    標簽: 熱插拔 模塊 并聯 應用前景

    上傳時間: 2014-03-24

    上傳用戶:alan-ee

  • c語言編程軟件vc6.0使用教程_vc6.0怎么用

    c語言編程軟件vc6.0使用教程,附件包含二個教程文件,VC++6.0培訓教程完整版及VC6.0介紹。 Visual C++ 6.0,簡稱VC或者VC6.0,是微軟的一款C++編譯器,將“高級語言”翻譯為“機器語言(低級語言)”的程序。Visual C++是一個功能強大的可視化軟件開發工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業程序員進行軟件開發的首選工具。雖然微軟公司推出了 Visual C++.NET(Visual C++7.0),但它的應用有很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實際中,更多的是以Visual C++6.0為平臺。 vc6.0使用你首先要打開VC6.0界面,一般用得較多的是Win32控制臺應用程序(源程序,擴展名.cpp), 步驟是:(先工程—后文件—編譯—連接---運行) 1,建立一個工程,“文件”——“新建”,出現下面界面:選擇“Win32 Console Application”(控制臺應用程序,左邊倒數第三個),命名工程名稱,選擇保存位置。 點擊“確定”,進入下一步,看到如下提示界面: 建立一個空工程,對應其他需要的你一可以建立別的工程;點擊“完成”,之后 顯示你創建的工程的信息。 2,再在有一個的工程的條件下,我們再建立一個源文件; “文件”——“新建”(快捷鍵Ctri+N),出現: 建立源文件,選擇“C++ Source ”,一般都是建立這種文件的(適用在當文件中適用)如果要建立頭文件的話,選擇“C/C++ Header File”,(適用在多文件工程中使用)命名,文件名稱,點擊“確定”,之后: 進入編輯區,在主界面編寫代碼:如下編寫完之后呢: 可以按編譯按鈕 調試程序,看看有沒有錯誤,有的話改正,沒有的話就可以再按連接按鈕 檢查連接(多文件工程時常用,檢查文件間是否正常連接),最后,點運行按鈕 ,就可以運行了。 如果是您有代碼如:cpp文件,或 .h 文件,想添加都VC6.0里來測試的話,可以這樣做: 首先,要理解一下 文件擴展名為:cpp和.h 文件擴張名是.h,代表的是頭文件,一般是書寫一些函數原型,以及一些在整個程序中常用到的結構體,頻繁使用的函數說明,定義等等; 文件擴張名為,cpp的,是C++中的源文件,也是最常用到的文件,每建立一個工程都要至少一個源文件(至少要有一個函數入口——主函數main() ),包含了核心代碼; 建立與運行說明:(以VC 6.0編譯器為例,其他編譯器類似) 首先,打開VC 6.0編譯環境; 在菜單欄——文件(的下拉菜單中選擇“新建”),在彈出的選擇窗口中,選擇 Win32 Console Application(控制臺應用程序) ,在填寫工程名稱,選擇一個程序保存路徑, 點擊“完成”,查看工程信息。 在點擊“確定”,就建立一個簡單的工程了。 再點擊左邊的工程信息右下角的“FileView”選項; 可以看到你新建的工程,再雙擊你新建的工程名 可以查看工程的信息。 在雙擊工程文件,在這里是 777.files,可以看到該工程的包含的文件。 其中,Source Files 為包含所有工程的源文件 Header Files 為包含所有工程的頭文件 在源文件選項“Source Files ”,右鍵單擊中的“添加目錄到工程”,添加你要打開的擴展名為 .cpp的源文件。在頭文件選項“ Header Files”,右鍵單擊中的“添加目錄到工程”,添加你要打開的擴展名為 . h的頭文件。添加完你所有的頭文件和源文件之后,檢查一下是否添加完畢,之后就可以編譯了。 其中第一個按鈕  為編譯按鈕,可以找出工程的錯誤信息,有錯誤修改,沒錯誤就可以跳到連接 ,編譯右邊的按鈕  ,即第三個按鈕(多文件工程一定要連接,查看文件是否準確相連接) 當編譯,連接都沒有錯誤時,可以按運行按鈕  ,即可以運行了。 相關資料:vc6.0中文綠色版下載

    標簽: 6.0 vc c語言 編程軟件

    上傳時間: 2013-10-30

    上傳用戶:tianjinfan

  • 匯編+保護模式+教程

    九.輸入/輸出保護為了支持多任務,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

主站蜘蛛池模板: 海宁市| 渭源县| 怀集县| 江源县| 淮安市| 博湖县| 康定县| 靖远县| 肥东县| 尚义县| 清水河县| 民权县| 武宣县| 大洼县| 保定市| 海伦市| 汉寿县| 中西区| 昭平县| 涪陵区| 大丰市| 当涂县| 武胜县| 镇康县| 磐安县| 郸城县| 时尚| 邛崃市| 会宁县| 井冈山市| 界首市| 申扎县| 邮箱| 正宁县| 姜堰市| 呈贡县| 张家口市| 太仆寺旗| 黔西县| 万山特区| 时尚|