2007年4月11日 星期三

構想:Embedded Linux + Mozilla

多年前曾在LinuxDevices.com閱讀The Embedded Java+Linux Quick Reference Guide系列文章,正值研究Java Virtual Machine最熱衷的時期,那時候深信此概念不移,而在後網路時代的今日,我開始思考不同的觀點。就跟Forth一般,VM只是一種途徑,重點是資訊技術能解決什麼問題、得以帶來什麼新的想法,是此,我又回頭思索過去投入的Web Browser設計項目。

週日(Apr 8)約了來自Mozilla Taiwan的朋友出來討論OrzLab的計畫,其中包含結合Embedded Linux與Mozilla runtime的整合執行環境,簡單來說,就是系統簡約到Linux與Mozilla兩部份,後者可取代傳統的應用程式。這樣的概念不算新,在《Rapid Application Development with Mozilla》一書第一章〈Fundamental Concepts〉可看到許多實例,其中有個來自OEone Corporation的HomeBase desktop,其展示畫面如下:

OEone HomeBase desktop是個很優秀的Linux桌面環境,整合許多應用程式與軟體元件到Mozilla的Framework中,諸如文書處理工具、多媒體程式、線上通訊、TV瀏覽等等,並以 XML interface (XUL + Javascript + XBL) 作為顯示與輸入的基礎,與使用者互動,詳細的報導可參考:
以下是個別元件執行的畫面:
(主瀏覽畫面)
(通訊錄)
(郵件程式)這些都是以XUL去描繪的,相當令人驚艷。OEone HomeBase的Application Framework稱為 Penzilla,雖然立意不錯,但推出的時間點不佳。在當時,Linux下文書處理與多媒體都不甚良好,可想而知,直接挑戰桌面應用會是充滿無數困難,所以,OEone不幸於2003年停止發展並售出其產品線。

然而,如果我們從嵌入式系統的角度來看Penzilla,這反而是個新機會,特別在Web 2.0的時代,許多服務強調高度整合,許多針對特定需求的裝置也被提出,如 PMP (Portable Media Player) 或Web tablet一類。同時我們也可看到過去我們使用 PC 建構的裝置,如Kiosk (擺放於捷運站的導覽系統或提款機一類) 與遠距教學系統,其裝置往往用Windows 2000加上VB或Delphi開發的前端介面,不僅缺乏彈性,也造成維護的困難。

是此,OrzLab 成立的本意就是希望藉由「平台導向」的開發,將open source與既有的資源整合起來,並且以更好的軟硬體整合,創造新的價值,所以今年會試著用ARM或MIPS一類的低價硬體裝置作為開發驗證之硬體,將Embedded Linux與Mozilla整合起來,並建立一系列XPCOM/XUL 為基礎的元件。

相當幸運的,OEone雖然已結束產品線,其原始程式碼仍被保留,存放於SourceForge.net,其專案名稱為Penzilla Desktop,最近著手將這些舊的軟體建設移植到Firefox 2.x上,當然,沒有必要全部移植,只要將我們感興趣的部份,也是真正有需求的項目即可。

2007年4月7日 星期六

OrzLab的圖示

因為本實驗室陸續開發若干嵌入式系統軟體與韌體,諸如硬體模擬器與視覺化介面等,總需要一些logo、Linux/BSD boot screen,或者Application splash screen等,所以在「OrzLab正式公開」一文也特別提到歡迎對美工擅長的朋友貢獻。非常感謝Yuren Ju、penk的學妹ramihaha、阿怪(aguai) 與其朋友,及ct等人貢獻了許多精美的圖示,整理如下:(某些圖示因尺寸考量,先行刪除,待日後wiki上線再補)

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開發過程中,引入硬體模擬器的突破,探討如何更深入掌握系統與加速開發流程,同時這也彰顯整合開發工具的需求,所以最近會繼續尋求合作的機會。

2007年4月1日 星期日

2007年四月上旬行程

應該採用社群行事曆的機制,不過先紀錄一下今年四月上旬的暫定行程:

OrzLab已正式公開,硬體設備可望陸續到位,現在就是展現我們「自由」與「創意」的時機 :-)

OrzLab正式公開

OrzLab是什麼?即便參考其全名"Open RazzmatazZ Laboratory"也很難令人聯想到這樣的實驗室到底是為了什麼目標成立。身處於台灣,每年都可看到為數可觀的電子產品出貨,這絕對是台灣的驕傲,同時在質與量都有傲人的表現,然而,當自己實地參與PDA、SmartPhone、數位電視、Wireless router,及儀控系統的設計後,才發現不少工程成本是耗費於那些重複的工作中,又因為缺乏產品特色,就陷入惡質的成本價格戰中,原本產品的特色與創意早已不知去處,更慘的是工程人員終日處理無趣的技術問題中度過,逐漸喪失熱情與創意,這絕對不是我們樂見的。

OrzLab作為一個非營利的組織,沒辦法改變上述的情況,但我們有能力可為硬體帶來新的生命,並且重現那份熱情與創意,其出發點就是善用自由軟體 (Free software / Open source software)。
於是乎,這個實驗室的基本想法是能讓更多創意透過自由軟體,落實於嵌入式裝置或者特定的硬體中,具體來說,就是避免重複的專案開發,並針對嵌入式系統或系統整合廠商需求,提出有價值的解決方案,建構一系列自由軟體為基礎的系統架構。

上述的文字乍看似乎很難抓到重點,但回頭過來思索:何以電子裝置生產如此蓬勃的地方,人們常苦於缺乏可用以驗證想法的裝置?原因很單純,不是沒有硬體,是缺乏開放的軟體與韌體。就如我們所知,軟體賦予硬體新的生命,倘若裝置中的軟體趨於封閉,這也意味著其生命週期有著天生的障礙,這也是我們往往得退而求其次,用相對高價、高功耗的個人電腦來驗證自己的想法,有時候我們的要求就是單純到「能否把MP3 Player軟體放到硬體裝置中,當作床頭音響使用?」技術上絕對可行,而且可能根本不需更動任何一行程式碼,這之中沒有什麼魔法,但我們往往不得其門而入,更別說只是滿足 "Orz" 這類無釐頭文化的呈現。

這是取名為"OrzLab"的主因:只要我們能讓裝置中的軟體獲得「解放」,轉化為自由軟體,再如何奇特無比、只能訴諸 "Orz" 形容的嘗試 (即OrzLab裡面的"
RazzmatazZ") 都是可行,是的,我們絕對可以做到,而且享有台灣低廉的硬體成本優勢,當然,要創造潛在的嶄新產品更是大有機會。

Linux/BSD以及大量的自由軟體廣泛被移植到不同的硬體架構,激發出我們的熱情與使命感,驅使這個「創作型」實驗室產生,其中「自由」與「創意」可說是最大的精髓。現有的專案計畫都是針對嵌入式系統的應用,伴隨著關鍵性的技術議題,我們可透過開放的網路資源與協同合作,在一定程度上克服既有議題,提出可累積的自由軟體解決方案。

所以,換言之,OrzLab就是個創作平臺,允許任何創意化為具體的專案項目,最終可落實於硬體裝置中,目前OrzLab 成員來自台灣的自由軟體貢獻者,以 Linux/BSD 為主要的開發環境,對嵌入式系統開發、多國語文處理、Web 應用程式,或者是低階系統控制皆有一定的掌握度。 相當感謝FON Taiwan與OpenMoko在本實驗室初期作了最具體的資助:提供可修改的硬體裝置,並具備開放規格,這意味著,我們立刻即可將「自由」與「創意」這兩大精神注入原本死板的硬體。想像一下,我們可把Ajax引擎移植到FON WiFi Access Point裡面,然後死板的設定介面就瞬間變成變化多端的Web Application,我們當然可直接連線到FON中寫blog或編修wiki,而且享受最直觀的介面,為什麼不作呢?

請查閱OrzLab開發者日誌,以取得最新開發動向:
http://orzlab.blogspot.com/

現階段的開發方向有:

  • Realtime Linux/BSD
  • Embedded i18n
  • Embedded Web/Ajax framework
  • System emulation & Optimization

基於既定的開發方向,OrzLab希望能取得硬體廠商的支持,提供硬體與技術支援,當然最終成果也會是以自由軟體的形式釋出。選擇在四月一日公開,一方面是基於對"Orz"的戲謔,另一方面來說,企盼在台灣透過自由軟體,為硬體帶來新的生命,如此的行為可能會被視為愚人之舉,所以就待時間來考驗我們。我們歡迎各方面的朋友加入,不見得要對技術領域有深入掌握者,事實上,對於美工 (logo / icon / splash screen)、文字素描、溝通協商 (OrzLab常有與硬體製造商洽談的機會) 有能力者,也相當歡迎。至於學生族群,如能與OrzLab合作,可說是兼具學習技術、培養技能,並學以致用的好機會。

聯絡資訊:

  • 協調人暨聯絡人:Jim Huang (黃敬群 / jserv),透過email取得聯繫:jserv.tw (at) gmail (dot) com
  • 討論群組:http://groups.google.com/group/orzlab
  • IRC線上討論:#orzlab (FreeNode.net),採用UTF-8編碼