作者:ARM-WinCE
簡單介紹一下WinCE下應用程式的升級,一般在WinCE啟動以後,系統可能包含多個應用程式,其實升級也很簡單,就是通過網路下載更新某一個應用程式,這裡知識介紹一種方法可以對包括shell或其他應用程式進行升級。
如:
這是一個系統啟動及應用升級的狀態圖,簡單介紹一下:
Hardware Boot: 上電後,硬體初始化,一般運行一個bootloader,Eboot或者什麼,然後載入WinCE核心。
OS Bootup: WinCE核心被拷貝到RAM中運行。
Application Bootloader: 當WinCE運行以後,自動運行一個小程式,可以稱它為Application Bootloader,該應用程式對系統硬體進行基本的初始化和檢測,比如初始化聲音和顯示,檢測乙太網路串連等。然後調用CreateProcess來啟動主應用程式,比如shell.exe或者其他的UI應用程式。然後等待訊息,等待什麼訊息呢?等待主應用程式啟動後發出的運行正常的訊息,該視窗訊息應該是一個廣播,這樣Application Bootloader就知道調用CreateProcess啟動的進程已經運行正常了,否則將通過網路發送出錯資訊或者在LCD上面顯示錯誤資訊等。
Application:這個就是我們的主應用程式了,一般可能是基於UI的。主應用程式會接收來自網路的Update Command命令,然後進行應用配置或者應用程式的升級。
Application Configuration Update: 這個是指關於應用程式的配置資訊,應用程式啟動以後,會讀取設定檔中的配置資訊,比如是不是要全螢幕顯示,顯示的圖片,圖片是否可觸摸,圖片螢幕上的位置等。這個根據需要,可能你的應用程式根本不需要這個,那麼你就忽略它。
Configuration Update: 升級命令為配置資訊的升級,那麼下載並更新設定檔,主應用程式會重新讀取設定檔中的資訊,然後重新運行。
Application Update: 如果主應用程式接收到的命令是升級應用程式,那麼檢測是否升級主應用程式。如果不是,那麼直接下載並更新本地應用程式即可。如果是要升級主應用程式,那麼首先將主應用程式備份,然後下載最新的主應用程式,並進行CRC校正。下載成功後,發送訊息給Application Bootloader表示要運行最新的。Application Bootloader會調用TerminateProcess函數終止當前主應用程式的運行並予以刪除,重新命名最新的,然後調用CreateProcess來啟動更新後的主應用程式。
基本把原理說完了,只是介紹了一種方法,通過一個Application Bootloader來完成應用程式的升級工作。