一、系統結構設計 本文將控制系統分為現場(chǎng)控制級(主機)和多個(gè)控制對象級(分機),F場(chǎng)控制級設備能夠收集到控制對象的各種信息,對這些數據進(jìn)行處理,并能夠在設定的條件下產(chǎn)生報警。通過(guò)該系統,可以得到家居的各種運行狀態(tài)(例如,房間溫度、濕度,煤氣泄漏報警等),并能根據現場(chǎng)情況做出相應的調整控制(例如,照明及家電控制等)。其家居控制系統結構如圖1所示。 圖1 家居控制系統結構圖 本文僅研究設計智能家居的現場(chǎng)控制部分,圖1中的GSM和GPRS等遠程通信模塊作為以后系統的擴展升級。主機MCU選用ARM9芯片S3C2410,因其具有豐富的功能端口而適合設計要求和日后擴展。S3C2410嵌入式微處理器集成了眾多的常用資源,例如,LCD控制器、NAND Flash控制器、SDRAM控制器、系統片選邏輯以及一些常用的通信接口等資源。 分機采用16位單片機MSP430F149,主要考慮此芯片的低功耗性能,具有超低功耗的MSP單片機可以完成分機家居現場(chǎng)的控制功能。報警信息的采集就是對各傳感器的信息采集;對各種家電的控制是通過(guò)控制連接在家電電源的繼電器來(lái)實(shí)現;現場(chǎng)控制手動(dòng)命令是通過(guò)觸摸屏來(lái)實(shí)現的。各分機通過(guò)nRF905收發(fā)模塊與主機進(jìn)行無(wú)線(xiàn)通信。各分機通過(guò)連接不同的傳感器或控制器來(lái)實(shí)現不同的功能。 二、系統軟件開(kāi)發(fā) 在Windows CE.net產(chǎn)品的開(kāi)發(fā)中,有兩個(gè)重要的方面,一個(gè)是內核定制,另一個(gè)是應用程序的開(kāi)發(fā)。微軟在這兩個(gè)方面都提供了非常好的開(kāi)發(fā)工具,這就是內核定制工具Platform Builder和應用程序開(kāi)發(fā)工具Embedded Visual C++。 1 操作系統平臺定制 1.1 Windows CE平臺的定制過(guò)程 (1)選擇操作系統的基本配置,并且為特定的平臺選擇相應的微處理器和板級支持包BSP(Board Support Packet)。本系統終端采用S3C2410處理器,因此我們導入了和硬件平臺相關(guān)的smdk2410.cec文件。 (2)利用標準開(kāi)發(fā)向導,根據Windows CE的架構創(chuàng )建一個(gè)定制平臺,根據目標硬件設備開(kāi)發(fā)Boot Loader、設備驅動(dòng)程序,適當的裁減、添加組件,如有需要還須對某些配置文件進(jìn)行修改,然后封裝所需要的各功能模塊,編譯生成OS鏡像文件。 (3)通過(guò)以太網(wǎng)、USB或串口將鏡像文件下載到目標設備,可以使用Platform Builder提供的調試工具查看Windows CE.net的運行情況并進(jìn)行調試,若需要,進(jìn)行重復配置、封裝、下載及調試,直到滿(mǎn)足要求,完成平臺的創(chuàng )建。 (4)最后,導出相應的SDK(Software Development Kit)軟件開(kāi)發(fā)工具包,運行后安裝到EVC中,使得可以進(jìn)行特定硬件平臺上的應用程序開(kāi)發(fā)。SDK包含程序庫、頭文件、示例程序源代碼和庫函數使用文檔,同時(shí)還包括編程指導和API參與以及設備驅動(dòng)工具包(DDK)。 1.2 安裝BSP 把Windows CE.net移植到新硬件平臺由平臺構造器(Platform Builder)完成。Platform Builder 4.2是一個(gè)定制基于Windows CE.net 4.2操作系統的嵌入式平臺的集成開(kāi)發(fā)環(huán)境(IDE)。我們?yōu)橐粋(gè)硬件平臺構建CE系統,在PB里實(shí)際上就是創(chuàng )建平臺,然后編譯平臺,得到CE映像文件的過(guò)程。所以我們首先需要創(chuàng )建一個(gè)平臺。板級支持包(BSP)是連接一個(gè)硬件平臺和操作系統內核功能的橋梁,所以,首先PB會(huì )要求選擇BSP。 Platform Builder本身就提供了多種目標板的BSP,如果開(kāi)發(fā)板和Platform Builder提供得相同,那么只需重新編譯,生成相應的系統鏡像下載到開(kāi)發(fā)板即可。但是實(shí)際情況更多的可能是處理器相同,但是板上的各種外圍硬件接口不盡相同,這時(shí)候可以通過(guò)修改Platform Builder中相同或相近處理器的BSP來(lái)完成一個(gè)新的BSP,這樣可以大大減少BSP的研發(fā)時(shí)間。這里我們利用廠(chǎng)商直接提供的BSP,節省了開(kāi)發(fā)時(shí)間,也可以提高成功率。 圖2 生成系統鏡像 1.3 定制Windows CE操作系統鏡像 PB定制基于本平臺的操作系統鏡像的步驟如下。 (1)選擇板級支持包:本系統開(kāi)發(fā)板CPU是S3C2410,所以選“SAMSUNGSMDK2410:ARMV4”BSP。 (2)選擇平臺類(lèi)型。本文選擇了手持設備。在“Available configurations”列表中,選擇“Mobile Handheld”,并輸入“Platform name:sbc2410”。 (3)選擇基本類(lèi)庫及所需要的網(wǎng)絡(luò )通信服務(wù),平臺配置完畢。 (4)右鍵單擊“SBC2410 features”選項的“Setting…”。在對話(huà)框Build Option屬性頁(yè)中,選擇[Enable Full Kernel Mode],Windows CE中所有線(xiàn)程都會(huì )運行在核心態(tài)。這會(huì )使整個(gè)系統相對不穩定,但是也可提高系統的運行效率。選擇[Enable Images Larger than 32MB],Windows CE的最終運行時(shí)映像可大于32MB。 (5)利用Platform Builder進(jìn)行Windows CE.net操作系統的定制和開(kāi)發(fā)一個(gè)重要的步驟就是在Platform Builder提供的特性目錄(Catalog)中進(jìn)行特性選擇。這是因為Platform Builder中已經(jīng)將Windows CE.net操作系統用到的大量的組件以特性(Feature)的形式列在特性目錄中。加入USB鍵盤(pán)鼠標支持特性,加入USB移動(dòng)存儲設備(U盤(pán)、移動(dòng)硬盤(pán))支持,加入打印機設備相關(guān)的驅動(dòng)(如果不加入打印機設備相關(guān)的驅動(dòng),在編譯應用程序時(shí)會(huì )出現“syntax error:identifier ‘LPDOCINFO’”錯誤),加入網(wǎng)絡(luò )設備驅動(dòng)。 (6)更改適合自己網(wǎng)絡(luò )環(huán)境的IP地址、DNS、網(wǎng)關(guān)地址等網(wǎng)絡(luò )參數,通過(guò)編輯platform.reg平臺注冊表文件中相關(guān)的鍵值,來(lái)修改網(wǎng)絡(luò )參數。我的PC的IP:202.114.57.102,所以目標機的IP設定為202.114.57.10,在同一網(wǎng)段內。 (7)單擊菜單Build→Build Platform開(kāi)始編譯系統。編譯完畢,將會(huì )在 C:WINCE420PUBLICsbc2410RelDirSAMSUNG_SMDK2410ARMV4Release目錄下生成NK.bin和NK.nb0映像文件。編譯開(kāi)始大約10分鐘后看到編譯信息:SBC2410-0 error(s),30 warning(s)。有警告是正常的,因為某些組件是有風(fēng)險的,例如,一些網(wǎng)絡(luò )組件,所以只要沒(méi)有錯誤,說(shuō)明定制沒(méi)有問(wèn)題。 此時(shí),我們用USB電纜連接主機和目標機(開(kāi)發(fā)板),在PC端已安裝了SAMSUNG提供的USB驅動(dòng)的前提下,使用2410提供的專(zhuān)用下載工具DNW把生成的NK.bin和NK.nb0下載到開(kāi)發(fā)板中,這樣根據我們的目標機系統定制的Windows CE就可以在開(kāi)發(fā)平臺上正常運行了。 1.4 創(chuàng )建平臺SDK 完成了平臺的定制后,接著(zhù)可以利用Platform Builder來(lái)創(chuàng )建SDK,SDK為平臺上其他應用程序的開(kāi)發(fā)提供支持。SDK(Software Development Kit)是一系列頭文件、庫文件、文檔、平臺管理器和運行時(shí)庫的總稱(chēng)。一旦創(chuàng )建了SDK,就可以將它導出或者安裝到別的計算機上,開(kāi)發(fā)者可以將創(chuàng )建的SDK導入Embedded Visual C++或 Visual Studio中,進(jìn)行應用程序的開(kāi)發(fā)、調試和運行。 在Embedded Visual C++中,提供了Platform Manager來(lái)管理已經(jīng)安裝的SDK。注意,在安裝開(kāi)發(fā)工具時(shí),默認會(huì )安裝一個(gè)稱(chēng)作“Standard SDK”的SDK。由于Windows CE操作系統特性,不可能存在“標準”的SDK。所謂Standard SDK,只不過(guò)是微軟把Windows CE中最常用的一些功能取出來(lái)作為一個(gè)“標準”的SDK,使用Standard SDK開(kāi)發(fā)的應用程序,可在大多數Windows CE平臺上運行。但是Standard SDK也并不是萬(wàn)能的,例如,Standard SDK不支持中文和DirectX等。Platform Builder提供了SDK Wizard向導,來(lái)創(chuàng )建和生成SDK,最后Build過(guò)程完成后即可生成名為SBC2410_SDK.msi的SDK文件。此時(shí)在生成目錄中找到SBC2410_SDK.msi,雙擊安裝,就可以將生成的SDK安裝到EVC中進(jìn)行應用程序的開(kāi)發(fā)了。 2 應用軟件開(kāi)發(fā) 目前,針對Windows CE應用開(kāi)發(fā)的軟件有很多種,在使用的時(shí)候根據具體情況選擇適合應用的軟件開(kāi)發(fā)工具。Embedded Visual C++支持WinCE App/DLL/COM/Lib using Win32 API,MFC,ATL and STL等功能,它與Visual C++6.0具有相似的工程管理模式和用戶(hù)界面,易于調試和測試。但是必須安裝相應的為特定平臺開(kāi)發(fā)的SDK,本文就是自己導出的SDK。 智能家居系統的主機應用程序通過(guò)兩個(gè)對話(huà)框實(shí)現分機設備的基本讀/寫(xiě)過(guò)程:Measure對話(huà)框主要實(shí)現對輸入量信息的采集及對系統運行狀態(tài)的監視,Control對話(huà)框主要用于主機發(fā)送控制信息給分機系統。這兩個(gè)對話(huà)框通過(guò)主窗體調用完成對整個(gè)家居系統的測量與控制。主機應用程序流程圖如圖3所示。智能家居系統應用程序以1路模擬量輸入、3路數字量輸入及相應的4路輸出控制量為例實(shí)現智能控制功能。 圖3 主機應用程序流程圖 圖4 運行界面 EVC的開(kāi)發(fā)環(huán)境與Visual C++基本一致。首先,選擇項目類(lèi)型、項目存放路徑、項目名稱(chēng)及平臺類(lèi)型;然后選擇項目的樣式和支持的語(yǔ)言;接下來(lái),確定一些其他的選項;選擇完畢后,就可以得到一個(gè)程序的框架。項目類(lèi)型我們選擇WCE MFC APPWizard,項目名稱(chēng)為SmartHome,在支持的CPU類(lèi)型中我們選中了ARM和X86(應該根據開(kāi)發(fā)環(huán)境來(lái)選擇)。對于我們來(lái)說(shuō),首先要在PC上進(jìn)行調試,然后編譯成適合使用的應用程序,目標機是ARM CPU,所以我們需要WCE X86和WCE ARM。(如果你要開(kāi)發(fā)商用軟件或者想讓更多的人使用你的程序,應該考慮更多種類(lèi)的CPU)編譯運行,成功啟動(dòng)Microsoft ActiveSync同步軟件,這時(shí)可將在PC上生成的exe文件復制到移動(dòng)設備下My Documents文件夾下。智能家居系統應用程序以1路模擬量、3路數字量輸入及相應的4路輸出控制量為例實(shí)現智能控制功能,如圖4所示。 |