好了,以上我們已經產生了自己的系統,也明了了PB的檔案夾結構,這一次我們一起來看一下如何把我們自己的系統在目標裝置上運行起來,此處我們的目標裝置是X86結構的,因此我們就以這種裝置為例,當然如果你沒有自己的硬體平台,也可以用另一台PC機來代替。
按以前學過的內容,我們還是用Hello這個系統,但是要重新做一個了,因為上一次我們做的那個是在模擬器上用的,這次我們要做一個用在裝置上的,我們可以在嚮導中選擇CEPC來做,
當然我們也可以同時選中CEPC和EMULATOR,這樣就既可以在CEPC裝置上使用,也可以在模擬器上使用了,不過不推薦這樣用。
當編譯完以後,我們到public檔案夾找到這個項目的檔案夾,在RelDir檔案夾下有兩個子檔案夾,一個是debug版,一個是Release版,前者是允許調試的,包含一些調試資訊,後者是發布用的。通常在調試階段我們都使用debug版。我們在這個檔案夾下找到nk.bin檔案,以前說過,這個就是我們系統的最終檔案了。但此時我們還沒有辦法讓它運行,下面我們來看讓它啟動並執行方法。
CE的啟動程式也叫做BootLoader程式,它可以引導起CE作業系統,即將nk.bin檔案裝入記憶體並解包,然後運行作業系統的核心。以後我將會專就BootLoader程式來寫的。這裡我們由於剛接觸CE,所以先不用寫專用的啟動程式,我們就用DOS引導盤來引導系統然後載入CE就行了。
說到DOS引導盤,在這個WINDOWS XP都普及的年代看來是很難找了,還好PB為我們想到了這一點,它帶了一個工具能夠製作DOS引導盤,下面我們就先來做這件事情。
我們先到PB的程式檔案夾下找到這個檔案夾“Program Files/Windows CE Platform Builder/4.20/cepb/utilities”,在這裡有一個websetup.exe的可執行檔,讓我們先來運行它。它會提示你安裝,單擊“Install”按鈕,瞬間就安裝完成了。它安裝完成以後我們就可以接下來運行那個奇怪的cepcboot.144檔案了,運行後的介面如下:
找張磁碟片來吧,一個DOS引導盤馬上就能做出來了。好像還是DOS6.22的。做完啟動盤後,這張盤就可以引導CE系統了,我們來看一下這張盤中檔案組成:
其中DOS部分的檔案在這裡就不說了,我們來看eboot.bin,這個檔案是用來通過網路來載入nk.bin的檔案,sboot.bin檔案是用來通過串口載入nk.bin的檔案,如果你要通過網路或串口來載入nk.bin那麼可以選擇其中的一個。Loadcepc.exe是一個可以在DOS下執行的載入CEPC架構nk.bin的程式,就是因為它才能通過網路或串口或根資料夾來啟動nk.bin。
對於config.sys檔案,它裡面為我們提供了一個啟動菜單,我們可以選擇使用什麼樣的螢幕解析度以什麼方式啟動系統,而autoexec.bat則對應每個功能表項目執行了不同配置的loadcepc.exe程式。具體的loadcepc.exe的用法可以參見readme.txt檔案。
另外,如果你要想在目標機上直接啟動C:盤根目錄上的nk.bin,那麼請更改autoexec.bat檔案,讓它載入nk.bin而不要載入eboot.bin。如果你只用到其中的一項,那麼也可以按你的要求把config.sys和autoexec.bat檔案進行修改。
以上只是一種實現方式,如果你手中已經有了啟動盤,也可以直接到WINCE420/PUBLIC/COMMON/OAK/CSP/I486/DOS/BOOTDISK下把其中的檔案COPY到你的啟動盤,這與用上述方法得到的結果是一樣的。
有了以上的準備,我們就可以把nk.bin在目標裝置上引導了,如果你目標裝置的網卡是如下類型的:
SMC9000
NE2000
DEC21140
RTL8139
DP83815
3C90X
那麼都是支援遠端偵錯的,可以直接在PB中Download到裝置中去,否則可以把nk.bin檔案COPY到目標裝置的C:盤的根資料夾下。
我們下面具體看一下使用網線遠程啟動目標裝置的過程。
首先將啟動盤插入目標裝置的軟碟機中,開啟目標裝置的電源,當目標裝置啟動後我們看到螢幕上提示Jump XXXXXXX,此時該目標裝置的網卡向網路廣播BootMe的訊息,我們可以在開發機上使用PB中的”target”菜單下的”Configure Remote Connection”,在彈出的對話方塊中配置如下:
單擊此對話方塊中的”Configure”按鈕,在出現的對話方塊中會找到裝置的名字:
一切OK,執行”target”菜單下的”Download/Initialize”命令就可以把nk.bin下載到目標裝置並啟動了。
如果無法找到目標裝置可試著將目標裝置重新啟動或更改引導盤中的autoexec.bat中的網路IP地址等資訊以重試。
好了,快讓你的系統在真實的裝置上啟動起來吧。