中斷處理
作為一嵌入式的的軟件開發者
你可能最關心windows CE消息的處理規則是如何影響你的外部系統接口的時序的
windows CE通過細心設計和准確的衡量以保證其中斷時序以及其它相關的特位與嵌入式式的系統設計是適用的
嵌入式應用程序經常有時間臨界的設備接口需要
需要發現並且在一最小的規定的時間之內對設備和系統事件作出反應
為了支持這樣應用程序
windows CE包括高度優化中斷傳送
優先級和服務系統
在windows CE內核中
中斷處理分成兩個明顯的部分
中斷服務程序(ISR )以及中斷服務線索(IST )
這個系統的目的是使ISR 盡可能小和快
在硬件的層次上
每一中斷要求(IRQ )線索路與一特定的軟件ISR聯系
當被觸發時
給定的ISR除了通知內核IST的位置外
還做少量的工作
一旦IST 被初始化(盡管沒必要完成)
系統便准備好接受下一中斷並且處理下一中斷
每一個中斷有一個優先級與他們相聯系
windows CE為確定的線索時時序
利用基於優先級的時間片段算法
與每一ISR 被聯系的IST 是正常的線索
因此為IST設置優先級以滿足應用程序的時序需要是應用程序軟件開發者的責任
這種將ISR 和IST在中斷程序中分開處理最終結果是
典型的中斷等待時間被大大地減少了
在中斷程序中發生不可接受的延遲的可能性也大大減少
此外
嵌入式式軟件包和windows CE內核的特性使有可能按習慣定制中斷時序和優先級
以滿足特定應用程序的需要
Windows CE和其使用的時間臨界
實時應用程序在另一篇文章中包括比本文更詳細的內容
文章名為《 Real
time Systems with Microsoft Windows CE》
內存管理
WIN API為向開發者提供了一套完備的和一致的接口 當開發絕大部分應用程序的時候軟件開發者不需要考慮特定內存結構 然而對於許多嵌入式應用程序特別是那些有嚴格的內存資源約束或者臨界時序的要求的對內存被管理的方法有好的理解是重要的
Windows的內存的一般結構對於不同的
位Windows平台是不同的
並且特殊的細節結構在同一
位Windows操作系統下不同的處理機之間也不同
(例如
Windows NT的內存結構在X
平台上與在DEC Alpha 平台上的用法十分不同
) 對於這段的討論
我們將專門集中在Windows CE操作系統的部分中進行
Windows CE的存儲結構
像其它的 位Windows平台一樣Windows CE操作系統也有虛擬內存的特性內存總在某一時間被分配給應用程序一頁頁的大小由系統設計者決定(並在操作系統為目標硬件平台創建時被指定)例如在手持電腦內存頁大小是典型的KB 或者KB 在初始化期間(導入)Windows CE創造一個獨立的被所有程序共享的GB 虛擬地址空間當程序引用一個虛擬的地址時它被內核記錄在物理的內存上這使得應用程序軟件開發者不必去考慮目標系統內存的物理的布局雖然所有程序共享單一地址空間應用程序仍然可避免相互誤用Windows CE 通過改變每頁的保護來保護程序內存而不是分配給每一程序不同地址空間 作為應用程序開發者你可能不會太在乎目標系統的內存的物理的結構內存可以全部是隨機存取內存或者它可能包括閃存卡或者硬盤驅動和windows CE內核的特性使有可能按習慣定制中斷時序和優先級以滿足特定應用程序的需要
如果你為使用Windows CE開發一個新的硬件平台 Windows CE的面向Visual C++ 的嵌入式軟件包包括資源可以幫助你做出這些決策並且從而構成操作系統無論你的系統內存的配置如何ROM(只讀內存)將占用十分重要的地位不同於其它的位Windows操作系統Windows CE操作系統的代碼在只讀內存中並且在那個只讀內存中原地執行依據你的產品需要你也能選擇在只讀內存中放置應用程序代碼 例如Pocket WordPocket Excel和其它應用程序程序包括在手持電腦只讀內存中被提供的
存儲在ROM中的程序組在Windows CE下當地執行所以嵌入式系統的設計者能夠只占用很少的RAM用於堆棧存儲的需要相應地你的嵌入式應用程序可以利用RAM既作為程序的內存又可作臨時存儲空間
為了進一步的增加應用程序軟件的性能 Windows CE采用按需求將內存分葉操作系統僅僅需要解壓縮並且裝入基於RAM的一小部分程序准備執行ROM和基於RAM的程序的靈活性與速度意味著基於Windows CE的設備能夠被構造成各種內存結構形式
手持電腦的內存結構
典型的Windows CE的硬件平台的內存結構是與基於 Windows系統的台式電腦的內存結構十分不同的為了知道內存通常如何在Windows中被處理的 考查基於Windows CE的最普通的代表性的設備-手持電腦是很有用的在手持電腦中RAM被分割成兩個主要的部分存儲內存和程序內存向兩部分分配的RAM的量能被手持電腦用戶修改(在限制范圍內)
在手持電腦中的存儲內存類似於台式電腦的硬盤RAM它被用來存儲數據和非系統應用程序它的三段中每一段被不同的一套WIN API 訪問函數Windows CE系統寄存器類似於Windows NT和Windows 的操作系統的寄存器你能利用WIN 寄存器函數來操縱寄存器中鍵和數值
被用戶安裝的應用程序和數據在一般文件存儲段中Windows CE文件系統API 是標准WIN 文件系統的子集函數對於數據庫應用程序由Windows CE 數據庫API來存儲被管理存儲這API 對Windows CE是唯一的並且在其它的WIN 平台中沒有
程序內存被用於系統和非系統程序的堆棧存儲 非系統應用程序從存儲內存(或者或許PC卡)被取得非壓縮的並且被裝入要執行程序內存中
From:http://tw.wingwit.com/Article/program/qrs/201311/11072.html