WinCE中BSP的Clone
談到WinCE的BSP Clone實際上就是BSP的複製,只不過是改變了一些BSP中的資訊。在WinCE中,BSP的複製應該很簡單,今天就做個簡單的介紹.
我很少用到BSP的複製,做WinCE也有幾年了,就用過幾次,最開始是為了學習複製了幾次,但沒有什麼實際用途。後來我在一家IC Design公司工作,公司開了一個新的ARM晶片,基於公司老的ARM提高了頻率,增加了一些新的模組。這個時候我真正用到了BSP的複製,基於公司老的ARM晶片的BSP,複製一個BSP,然後在上面為新的ARM晶片開發驅動和新的功能。
所以,BSP的複製應該算是BSP開發的第一步,在你什麼都沒有的時候,最好找一個和你的晶片以及平台相近的已有的BSP包,進行複製,然後再在上面開發新的BSP,這樣會節省時間。道理大家都明白,下面介紹一下:
1. 基於WinCE6.0,首先開啟VS2005,然後選擇”Tools”->”Platform Builder for CE 6.0”->”Clone BSP”以後,會彈出一個複製BSP的視窗。
2. 在彈出的視窗中,我們可以看到一些資訊,在”Source BSP”中選擇目前WinCE系統中已經支援的BSP,選擇一個和你的平台相近的BSP,也就是被複製的BSP,在這裡我們選擇”Device Emulator: ARMV4I”。然後在”Name”輸入名字為MyBSP,在”Description”中輸入This is my BSP。在”Platform Directory”中輸入MyBSP,這裡最好和上面的”Name”一致。”Vendor”輸入My,”Version”輸入1.0。應該是如:
3. 最後點擊”Clone”就可以了,如果快的話,稍等幾秒就會完成。如果成功了,會彈出一個對話方塊告訴你BSP已經複製成功。
比較簡單,BSP已經複製完成。可以在”WINCE600Platform”下面看到一個MyBSP的檔案夾,就是複製出來的BSP。下面簡單介紹一些裡面的內容:
sources.cmn:該檔案是一個BSP的sources的總檔案,它會作用於BSP中所有的sources檔案,就是說在這裡面的設定會被用到BSP所有的sources檔案中。
MyBSP.bat:這是一個批次檔,主要完成一些預設的環境變數的設定。他要和檔案夾同名,在你以該BSP建立工程或者開啟工程的時候,這個批處理會被自動運行.
dirs:目錄檔案,指明要被編譯的檔案夾,一般都是指向src檔案夾。
cebasecesysgen.bat:該批處理會被cesysgen.bat調用,主要是設定一些WinCE系統相關的SYSGEN_xxx環境變數。該指令碼沒有也無所謂,很多BSP中都沒有該指令碼。
CATALOG檔案夾:該檔案夾裡麵包含了BSP的工程檔案,名為MyBSP.pbcxml。可以使用記事本直接編輯它,這裡要注意的是,他的名字要和檔案夾名字一致,否則不能被識別出來。
CESYSGEN檔案夾:該檔案夾中包含一個makefile檔案,主要是根據環境變數的設定對代碼及設定檔進行過濾。
FILES檔案夾:該檔案夾包含了BSP以及WinCE的設定檔,其中包括bib檔案,註冊表檔案,db檔案等。
SRC檔案夾:就是BSP的原始碼檔案夾,裡麵包含了BSP的所有原始碼。其中應該包括”Bootloader”,”Drivers”,”Inc”,”OAL”和”Kitl”幾個檔案夾。當然不同的BSP,名字可能略有差別。”Bootloader”是WinCE的bootloader,一般是指EBOOT了。”Drivers”中包含了BSP中所有的驅動。”Inc”是一個標頭檔檔案夾。”OAL”包含了WinCE中OAL部分的代碼。”Kitl”是實現基於網路調試的Kilt的代碼。
致就介紹這些。上面說得挺多,其實就是介紹了一下BSP的複製,以及BSP裡面都有些什麼東西。提到複製,這裡在補充一下,在WinCE6.0中,不光是BSP可以複製,WinCE中的一些組件也是可以複製的。當我們建立了一個WinCE的工程以後,我們可以會使用一些WinCE的組建,但是我們想改一下他的原始碼,一般這些原始碼都是位於Public目錄下面的。更改Public目錄下的原始碼不是一個好的注意,首先你改Public目錄下的原始碼需要重新編譯Public目錄,這將用掉幾個小時的時間,其次如果微軟的補丁更新了你改的代碼,那你可能還需要重新修改。
所以,在WinCE的工程中,如果你想更改Public目錄下的組件的原始碼,那麼複製可能是一個更好的選擇,來介紹一下:
1. 假如你已經有了一個工程,在你的工程裡面的”Catalog View”中,假如要複製”Device Drivers”->”USB Function”->”USB Function Client”->”Mass Storage”這個模組,你需要右擊,然後彈出如下的視窗:
2.然後選擇”Clone Catalog Item”,又會彈出一個視窗,如下:
3.選擇你要複製的組件,然後點”OK”就可以了。成功以後,會彈出複製成功的對話方塊。
完成了上面的3個步驟,組件的複製就已經完成,被複製的組件會被自動的拷貝到你的工程的目錄下面,然後你在IDE環境中切換到”Solution Explorer”,你會在”Subprojects”下面看到你所複製的組件,該組件現在已經作為一個子工程存在了,而且代碼也已經拷貝到工程的目錄下面。
最後囉嗦兩句,關於BSP的複製應該比較簡單,但是有的時候也會出錯,一般出錯的原因可能是因為被複製的BSP有問題。關於組件的複製,是在你需要修改Public目錄下原始碼的時候採用的,而且不是什麼組件都可以複製的,如果組建不能被複製,你就需要自己手動去改了。