2007年5月23日星期三

ARM模擬的狀態保存

前文「透過USB連線與OpenMoko模擬裝置互動」指出現在透過qemu來模擬openmoko已有相當便利的互動機制,我們也隨時可在Qemu Monitor中監看與控制虛擬機器的狀態,Andrzej Zaborowski最近實做了ARM模擬的狀態保存,所以現在可快速load/save vm,如此一來,應用程式的開發與驗證更加便利。目前也整合到openmoko-emulator中,取得最新的發展版本:

$ svn co https://OpenSVN.csie.org/openmoko_addons/openmoko-emulator
現在openmoko/run.sh這個script已處理qemu-img的操作,所以我們只要如往常一般編譯與執行即可。舉例來說,我們希望保存開機完成、見到整個OpenMoko UI的狀態,那麼只要按下Ctrl-Alt-2以切換到Qemu Monitor畫面,在提示符號下先暫停虛擬機器的系統模擬動作:
(qemu) stop
接著就可以保存狀態:
(qemu) savevm mainwindow
參數 "mainwindow" 只是一個識別名稱,事實上我們可以在不同的狀態給予特定的識別,這時候我們可以結束虛擬機器的執行:
(qemu) quit
然後我們重新啟動openmoko-emulator (run.sh),立刻切換到Qemu Monitor,隨後在命令提示打入指令以查看保存的狀態:
(qemu) info snapshots
應該會得到類似以下的輸出:
Snapshot devices: mtd
Snapshot list (from mtd):
ID TAG VM SIZE DATE
1 mainwindow 22M 2006-05-23 11:11:35
要還原已保存的狀態相當直覺,只要打下指令:
(qemu) loadvm mainwindow
再按鍵Ctrl-Alt-1切回執行畫面,這時候就可以看到上次我們保存的狀態與畫面了,當然,配合前次提到的Linux gadgetfs,我們還可存取USB (emulated) network,這樣進行應用程式開發的彈性也提昇許多,若再引入自動化的機制,未來要實做「時光機器」也是相當可行的。

沒有留言: