2007年4月5日 星期四

OpenMoko/Neo1973硬體模擬

上個月底有幸能與OpenMoko團隊互動,做了簡要的紀錄「遇上OpenMoko」,雖然語焉不詳,但心中的感動實在是很難一語道盡的。週二去竹科替某單位進行教育訓練後,技術交流的過程讓我有種感觸,為數眾多的開發工具往往給予我們頗大的挫折感,就如以前聽過的一句話:「現代人的問題不在於沒有工具、缺乏資源,相反地,資源五花八門、工具也多到令人無所適從」,我想,針對嵌入式系統開發與整合的OrzLab,應該提出一些解決方案,就如之前提過的「視覺化系統模擬與偵錯」一般,我們可善用既有的工具,進一步延伸為更直覺且多元的開發模式。

之前主要在PXA27x的硬體平台進行開發,最近則因為Jollen兄提供其最新的「Jollen-Kit! 開發板」與OpenMoko/FIC提供「Neo1973 Hardware」,讓我對這兩款同是S3C2410為基礎的平台有高度興趣。除了「Intel/Marvell PXA27x的系統模擬」外,Neo1973 (目前硬體為GTA01) 的硬體模擬也進行中,openmoko採用的bootloader是U-Boot,wiki的 "Bootloader" 做了很詳盡的解說,系統模擬器的畫面如下:

U-Boot允許自訂選單,在我們這個以qemu為基礎的模擬器中,選單項目可按下Enter鍵作切換,當按下Space鍵時就執行指令,當然,還等什麼,咱們就boot系統,模擬器的畫面如下:
熟悉的小企鵝就現身,當Linux走出PC,進入移動裝置如手機時,給予我們相當大的揮灑空間。OpenMoko的軟體架構採用X Window System,並使用OpenedHand維護的應用程式套件,以下是進行觸碰螢幕校正的模擬器畫面:
為了要符合觸碰螢幕的運作行為,這個以qemu為基礎的模擬器做了些許的修改,避免被grab,最後我們終於看到openmoko的軟體環境:
透過OpenEmbedded,我們可以快速建構整個system image,OpenMoko官方也有個build host,提供最新的image與ipkg feed。這個模擬環境暫時命名為 "openmoko-emulator",原始程式碼與相關資源可在此取得:http://mdk.linux.org.tw/~jserv/openmoko/。以下是 "openmoko-emulator" 的README內容:

== Introduction ==

The package includes the modified qemu for emulating Neo1973 phone aka FIC GTA01 aka OpenMoko based on S3C2410A.

== Requirements ==

Software:
1. Linux distribution. Tested in Debian Sarge and Ubuntu 6.06/7.04
2. Packages: gcc-3.4, lynx, libsdl1.2-dev, python, perl


== Usage ==

After extracting the snapshot of this emulator, change to source directory. Then, perfom the following instructions:

(1) Build from source
# ./configure
# make
(2) Download OpenMoko images from nightly build
# ./openmoko/download.sh
(3) Install OpenMoko to NAND Flash
# ./openmoko/flash.sh
(4) Run the emulator
# ./openmoko/run.sh
週邊的部份,GSM modem與AGPS會紀錄其enable/disable狀態,其餘則算是堪用,這當然只是個起點。未來或許會比照「深入淺出Hello World」系列演講的模式,對這類在Embedded Linux開發過程中,引入硬體模擬器的突破,探討如何更深入掌握系統與加速開發流程,同時這也彰顯整合開發工具的需求,所以最近會繼續尋求合作的機會。

沒有留言: