WindowsXP Embedded 開發中碰到的問題及解決方案

來源:互聯網
上載者:User
最近要做Windows XP Embedded(簡稱XPE)的平台搭建工作。先上網查了一下資料,初步瞭解一下XPE,
發現這個開發平台確實挺強大的,可以對Windows XP進行定製構造,降低系統尺寸,該系統的應
用範圍也挺廣泛的,可以在各類基於PC架構的嵌入式系統上應用,比如ATM,機頂盒,遊戲機,醫學
裝置等等,甚至能夠在無頭系統(無顯示屏)上使用。開發工具也比較好用,上手很容易,當然最迷人的
特性莫過於如下兩條:

1、Win32 API 相容,可以運行任何Windows平台下的程式。
2、可以配置增強型寫過濾器保護系統磁碟分割。這就使得系統磁碟分割不可以被更改,這很符合嵌入式系統的應用需求。
    事實上,ARM平台的嵌入式系統也是這麼做的,通常作業系統裝在ROM裡,使用者資料裝在可寫的FLASH裡。
                
現在把最近開發XPE系統的過程中解決的一些問題總結出來,算是一個積累的過程。當然,解決這些問題的時候,沒
少求助於微軟的技術人員和熱心網友,特向lzg_ad、aawolf表示感謝!

一、如果要程式支援Access資料庫的訪問,需要添加哪些組件?
          如果編譯出的XPE組件不包含資料庫相關的組件,那麼在XPE下啟動並執行程式肯定是無法訪問*.mdb資料庫
檔案的。要想支援資料訪問,必須添加以下組件:
Microsoft Data Access Components (MDAC)
Jet Database DAO Support
Jet Database Data Extensions
Jet Database Engine
Jet Database Foreign Data ODBC Extensions
Jet Database ODBC Support
Jet Database OLEDB Support
Primitive: Odbc32
Primitive: Odbcint
System Control Panel
Administration Support Tools
Computer Name User Interface

尋找組件最快捷的方法就是在Search欄進行搜尋。如果仍然不能找到想要的組件,要先調整可見度的閾值設定,
調整方法為:在目標設計器菜單Tools->options->Advanced中,更改Minmum的值為100

二、配置了EWF之後,FBA可以正常啟動,但FBA之後,就無法啟動系統,提示找不到hal.dll

    出現該問題的原因是XPE中使用了EWF NTLoder,在FBA時,XPE構建了EWF分區,而EWF分區的出現使原
有的XPE作業系統所在的分區路徑發生變化,例如:FBA前ARC路徑是:
multi(0)disk(0)rdisk(0)partition(2)/WINDOWS="Microsoft Windows XP Embedded" /fastdetect
而經過FBA後,變成了:
multi(0)disk(0)rdisk(0)partition(3)/WINDOWS="Microsoft Windows XP Embedded" /fastdetect
所以再次引導時,按照boot.ini檔案中的ARC路徑,就找不到作業系統及hal.dll檔案了;解決方案很簡單,修改boot.ini即可。

三、在XPE下啟動並執行程式,無法顯示微軟的ActiveX控制項mshflexgrid
                  初開始以為是控制項沒有註冊的問題,用Regsvr32.exe註冊了mshflxgd.ocx,但問題仍然存在,看來不是控制項沒有注
冊引起的。在XPE下安裝了VC之後,問題解決,但顯然不能通過安裝VC來解決這個問題。上網繼續尋找資料,終於發現
真正原因,原來是微軟的OCX控制項大多需要許可證,有了分發許可證的控制項才可以正常運行。問題找到了,解決方案如下:

首先,要把mshflxgd.dep 和 mshflxgd.srg 都編譯到windows/system32目錄下(這兩個檔案可以在安裝過VC的Windows系統下找到),
然後還要匯入一個登錄機碼目
[HKEY_CLASSES_ROOT/Licenses/1F3D5522-3F42-11d1-B2FA-00A0C908FB55]
@="gcfjdjecpchcncdjpdejijgcrdoijjfcieod"
匯入登錄機碼目可以採用製作組件的方法,在組件設計器中左邊的組件樹型列表中有Registry Data一項,點擊右鍵可以添加一個註冊表鍵

這個問題在標準版的Windows下也會發生,現象是使用了OCX控制項的程式在別的電腦上不能運行,如果既不是缺ocx檔案,
也不是因為控制項沒有註冊,那麼就有可能是缺少許可證引起的,可以用類似的手法解決。

四、USB介面的印表機無法驅動的問題
        現象:已經正確的把印表機廠商提供的驅動打包製作成組件,然後編譯進了XPE鏡象,但XPE在FBA之後仍然找不到印表機,
即使在XPE下現場安裝印表機的廠商驅動,也仍然無法安裝。
        解決方案:
       首先需要添加印表機相關支援組件:
printer support
Computer Name User Interface
Administration Support Tools
ECP Printer Port
Printer port logical interface
Printer Port
USB Printing Support
Class Installer - Printers
Client Printing
Local Printing
Client Printing Support (宏組件,可以選擇性添加)
Local Printing Support (宏組件,可以選擇性添加)
Server Printing Support(宏組件,可以選擇性添加)

如果你的印表機是USB介面的,那麼接入印表機後,要自動識別的話,須添加下列USB相關支援組件:
USB Storage Device
USB Mass Storage Device
USB Root Hub
Generic USB Hub
Standard OpenHCD USB Host Controller
USB Composite Device
HID Keyboard Device
HID-compliant consumer control device
USB Human interface device
USB ATAPI Storage Device
HID-compliant mouse

五、運行程式提示虛擬記憶體不足

如果編譯出的XPE作業系統尺寸超過200M,運行大一點的程式就會提示虛擬記憶體不足。
這是由於編譯出的XPE作業系統沒有虛擬記憶體引起的。
設定虛擬記憶體的方法是:在目標設計器中的電源管理組件(Advanced Configuration and Power Interface (ACPI) PC
或者Standard PC)->Settings->System Pagefile 或MPS uniprocessor PC 中設定,首先勾選Enable pagefile support,
然後設定分頁檔的初始值和最小值;
如果允許在進入XPE系統之後手動修改虛擬記憶體,那麼首先保證XPE中使用了Explorer Shell和Task manage,
然後添加Computer Name User Interface組件,然後在做好的XPE作業系統中電腦屬性中->進階->效能->設定->進階->虛擬記憶體- >更改
就可以更改虛擬記憶體了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.