究竟是什麼原因造成現在的局面呢?我想可能有如下幾點:一、.Net Micro Framework剛由微軟研究院轉入到産品部門,并且已經開源,微軟對其宣傳力度勢必減弱(畢竟不直接賺錢了),而對大公司來說要想使基于該平台的産品熱賣,需要做大量的前期宣傳才行,現在恰逢經濟危機,遠水不解近渴,是以這類産品也隻好暫緩出爐;二、對小公司來說,一般有能力做這種平台移植的開發人員少之又少,對這種寄望于未來的開發,小公司更是希望跟在大公司後面,大樹底下好乘涼,驅動代碼能借用就借用,否則所有的驅動自己全新開發,其研發費用非一般小公司所願意承擔的;三、對嵌入式開發愛好者來說,由于.Net Micro Framework的移植需要借助RVDS、MDK等開發工具,這些工具價格不菲,也不是一般嵌入式愛好者所能承受的,而舍棄這些工具,采用最基本的調試手段,要想完成移植将是非常困難的。
是以要想解決.Net Micro Framework的推廣問題,無非有兩點:一是要有非常便宜的開發闆,二是要提供基于該開發闆上的SDK。
說真的,幾年前剛接觸到.Net Micro Framework,便被其特性深深吸引,直到現在仍對其熱情不減,是以特别希望由更多的嵌入式開發愛好者參與其中,由于前段時間一直在做MSN Direct的工作,沒有時間更多地關注.Net Micro Framework,現在MSN Direct工作已了結,是以我的精力更多的轉到.Net Micro Framework來。為了使更多人參與.Net Micro Framework開發,是以我打算用業餘時間在一款相對便宜的開發闆上進行.Net Micro Framework移植工作,這樣一旦移植成功,更多的嵌入式開發愛好者便有條件加入其中,無論是學習底層驅動開發,還是學習C#應用程式開發都有了一個比較好的平台。
我選擇的開發闆和開發工具如下:
開發闆:EM-STM3210E(ST的晶片 STM32F103ZE),開發工具:MDK3.1
(其實這款開發平台并不太适合直接移植MF,因為其SRAM/SDRAM太小了,是以TinyCLR也隻能運作在NOR Flash上,其性能會受到一定的影響)
為什麼選擇EM-STM3210E?是因為STM32F103ZE其CPU核心基于Cortex-M3,為什麼選擇Cortex-M3,那是因為Cortex-M3代表了ARM最先進的技術,此外基于Cortex-M3的晶片價格便宜、性能強勁、并且省電,其新的中斷模式更是适合.Net Micro Framework的架構,可以大大提高.Net Micro Framework的實時性能,此外Cortex-M3不含MMU,也是.Net Micro Framework所應該支援的平台。不過官方.Net Micro Framework對Cortex-M3提供支援很不夠,代碼中僅含有部分平台配置檔案,而和硬體相關的代碼卻幾乎沒有,是以移植起來是非常困難的。
另外網友對S3C2410(或S3C2440)的呼聲也是蠻高的,不過我手邊沒有基于S3C2410的開發闆,并且我認為Cortex-M3是未來ARM重點發展方向,也是.Net Micro Framework未來能否興盛的一個關鍵(台灣一家公司MF V3已經Porting到基于Cortex-M3開發闆上,目前正在Porting MF V4),是以我優先考慮采用Cortex-M3的晶片,不過等Cortex-M3的工作告一段落,我也會考慮基于S3C2410的平台,同時也希望網友推薦一款比較便宜,應用比較廣的開發闆(當然更希望開發愛好者參與S3C2410平台的移植工作)。
為什麼選擇MDK?是因為深圳英蓓特公司對其推廣力度比較大,其本地化工作也做的不錯,和RVDS相比,價格也便宜的多,并且關于EM-STM3210E開發闆的很多例子都是基于MDK的(不過RVDS雖然貴,但其調試能力卻尤勝一籌,特别在最開始調試的時候,而MDK在這方面表現欠佳,調試很容易失敗,是以有條件的開發者也可以選擇RVDS)。
好了,閑言少叙,我們開始我們的第一步移植工作:環境搭建。
1、安裝MDK或RVDS開發工具
目前.Net Micro Framework支援如下ARM開發工具:ADI5.0、GCC4.2.1 for Arm、MDK3.1、MDK3.80a、SHC9.2、GCCOP4.2、ADS1.2、RVDS3.0、RVDS3.1、RVDS4.0;我所熟悉的開發工具MDK3.1、RVDS3.1、RVDS4.0,我覺得MDK最好用,RVDS最穩定。
2、下載下傳并安裝VS 2008 SP1
.Net Micro Framework支援VS 2008 Express版本,這是一款免費的開發工具,不過我沒有使過,有條件的朋友可以優先考慮安裝專業版或企業版。
VS 2008 Express sp1的下載下傳位址如下:
<a href="http://www.microsoft.com/express/download/">http://www.microsoft.com/express/download/</a>
3、下載下傳.NET Micro Framework 4.0 Porting Kit源碼包
如果不需要TCP/IP功能,.NET Micro Framework 4.0 TCP/IP and SSL Companion Libraries for ARM Instruction Set可以不下載下傳,因為其體積巨大,太占硬碟空間了,.NET Micro Framework 4.0 Cryptography Companion Libraries也可以根據需要酌情下載下傳。
.NET Micro Framework 4.0 Porting Kit下載下傳位址:
<a href="http://www.microsoft.com/downloads/details.aspx?familyid=16FA5D31-A583-4C0D-AF74-F4D5E235D5BC&displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=16FA5D31-A583-4C0D-AF74-F4D5E235D5BC&displaylang=en</a>
01、client_v4_0_rtm/CLR/Jitter 相對緊湊的MSIL虛拟機
02、client_v4_0_rtm/CLR/Tools/PlatformDesigner 平台定制
03、client_v4_0_rtm/DeviceCode/PendingChanges 下一版本将要出現的一些技術
04、client_v4_0_rtm/DeviceCode/UnitTests 單元測試
05、client_v4_0_rtm/Framework/CorDebug 核心調試程式
06、client_v4_0_rtm/Framework/Subset_of_VisualBasic VB文法支援
07、client_v4_0_rtm/Framework/Tools/BBCoverWrapper
08、client_v4_0_rtm/Framework/Tools/BuildTasksInternal BuildTask核心代碼
09、client_v4_0_rtm/Framework/Tools/ConnectionManager
10、client_v4_0_rtm/Framework/Tools/ConnectionManagerHost
11、client_v4_0_rtm/Framework/Tools/WiXLib
12、client_v4_0_rtm/Framework/UnitTest 單元測試
13、client_v4_0_rtm/OEM OEM廠商資料
14、client_v4_0_rtm/Product/AllSDK VS200x項目和工程模闆
15、client_v4_0_rtm/Product/PDC09 windows Azure相關示例
16、client_v4_0_rtm/setup SDK安裝制作目錄
17、client_v4_0_rtm/Solutions/imxs_test
18、client_v4_0_rtm/Test/Platform/Desktop
19、client_v4_0_rtm/Test/Platform/Setup
20、client_v4_0_rtm/Test/Platform/Tools/AutomationTasks
21、client_v4_0_rtm/Test/Platform/Tools/Lab
22、client_v4_0_rtm/Test/Platform/Tools/MFDpwsTestCaseGenerator
23、client_v4_0_rtm/Test/Platform/Tools/MFTestEmulator
24、client_v4_0_rtm/Test/Platform/Tools/TestTemplates
25、client_v4_0_rtm/tools/*** 多若幹檔案和目錄
26、client_v4_0_rtm/ue 幫助檔案
其中我覺得尤為重要的是client_v4_0_rtm/Framework/CorDebug,因為其正是.Net Micro Framework的核心精華所在,就是它為應用程式提供了強大而靈活的調試功能。
下載下傳并安裝.NET Micro Framework 4.0 Porting Kit,安裝後的源碼大小大概90幾兆的樣子。
4、設定編譯工具路徑及相關編譯環境資訊
進入指令行模式(以超級使用者模式運作),輸入以下指令并運作:
setenv_MDK3.1.cmd
當然如果你的開發工具是RVDS,你可以運作setenv_31.cmd或setenv_40.cmd。
5、編譯平台支援庫
msbuild pk.proj /t:build /p:flavor=release;memory=ram
其實這一步也可以省略,在下一步的編譯目标平台指令中,如果這部分的工作沒有做,下一步的編譯指令便涵蓋這一步的工作。
對公開版本,這一步僅編譯出一些内部函數支援庫,但對其内部版本來說(對應的項目檔案為sdk.dirproj),則可以編譯出MicroFrameworkSDK.MSI和MicroFrameworkTestKit.MSI。
6、編譯目标平台
由于我們目前沒有建構關于EM-STM3210E平台的任何代碼,是以為了檢驗我們下載下傳的代碼是否能夠正常編譯,我們先選擇一個已建構好的平台:SAM9261_EK,相對應的編譯指令如下:
Msbuild ./Solutions/SAM9261_EK/dotNetMF.proj /t:build /p:flavor=debug;memory=ram
7、編譯結果
編譯結果如下,如果你手邊恰好有SAM9261_EK的開發闆,你就可以下載下傳下面三種任何一個檔案,啟動後,你就可以進行MF的應用開發工作了。
./BuildOutput/ARM/MDK3.1/le/RAM/debug/SAM9261_EK/bin/tinyclr.axf
./BuildOutput/ARM/MDK3.1/le/RAM/debug/SAM9261_EK/bin/tinyclr.bin
./BuildOutput/ARM/MDK3.1/le/RAM/debug/SAM9261_EK/bin/tinyclr.hex
8、下載下傳.NET Micro Framework 4.0 SDK
要開發應用程式,還必須下載下傳.NET Micro Framework 4.0 SDK,下載下傳位址如下:
<a href="http://www.microsoft.com/downloads/details.aspx?familyid=77DBFC46-14A1-4DCF-A809-EDA7CCFE376B&displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=77DBFC46-14A1-4DCF-A809-EDA7CCFE376B&displaylang=en</a>
如果僅僅是學習.NET Micro Framework應用程式開發,其實僅下載下傳該SDK即可,不需要什麼複雜的.NET Micro Framework工作,不過要學習IO、SPI、I2C及序列槽開發,就需要下載下傳我開發的MF模拟器了,下載下傳位址如下:
<a href="http://blog.csdn.net/yefanqiu/archive/2009/12/06/4950466.aspx">http://blog.csdn.net/yefanqiu/archive/2009/12/06/4950466.aspx</a>
關于開發環境的搭建,我先說這麼多,下一步我們就要真刀真槍,實際去建構EM-STM3210E平台的相關代碼了。