.net micro framework系統架構如下圖所示,其中移植工作主要在平台抽象層(pal)和硬體抽象層(hal),大部分常用的pal層的程式已經寫好,基本上不需要什麼修改,只有hal會根據特定的硬體進行微調。不過如果新增新的裝置驅動,則hal和pal層都需要定義和重寫,假設clr層不支援類似的裝置介面,就只有通過interop介面來訪問了。後續的文章我會介紹乙個最簡單的串列埠驅動來說明mf的驅動是如何設計的,這篇文章我就先介紹一下mf中的clr執行時原理。
mf3.0 sdk
,在類物件中檢視相關介面。gpio、spi、i2c、usbclient等clr類想必windows和wince平台中的clr也不具備,這越來越顯示出tinyclr的特色了:)
mf系統目前最為人詬病的就是,它不是乙個實時系統。wince至少還算乙個軟實時系統,可mf不是,雖然v3.0版本引入了interop介面,就是為了緩解人們對嵌入式實時性的應用需要。但這不可能從根本上去解決這個矛盾。據說明年推出的mf v4.0將是乙個實時系統,這確實令人非常期待,不過時間緊迫,我真為美國微軟mf開發團隊捏把汗。
tinyclr僅乙個執行緒,接管所有的記憶體分配。採用輪詢演算法,根據執行緒的優先順序,分配最小為20ms的時間片。
執行原理圖如下:
tinyclr中的執行緒分5種優先順序:
0 = lowest 最低的
1=belownormal 比正常偏低
2=normal 常規
3=abovenormal 比整個偏高
4=highest 最高的
以兩倍的cpu時間單位作為這種優先順序的量度等級。越高階的執行緒,獲得時間片就越多。
由以上可以看出,20ms的時間片,再加上clr的垃圾**機制,確實談不上實時系統。不過,如果我們想在v3.0版本上開發乙個對時間要求比較迫切的應用該怎麼辦?也許interop是目前唯一的辦法,後續的文章我就介紹這方面的內容。
執行時異常
常見的幾種如下 nullpointerexception 空指標引用異常 classcastexception 型別強制轉換異常。illegalargumentexception 傳遞非法引數異常。arithmeticexception 算術運算異常 arraystoreexception 向陣列中...
執行時改變控制項大小執行時移動控制項MINICAR版
執行時改變控制項大小執行時移動控制項minicar版 vs2005.net編寫,網上找了找,見別人寫得挺複雜,自己寫了乙個.附件居然不能上傳.就把 發到下面吧,有個奇怪現象就是,vb6中新建工建,拖個picturebox框出來,拷入以下 即可,但vb.net中是不行的.如mousemove事件你必須...
VC執行時庫
vc專案屬性 配置屬性 c c 生成 執行時庫 可以採用的方式有 多執行緒 mt 多執行緒除錯 mtd 多執行緒dll md 多執行緒除錯dll mdd 單執行緒 ml 單執行緒除錯 mld reusable library switch library macro s defined single...