MF研究 TinyCLR執行時原理

2022-02-24 10:46:48 字數 914 閱讀 5773

.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...