1. gzyueqian
      13352868059

      Dot NET:嵌入式開(kāi)發(fā)平臺(tái)

      更新時(shí)間: 2008-03-06 09:29:07來(lái)源: 粵嵌教育瀏覽量:2288

        近一次乘飛機(jī)旅行時(shí),我與一位同行的軟件工程經(jīng)理談到了尋找嵌入式開(kāi)發(fā)人員所面臨的挑戰(zhàn)。她告訴我她擁有一個(gè)12名開(kāi)發(fā)人員的開(kāi)發(fā)團(tuán)隊(duì),但其中只有三名精通驅(qū)動(dòng)程序、主板支持包和boot-loader的開(kāi)發(fā)。其余下九人,也都是的應(yīng)用開(kāi)發(fā)人員,但均缺乏低層代碼編寫經(jīng)驗(yàn)。我問(wèn)她是否聽(tīng)說(shuō)過(guò)Microsoft .NET Micro Framework。

        Microsoft的.NET Micro Framework與C#語(yǔ)言、加上Microsoft的Visual Studio,為工程師及編程人員的嵌入式系統(tǒng)設(shè)計(jì)提供了更多的選擇余地。由于工程師不必編寫boot-loader、驅(qū)動(dòng)程序或其它低級(jí)代碼,產(chǎn)品設(shè)計(jì)團(tuán)隊(duì)就可以縮短其設(shè)計(jì)時(shí)間。有了.NET Micro Framework,新接觸嵌入式系統(tǒng)設(shè)計(jì)的工程師就可直接編寫代碼,無(wú)需特殊的工具或深入了解處理器及操作系統(tǒng)架構(gòu)。

        NET Micro Framework在微軟研究院有較深的根源,在那里,計(jì)算機(jī)科學(xué)家們致力于簡(jiǎn)化較小、低功耗設(shè)計(jì)開(kāi)發(fā)的研究。他們確信未來(lái)的電子設(shè)備將使用32位的處理器、電池、網(wǎng)絡(luò)及新的協(xié)議,如Z-Wave及ZigBee等。為了設(shè)計(jì)更多的網(wǎng)絡(luò)嵌入式設(shè)備,這些開(kāi)發(fā)人員的數(shù)量及其工具效率都要大幅度地提高。

        Microsoft研究團(tuán)隊(duì)從零開(kāi)始,研究出.NET Micro Framework平臺(tái)以解決這種問(wèn)題。這種框架并不是某個(gè)舊軟件或工具的簡(jiǎn)縮。不象Windows Embedded CE工其它嵌入式操作系統(tǒng),.NET Micro Framework并不需要存儲(chǔ)器管理部件(MMU)。所以開(kāi)發(fā)人員可以在低功耗、低成本的ARM7處理器,及ARM9、Blackfin處理器上使用這種框架。這種框架軟件只需要幾百kbytes的RAM或Flash/ROM存儲(chǔ)容量。通過(guò)比較,Windows Embedded CE的托管代碼環(huán)境需要約10-12 Mbytes的存儲(chǔ)容量。依賴于.NET應(yīng)用編程接口(API)的設(shè)備之需要較少的存儲(chǔ)容量,降低了產(chǎn)品成本。

        .NET Micro Framework為應(yīng)用編程提供了一種C#托管代碼環(huán)境。C#語(yǔ)言學(xué)習(xí)、使用都比較容易,比C或C++更能提高編程人員的生產(chǎn)效率。托管代碼環(huán)境意味著開(kāi)發(fā)人員不必跟蹤內(nèi)在覆寫或錯(cuò)誤指向的指針等問(wèn)題,這些問(wèn)題根本就不存在。然后,C#代碼中的垃圾回收以非確定的方式進(jìn)行,開(kāi)發(fā)人員不能創(chuàng)建實(shí)時(shí)的應(yīng)用在.NET Micro Framework中運(yùn)行。

        Microsoft將.NET Micro Framework集成到其Visual Studio 2005包中,所以入熟悉該軟件的編程人員可以迅速地開(kāi)始一個(gè)項(xiàng)目。在2007年2月,Microsoft發(fā)布了.NET Micro Framework的第二版,適于基本的嵌入應(yīng)用開(kāi)發(fā)。Digi International、Freescale、Embedded Fusion及其它企業(yè)提供了與.NET Micro Framework兼容的硬件,開(kāi)發(fā)人員可以迅速地開(kāi)始有用的設(shè)計(jì)。(參見(jiàn) “Get a Hardware Head Start”.)

        Microsoft初在其智能個(gè)人對(duì)象技術(shù)(SPOT)數(shù)字手表中應(yīng)用了.NET Micro Framework。這些采用ARM7TDMI處理器的數(shù)字手表可通過(guò)FM副載波信號(hào)接收不斷更新的新聞、體育、氣候及交通信息。該SPOT數(shù)字手表項(xiàng)目對(duì).NET Micro Framework進(jìn)行了一次實(shí)際測(cè)試,幫助了Microsoft的研究人員改進(jìn)框架軟件。

        NET Micro Framework的架構(gòu)由幾部分組成(圖1)。該框架從上至下為開(kāi)發(fā)人員提供多種內(nèi)容。盡管堆棧有許多層,Microsoft的.NET Micro Framework學(xué)習(xí)與使用起來(lái)還是比較容易的。堆棧的頂部是開(kāi)發(fā)人員或用戶應(yīng)用及庫(kù)。一般來(lái)說(shuō),嵌入式系統(tǒng)開(kāi)發(fā)人員可編寫只能在此級(jí)別與框架交互的程序。
               


        NET Micro Framework只提供了用于標(biāo)準(zhǔn)臺(tái)式PC及服務(wù)器應(yīng)用的較大Microsoft的.NET Framework中的部分特性。但是這部分特性可實(shí)施適合于嵌入式設(shè)備的功能。這種方法允許開(kāi)發(fā)人員在可能的情況下使用現(xiàn)有的代碼,不必編寫大量的的嵌入式.NET Micro Framework代碼。

        類庫(kù)層通常簡(jiǎn)稱為庫(kù),包括.NET及Windows Presentation Foundation (WPF)庫(kù)。包含在.NET Micro Framework中的這種類庫(kù)提供了面向?qū)ο蟮目芍赜妙愂占@些類可用來(lái)開(kāi)發(fā)嵌入式應(yīng)用。C#庫(kù)還包括加密、圖形、訪問(wèn)SPI與I2C通信端口的能力。

        NET Micro Framework內(nèi)的通用語(yǔ)言運(yùn)行時(shí)(CLR)提供了所有應(yīng)用程序需要的運(yùn)行時(shí)環(huán)境。CLR可管理內(nèi)存、線程、代碼執(zhí)行、垃圾及異常處理、以及其它服務(wù)等。據(jù)Microsoft介紹,CLR每秒可執(zhí)行約15,000次調(diào)用,以27.6MHz的時(shí)鐘頻率在為ARM7處理器編寫的代碼中管理方法。

        下一層提供了可控制硬件的程序抽象層(PAL),但在嵌入式系統(tǒng)中不依賴于硬件工作。PAL在托管代碼接口與硬件特定的代碼間提供了一個(gè)明確的中間層。在處理器與外設(shè)緊上方的層中,框架提供了一個(gè)硬件抽象層(HAL)或?qū)嫒莶僮飨到y(tǒng)的provision接口。因此,該框架可直接與下層硬件通信,也可作為操作系統(tǒng)的主機(jī),如一個(gè)為.NET Micro Framework提供硬件服務(wù)及擴(kuò)展的實(shí)時(shí)操作系統(tǒng)(RTOS)。這可讓一個(gè)應(yīng)用程序在RTOS線程中運(yùn)行實(shí)時(shí)任務(wù),而另一個(gè)RTOS線程中運(yùn)行整個(gè).NET Micro Framework。

        硬件廠商(如Digi和Freescale)提供這種低層驅(qū)動(dòng)器及以C++語(yǔ)言實(shí)施的CLR。開(kāi)發(fā)人員用C#編寫應(yīng)用程序代碼,并將其代碼鏈接到.NET Micro Framework可啟動(dòng)的運(yùn)行時(shí)環(huán)境中。由于該框架提供了完整操作系統(tǒng)(OS)的部分功能,它并不需要一個(gè)綜合OS來(lái)管理一個(gè)嵌入式系統(tǒng)。因此,開(kāi)發(fā)人員將.NET MicroFramework本身作為一個(gè)可啟動(dòng)的運(yùn)行時(shí)環(huán)境。這里,可啟動(dòng)的運(yùn)行時(shí)環(huán)境指直接在嵌入式硬件中運(yùn)行的.NET Micro Framework代碼。代碼提供了啟動(dòng)支持、中斷處理、線程與進(jìn)程管理、堆積管理及其它操作系統(tǒng)通常提供的支持功能。

        一個(gè)內(nèi)置的.NET Micro Framework硬件仿真器比其它開(kāi)發(fā)工具提供了更多的優(yōu)勢(shì)。一個(gè)硬件仿真器允許軟件團(tuán)隊(duì)立即開(kāi)始開(kāi)發(fā)代碼,而不必等到對(duì)原型硬件設(shè)計(jì)、構(gòu)建并調(diào)試后再進(jìn)行。用戶與廠商可以使用XML來(lái)擴(kuò)展默認(rèn)的仿真器,這樣開(kāi)發(fā)人員無(wú)需觸動(dòng)任何硬件,即可創(chuàng)建并調(diào)試應(yīng)用程序。硬件廠商還提供了定制的仿真器,可對(duì)硬件、模塊或處理器等進(jìn)行仿真。當(dāng)然,令他們欣慰的還是能看到其應(yīng)用程序在實(shí)際的硬件上運(yùn)行。

      迅速了解有效的代碼

        Connect ME模塊是一個(gè)可用.NET Micro Framework進(jìn)行編程的設(shè)備示例。這種嵌入式serial-to-Ethernet模塊在一個(gè)緊湊的RJ-45接口封裝中容納了一個(gè)ARM7TDMI處理器(55MHz),2Mbytes的NOR閃存、8Mbytes的SDRAM,及一個(gè)以太網(wǎng)PHY/MAC(圖2)。
                            


        一個(gè)基于Express Logic ThreadX嵌入式內(nèi)核的主操作系統(tǒng),支持模塊中的.NET Micro Framework。該內(nèi)核包括一個(gè)完整的IPv4網(wǎng)絡(luò)堆棧,可在應(yīng)用程序代碼中作為套接字接口。

        為.NET Micro Framework編寫的應(yīng)用程序可訪問(wèn)所有這些硬件無(wú)關(guān)的API,并可訪問(wèn)HAL支持的硬件類。Connect ME模塊的HAL支持TCP/IP套接字、RS-232串行通信及通用I/O接口。

      簡(jiǎn)單條件下試用

        開(kāi)發(fā)人員只需要四步驟即可創(chuàng)建并運(yùn)行一個(gè)可讀寫到通用I/O端口的應(yīng)用程序。以下的步驟假定在主開(kāi)發(fā)PC和Connect ME模塊之間有一個(gè)以太網(wǎng)編程連接。多數(shù)情況下,開(kāi)發(fā)人員對(duì)Connect ME模塊應(yīng)用一個(gè)Digi Connect ME Digi JumpStart Kit或類似的基板:

        步驟2.雙擊新創(chuàng)建項(xiàng)目中的主模塊:Program.cs。在C# Main()函數(shù)中,添加以下代碼:
      InputPort MyInput = new
      InputPort((Cpu.Pin)0,false,InputPort.ResistorMode.Disabled);
      OutputPort MyOutput = new OutputPort((Cpu.Pin)1,false);
        在Visual Studio 2005中,InputPort類的聯(lián)機(jī)幫助信息介紹了所有的參數(shù)。個(gè)參數(shù)--(Cpu.Pin)0–說(shuō)明了Connect ME模塊上的個(gè)通用的I/O針腳。由Microsoft實(shí)施的第二個(gè)參數(shù)--false–調(diào)用一個(gè)雜訊濾波器可平滑輸入狀態(tài)變化的突波。Connect ME模塊并不在HAL中使用此參數(shù),并會(huì)忽略任何合格的值。的參數(shù)--InputPort.ResistorMode.Disabled – 允許HAL配置輸入對(duì)三種電阻模式之一進(jìn)行配置;PullUp、PullDown或Disabled。Connect ME模塊也會(huì)忽略此值,盡管該代碼示例指定為Disabled。

      constructor OutputPort 類只有兩個(gè)參數(shù):要使用的GPIO針腳--(Cpu.Pin)1–對(duì)該輸出針腳的初始狀態(tài)--false。

        步驟3.令Connect ME模塊讀取輸入針腳的狀態(tài),只要為其指定一個(gè)Boolean類型即可。
      bool InputState = MyInput.Read();
      要寫到輸入中,使用Write() method:
      MyOutput.Write(true);
        步驟4.要編譯及部署應(yīng)用,選擇點(diǎn)擊Start Debugging按扭。主PC通過(guò)以太網(wǎng)連接將代碼發(fā)送到Connect ME模塊中的閃存上。然后模塊就會(huì)開(kāi)始從SDRAM上運(yùn)行代碼。程序的調(diào)試輸出結(jié)果通過(guò)以太網(wǎng)調(diào)試連接進(jìn)入Visual Studio Debug Output窗口中。

        此例說(shuō)明了必要工作只是編寫、編譯、部署及調(diào)試一個(gè)簡(jiǎn)單的在一個(gè)嵌入式目標(biāo)上運(yùn)行.NET Micro Framework及控制GPIO針腳的的應(yīng)用程序。.NET Micro Framework還提供了一個(gè)InterruptPort類,但Connect ME模塊的I/O針腳并不支持此類。其它硬件可提供一個(gè)編程人員可通過(guò)InterruptPort類訪問(wèn)的interrupt-input針腳。

        類似的類、方法及屬性允許開(kāi)發(fā)人員輕松地控制串行I/O端口,并創(chuàng)建套接字服務(wù)器與客戶端。Visual Studio 2005中的幫助文檔描述了如何使用命令,即使沒(méi)有多少C#經(jīng)驗(yàn)的人也可在應(yīng)用中使用該工具。

        為了更好地理解如何應(yīng)用.NET Micro Framework,開(kāi)發(fā)人員可從Microsoft網(wǎng)站上下載.NET Micro Framework軟件開(kāi)發(fā)工具包(SDK)及評(píng)估版的Visual Studio 2005,免費(fèi)使用其仿真器模型。他們也可購(gòu)買一個(gè)開(kāi)發(fā)工具包,如Digi Connect ME JumpStart kit (商品號(hào)DC-ME-MF).
                 

                          


                       

      參考資料
        Thompson, Daniel and Colin Miller, Microsofts .NET Micro Framework:Product Positioning and Technology   Whitepaper:http://download.microsoft.com/download/3/1/9/319f7469-70bd-4e7c-a6cc-e5ad96939af4/NET_Micro_Framework_Whitepaper_V_1.0.doc


        Microsofts .NET Micro Framework homepage: msdn.microsoft.com/embedded/netmf

        .NET Micro Framework SDK download - www.microsoft.com/downloads/details.aspx?familyid=32f5df20-6c95-4fe8-a76c-0ed56a839ad2&displaylang=en

        Trial versions of Visual Studio 2005 (The .NET Micro Framework requires the Standard, Professional, or Team version and will not work with Visual Studio Express.)www.microsoft.com/emea/msdn/visualstudio/enxu/getthetrials/

        Microsoft .NET Micro Framework 合作伙伴列表:
        msdn2.microsoft.com/en-us/embedded/bb267307.aspx

        Digi Connect ME:www.digiembedded.com

      作者簡(jiǎn)介
        John Leier是Digi International公司嵌入式軟件部門的產(chǎn)品經(jīng)理。他有15年以上的軟件工程經(jīng)驗(yàn),包括編程數(shù)據(jù)采集及使用C、Visual Basic、Delphi、及C#等語(yǔ)言控制系統(tǒng)等。若要了解詳細(xì)信息,請(qǐng)與Digi International聯(lián)系:11001 Bren Road East, Minnetonka, MN 55343; (877) 912-3444; www.digi.com.

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲日韩欧美在线精品 | 亚洲国产区美女 | 亚洲人成人欧美中文字幕 | 日韩国产精品有吗在线 | 先锋天堂AV在线网 | 中文字幕精选三级欧美 |