簡介

Windows XP是一套大家都耳熟能詳的作業系統,絕大多數的使用者都使用過這套作業系統,即使像筆者認識的Linux瘋狂愛好者,做簡報的時候也採用Windows XP的環境在播放投影片,Windows XP簡直就是一套老少咸宜的作業系統。但Windows XP終究太大了,且很多功能平時根本就用不上,所以微軟約在2004年研發推出一套開發工具“Windows XP Embedded”,2009年推出最新版本並改名為 Windows Embedded Standard,這其實和Windows XP是一模一樣的東西,不同在於,他把Windows XP的那一堆功能變成一個一個的“元件",總共有一萬多個(可見Windows XP是多麼龐大的一套系統),使用者可依照需要的情況去選擇想要的元件來使用,這樣做可以大大的減少系統的空間需求,也因為東西變少了,速度自然變快,本文就利用RoBoard來實作Windows XP Embedded的開機環境來探討吧。

clip_image002

RoBoard RB-100是一片小型的嵌入式系統單板,但因為它上面整合了24組PWM訊號輸出和各式各樣的Com/I2C/SPI/AD/USB/LAN之類的周邊控制功能,且速度高達1GHz,遠超越各種微控制器的能力,又省電、體積又小,非常適合拿來做機器人相關的應用,尤其在一些需要複雜演算的領域裡面。

但就像桌上型電腦或是筆記型電腦一樣,總會需要灌Windows XP或是Linux之類的作業系統,有人說可以灌DOS嗎,當然可以,但DOS沒多工能力,相較之下Windows XP還是有一定實用性。可是,使用者在這部份第一次就會遇到重大障礙,原因很簡單,不管Windows XP或是Linux都太大了,機器人應用上是不會需要使用到大部分的控制台功能或是像瀏覽器之類的應用程式,更不用說像是Outlook或是Word之類的應用程式了。且因為規格比起桌上型電腦要低一些,使得他在灌了Windows XP之後的效能也不盡理想。那怎麼辦呢?最佳解決方案就是“部署"微軟的Windows XP Embedded進去,使用上和Windows XP一樣,但是小很多,加上很多特異的功能使得它能開機超快,或是鎖住整個系統,或是完全改掉系統的介面,種種因素使得他非常適合和RoBoard搭配。注意筆者在這裡使用“部署"兩字而不是使用“安裝",這是有玄機的,以下就讓我們來詳細看這到底是怎樣的一個東西吧。

流程

首先來看一張圖:

clip_image004

簡而言之,這是如何在RoBoard上面實做Windows XP Embedded的流程圖。

Windows XP Embedded這套開發工具在微軟的MSDN網站上面搜尋就可以找到,使用者需先安裝好這套軟體,它有很多種版本,從以前的SP1 / SP2到現在的FP2007/Standard,目前最新的版本為 Windows Embedded Standard,(http://www.microsoft.com/windowsembedded)元件越來越多,功能當然也越來越強大,佔硬碟的空間也越來越大了,最新一版筆者安裝完約要佔據硬碟約5G的空間。(安裝程序就不再多做說明)

裝好之後,主要是有三個工具可以使用來製作Windows XP Embedded系統,分別是Component Designer(元件設計師)、Component Database Manager(元件資料庫管理員)、Target Designer(裝置設計師),得利用這三個東西的妥善搭配才能做出想要用的Windows XP Embedded系統,以下就一步一步來看如何做出這個東西吧。

實做

因為流程有點繁複,這裡利用圖解一步一步解說,方便讀者照著一步一步實做(此處已經預設讀者先裝好開發環境了)

clip_image006

首先,到RoBoard的官網(http://www.roboard.com)下載PMQ檔案和相關的元件,並建立如附圖的目錄結構,後面會用到。

clip_image009

到程式集裡面找到並打開Component Designer(元件設計師),再檔案的下拉選單裡面有一個Import(匯入)選項。

clip_image012

選擇匯入的選項以後會出現這個畫面,瀏覽到該PMQ檔案來做匯入的動作,這個檔案內容為RoBoard的一些相關的系統元件設定值,用來給後面的動作參考用的。選好後按下後面的“Start"開始。

clip_image014

匯入的過程會不斷的掃描整個元件資料庫,比對是否是內建的元件,如果是,系統會直接加入;那果不是則系統會出現錯誤訊息,但還是會繼續做到完,缺的元件稍後再補就好。圖中的LogFile是說如果想要紀錄掃描過程的檔案可以設定。

clip_image016

這裡可以看到最後的那行訊息顯示匯入成功,請注意倒數第三行,顯示該PMQ檔案裡面共有137個元件,但掃描結果發現系統只有內建121個,缺的部份就是得要自己解決了,這和Windows XP基本是一樣的,系統灌好也是要補驅動程式。

clip_image018

匯入完成的系統設定元件內容,會有基本的一些像是DMP公司的版權宣告畫面和這個元件的一些相關的訊息,底下的那些選項可以點點看,可以看到很多這個元件的一些設定等等。

clip_image020

確認設定沒有問題以後,另存新檔到剛剛的目錄裡面,叫做R-100.SLD。等一下會用到,且注意到剛剛的目錄裡面多了一個R-100.Log記錄檔,這是剛剛匯入元件的記錄檔。

clip_image022

接下來關閉Component Designer(元件設計師),這一定要先關閉,然後開啟Component Database Manager(元件資料庫管理員),按下畫面中間的Import匯入鍵。

clip_image024

選擇剛剛做好那個R-100.SLD,按下底下的Import匯入,這樣就可以把這個元件匯入到元件資料庫中等待以後可以“重複使用",以上這些動作並非必要,但強烈建議使用,以後會比較輕鬆。匯入成功會顯示在畫面上。

clip_image026

再來關閉Component Database Manager,開啟Target Designer(裝置設計師),如圖所示,這個程式主要用來規劃裝置的元件選擇和設定相關的事情。

clip_image028

第一個畫面得先選擇想要的平台,目前來說暫時只支援x86的CPU,所以如果是ARM的平台就不能用這個了。另外要輸入這次想要設計的裝置名稱,這裡就直接取名R-100,這部份可以自行命名,自己看得懂就好。

clip_image030

這個畫面的左邊是元件選單,可注意到有一萬多個各式功能的元件可供選擇,畫面中間就是選擇的元件,這裡先選擇常用功能和RoBoard必須的驅動程式元件,做好相關的設定。

clip_image032

想要的元件選擇完畢,且設定完畢以後,選擇下拉選單裡面有一項叫做“Check Dependencies”,相依性檢查,這個動作大概得要等數分鐘到數十分鐘,完成這個步驟時間長短取決於電腦的配備。

clip_image034

所謂的相依性就是元件和元件之間的關係,就好像螢幕這個元件,一定要搭配訊號線和電源線才會動一樣。但要讓使用者自己搞定相依性會很困難,所以相依性檢查有全自動解析元件設定的功能,能自動加入正確的元件來使整個設定正確。

clip_image036

這是相依性檢查完成的樣子,仔細看一下!先前才幾個元件馬上暴增為好幾百個,全是和原來那個功能有關係的元件都被全自動加進來了。畫面底下出現了六個錯誤訊息,這些代表無法自動解析的部份,必須使用者自行去判斷應該使用怎樣的設定。

clip_image038

一個一個來看,第一個錯誤訊息是加解壓縮功能會用到的系統檔案操作格式,標準來說是要選擇FAT/NTFS這兩個選項,算是最常見的基本格式,但筆者不常選FAT,還可進一步省點空間。

clip_image040

第二個錯誤為語系的問題,標準來講英文和繁體中文是要選的,但萬一系統可能需要用到其他語言的部份就自己加選,不過在評估版並沒有包含,多國語系部分有些牽涉到操作介面,需要另外加光MUI多國語系封包才會有,需另行下載其他幾片光碟。

clip_image042

這個錯誤是要使用者選擇開機時的啟動程式,一般來說選擇預設的NTLoader這個就好,這是Windows XP預設的開機初始化程式。但另外一個EWFLDR是特殊功能,能用來鎖住系統防止寫入,這部份會有專屬的文章來談專談這個功能。

clip_image044

這裡要選擇系統標準的檔案操作格式。

一般來說直接選擇FAT/NTFS就好,選越多功能越多,但將來做出來的系統也會越大,如何抉擇使用者要自己思考好才行。

clip_image046

這個錯誤是使用者核心介面要使用的檔案操作格式。

也是同上兩個都選就對了,這兩個一定都要選,不選會怪怪的。

且未來處理隨身碟的部份也會有些問題(因為隨身碟預設檔案格式是FAT)。

clip_image048

最後這個錯誤是SHELL,操作介面。一般我們常用的就是Explorer Shell,但如果你想一開機就是DOS那種畫面且要有多工的功能就選Command Shell,如果想要長得像工作管理員一樣就選Task Manager Shell。這裡的選擇會直接影響作好的系統的畫面。

clip_image050

通通選好了以後,再次做相依性檢查,這次就顯示No error了。請注意,如果還有錯誤就得重複上面的動作直到所有的錯誤都沒有為止,這裡不能假裝跳過這個動作,下個動作會不能正確執行,除非關閉自動檢查功能,但這樣除非很熟練這個系統,不然是很容易出現作好的系統無法使用。

clip_image052

都沒問題了就可以進入Build流程,把Destination那個欄位選擇到當初我們造的那個image目錄,按下Start,這樣整個Windows XP Embedded系統就會被造到那個目錄去。注意該目錄必須是空的,若不是,這個動作也會強迫清空該目錄才能繼續。

clip_image054

Build完成後會有一些簡單的資訊可以看,包括有多少檔案被Build進去,結果這個系統目錄的總大小等等訊息,這個階段如果忽然又想要改些東西也是可以,但要記得再次做相依性檢查,比較能避免一些不必要錯誤,且作完還要重新Build。

clip_image056

這個畫面是已經做好後的樣子,可以看到好多的元件被自動加進來了,且整個系統已經被建構完成,大小也膨脹到大約是200MB左右。但這和真正的Windows XP PRO比較起來還是小了很多很多,甚至把這個系統放進一張只有256MB的CF卡也是可以的,這也正是Windows XP Embedded的賣點。

clip_image058

最後,來檢視一下我們的目錄,明顯多出了一堆檔案,其中那些.SLX就是剛剛的裝置設計師所存下來的檔案,裡面就是我們選擇了哪些元件的資訊和設定等等,未來要修改直接改這個就好。

clip_image060

再查看一下image目錄裡面的東西,這就是完整的Windows XP Embedded系統了,只要COPY到硬碟或是MicroSD卡裡面就可以拿去RoBoard上面開機,其中注意到有個DriveD目錄,這是因為筆者的RoBoard作多重開機,這裡設定要把Windows XP Embedded灌到D槽才會這樣。

clip_image062

COPY好就可以開機了,您會發現畫面好像和Windows XP PRO一模一樣,沒錯!因為這就是Windows XP Embedded的特點,和Windows XP一模一樣,又允許您可以任意去修改它的功能,這部份也可以換成使用者公司的LOGO之類的以顯示獨特性。

clip_image064

第一次開機需要一些時間,因為要做一個FBA(First Boot Agent)的動作,因為多數時候,Windows XP Embedded會做失敗都要到這個階段才會出現錯誤訊息,且錯誤訊息的種類千奇百怪,難以一言道盡,筆者後面會整理出完整的錯誤處理資訊收錄在網站上以供參考。

clip_image066

FBA階段的一個畫面,基本上能跑到這裡差不多快成功了,但還是要隨時注意畫面的錯誤訊息。

clip_image068

在註冊登錄了。

理論上到這裡就差不多不用理它,應該能一路跑完,以Class 6的SD卡來說,RoBoard約需要半小時多的時間,但如果使用Class4約需要三小時,這是筆者實測的經驗,若是筆者的桌上雙CPU電腦只要不到五分鐘。

clip_image070

到這邊已經就算完成80%了,其實FBA就是初始化系統的動作,幫忙安裝元件,產生並設定登錄檔,註冊該註冊的東西,COPY和設定相關的東西各就各位,要做的事情很多哩。

clip_image072

終於開始開機,連這個畫面都和Windows XP PRO完全一模一樣,只有第一次開機會很慢,以後就還滿順暢,隨便亂做一通也可以差不多30秒開機完成,但想要快就得實做高速開機,這部份後面會有詳細介紹實做的方式。

clip_image074

開機完成,畫面就是很熟悉的東西,不過請注意右下角,有Windows XP Embedded字樣,且這個系統只能使用四個月,三個月到四個月後的某天,系統開機會直接進藍色畫面,並告知使用時間己經到了!

clip_image076

檢查一下系統的大小,您可看到整個完全作好以後才225MB,其實還可以更小的,筆者最小有做過只有60MB大小。當然這裡不能一昧堅持大小,得顧及功能才行,越小當然功能就會不足。

clip_image078

上個網吧,整個網路瀏覽的動作也很順暢,且畫面也和Windows XP裡面一樣。不過這內建為IE 6,如果想裝IE7/8就不建議了,因為那實在是太大了,且會拖慢系統的速度。

clip_image080

看一下控制台,可對照一下Windows XP的控制台,您會發現Windows XP Embedded的控制台好陽春,簡直是什麼都沒有,這就對了,因為這就是客製化作業系統的特色。

實作結果

RoBoard接線步驟非常容易,電源注意正負極接上去,顯示卡接螢幕訊號線(它也支援LVDS規格的訊號)就可以直接開機了,筆者測試都直接這樣測,需要鍵盤或是滑鼠再接到USB就好,普通是直接只用觸控面板。這邊要注意一件事情,有一次,筆者在測試的時候想要測試系統是否真的能上1800x1600解晰度(該顯示卡的極限規格),就給它調下去,但沒注意螢幕並沒有支援到這麼高,結果調下去以後調不回來,又借不到這麼高解析度的螢幕來還原它,變成每次開機都會顯示無法正確設定螢幕的訊息導致開機失敗,只好前面講的這一堆事情全部要重來。Windows XP Embedded的功能千奇百怪,難以一言道盡,通常一個系統要測試到沒問題都得反覆的跑前面講的那些動作,常常一個應用研發出來已經過了無數的時光,這部份就真的是要日積月累的經驗累積來克服了。下圖是整個完整實做的圖示:

clip_image082

小結

以RoBoard作為機器人開發板,並且結合Windows XP Embedded作業系統,除了開機速度大大的增快,系統的空間大幅減小以外,更重要是,這是大家都熟悉的Windows XP環境,對於開發相關的應用程式來說,使用者不需要面對額外的麻煩,自然能把心力放在全力開發應用的部份,且因為是Windows XP環境,桌上型電腦能裝的軟體它都能安裝,相對來說也會比其他的平台省了很多開發時間,且結合微軟的VisualStudio.NET開發工具,開發嵌入系統於機器人上面的應用更能得心應手。以後我們再來談談如何高速開機結合沒有顯示卡的環境,以及更快速更小的Windows Embedded CE。讓機器人的即時影像演算或是任何其他的即時應用再也不用受限於能力不足的MCU所苦,未來還會提供更多的實做來分享大家,讓RoBoard做出來的機器人有更多更實用的好功能。