2007年4月30日 星期一

當Java遇到OpenMoko

對許多人來說,openmoko真是個令人驚奇的平台,這不僅是個開放系統,而且也引入許多原生於桌面環境的技術,甫成立的GMAE (GNOME Mobile & Embedded Initiative) 就是個極佳的切入點。作為一個Free Java (VM) hacker,最大的樂趣就是廣泛讓Java技術散佈到世界上不同的角落,當然,也包含了openmoko,考量到openmoko的行為模式比較類似桌面系統,而非傳統的CDC/CLDC執行環境,所以我選擇了KaffeCacao這兩個以GNU GPL發佈的Java Virtual Machine實做,這兩者都以GNU Classpath作為Class Library實做,所以有不錯的相容度。

經過一番努力,KaffeCacao這兩個Free JVM都可在openmoko上運作,而我則對後者予以很大的關注,因為其ARM jit engine日前已經以GPL釋出,而且Cacao這兩年內的效能提昇幅度相當不錯。我在Planet Classpath寫了一篇紀錄「Cacao VM running on openmoko」,節錄如下:


Then, back to Free Java world, I met several hackers around the world in #kaffe, #classpath, and #cacao IRC channel. Since I had portd Kaffe to Xscale-based mobile phones, I decide to take Cacao for a try. After some slight modifications (with the help from twisti), Cacao works on OpenMoko GTA01, and here is the output for typical "Hello World" application in Java:
root@fic-gta01:/var/tmp/cacao$ ls *.class
fp.class hello.class
root@fic-gta01:/var/tmp/cacao$ cd bin
root@fic-gta01:/var/tmp/cacao/bin$ ./cacao -cp .. hello
Hello world
root@fic-gta01:/var/tmp/cacao/bin$ uname -a
Linux fic-gta01 2.6.20.7-moko8 #1 PREEMPT Sat Apr 14
07:40:05 UTC 2007 armv4tl unknown
It is based on Cacao SVN (along with GPL'd ARM jit engine) + GNU Classpath version 0.95. However, I still manage to let gtk-peer work on Cacao inside GTA01 device. But I am of the opinion that it is really a good start point for joint of the power from Free Java (GNU Classpath, Cacao, Kaffe, etc.), OpenMoko, and Embedded Linux.

Also, I met guillaum1 in #cacao, who is the developer of MIDPath, and he suggested me to try the combination of cacao-cldc (cacao without GNU Classpath) + MIDPath. The design of MIDPath is very flexible, and it allows to have MIDP2 working on top of cacao-cldc (without Classpath) or standard cacao (i.e with Classpath). I will do that later.

很快收到許多回應:
當然,這只是個出發點,可說是銜接桌面技術到OpenMoko這類裝置的概念驗證,我仍在評估Sun的PhoneME (逐漸以GNU GPL釋出) 的整合性,同時也希望AWT/Swing仍可「有限度」使用。

Have fun with OpenMoko/Neo1973

chihchun今天早上寫了一篇關於OpenMoko/Neo1973的blog文章「Have fun with OpenMoko/Neo1973」,取得同意轉載如下:


自從我寫了「I Want A Personalized Phone」後,就持續注意TuxPhoneGreenPhoneOpenEZXgpephon的消息。當然還包含了OpenMoko,OpenMoko是真的令人興奮的計畫,因為除了此計畫是真實使用自由軟體的開發平台,而非採用多授權或非商業授權的平台產品外:也完全採用有GPL驅動程式的硬體元件,如「挑選 WiFi 模組」。而且OpenMoko與FIC的合作模式使量產上市變成可能,你不需要逐一的「自行 DIY」,大幅降低自訂軟體的門檻。

話說Jserv是周遭朋友第一個拿到Neo1973的人,當然要跟他凹來把玩一番,於是就在4/14 OSDC結束後的晚上,把Jserv拉到Mix coffee & tee進行了一場小型的 BoF

目前FIC/Neo1973的硬體功能是:
  • 120.7 x 62 x 18.5 (mm)
  • 2.8" VGA (480×640) TFT Screen
  • Samsung s3c2410 SoC @ 266 MHz
  • Global Locate AGPS chip
  • Ti GPRS (2.5G not EDGE)
  • Unpowered USB 1.1
  • Touchscreen
  • micro-sd slot
  • 2.5mm audio jack
  • 2 additional buttons
  • 1200 mAh battery (charged over USB)
  • 128 MB SDRAM
  • 64 MB NAND Flash
  • Bluetooth (2.0)

Neo1973 running OpenMoko

OpenMoko的wiki網站上有著驚人豐富的資訊,甚至連如何拆解機器的步驟都詳實記載,依照站上的資訊逐一進行,很快的就一步一步的把機器拆開,順道也reflash一下最新版的kernel與rootfs,感興趣的話請參考我倒出來的一些資訊: ipkg list,dmesg,cpuinfo。但顯然硬體與應用軟體尚有許多項目待完成,急需開發者的參與。

Neo1973 unboxed

有意思的是 Gnome 基金會在幾天前於Embedded Linux Conference宣佈 GMAE 計畫 (Gnome Mobile & Embedded Initiative),引起產業與社群的極大迴響。忠實希望與期待可以在此平台上,建立一個共用的開放嵌入式系統應用軟體架構。

jserv with a nameless girl

在此感謝Jserv借玩手機 (照片男方是Jserv,女方為不知名,但Jserv很願意主動搭訕認識的女生。其實我也很願意認識,啊!只要是女生我都願意認識)。週末很榮幸的與Sean Moss-PultzHarald Welte、Jserv、Jollen與大眾電腦的幾位長輩/前輩們聚餐,收穫甚多。Jollen在自己的的 blog上撰寫了相當深入的OpenMoko報導與嵌入式系統的開發知識,值得一讀。現在只希望我能夠拿到下一波生產的手機,這樣才有機會 happy hacking。

BTW,我正在安排Sean與Harald於Tossug聚會上提供演講,Sean Moss-Pultz是OpenMoko的產品經理,而Harald Welte是OpenMoko首席軟體架構師,也是Netfilter/iptables的開發者,同時也是gpl-violations.org的創辦人。如對此聚會感興趣,請告知我吧。:-)

2007年4月20日 星期五

OrzLab的吉祥物

OrzLab很多資源都仰賴於社群,不僅軟硬體建設,連同美工亦然。之前已有眾多「OrzLab的圖示」,作為應用程式的logo或開機的圖片使用,算是相當充分了,但缺少吉祥物。在「構想:Embedded Linux + Mozilla」一文提到與Mozilla Taiwan的朋友互動,會談當日,KKFox作者C.H.Weng的女友LitGrass就在聚會討論中,悄悄繪製出一系列可愛的造型,爾後lzy將手繪版本透過inkscape轉換為向量圖,現在我們的吉祥物大致如下圖:
維基百科的Orz條目給予許多精闢的說明,那麼,姑且稱這個由Grass貢獻的這個可愛的吉祥物為「囧囧」(讀音:「炯炯」)。雖然OrzLab是探討軟硬體整合與系統設計的實驗室,但真正的標的環境是生活化的種種資訊裝置,如PDA、手機、Home Gateway、... 等,上圖可看出"Orz"走出電腦,試圖朝向更多元的領域發展,很不錯 :-)

參考資訊:ckhung - 「向量繪圖軟體 inkscape 簡介

OrzLab::黑客鬆紀錄

以下轉錄自cclien的紀錄「台北行: 台灣黑客鬆」,以輕鬆的口吻介紹OrzLab成員4/12-4/13兩日於黑客鬆的參與活動內容:

亂入

hackathon 舉辦的前兩天,意外知道 Jserv 將在這次 hackathon 活動中以 La Fonera 當作 ajax/embedded 的平台。由於之前拆 La Fonera 拆到有興趣,於是狗膽請 Jserv 邀請我一起參加 Hackathon。就在這樣的臨時決定下,趕緊把行李打包上台北。


迷路

搭上十一點從台中出發往台北的巴士,如預期的一點整到達台北市。坐上捷運,到了會場附近,肚子咕嚕咕嚕的叫,只好先隨便找了一間 Mos 坐進去,填飽肚子先。剛好我忘記把地圖存檔,靠著漢堡店附近的好鄰居無線網路上了網查地圖,吃飽後直接往南海藝廊移動。


南海藝廊

到了活動網頁所示的地址-南海藝廊,是一間看起來像古早平房的建築物,一度還以為是走錯地方。後來看到二樓陽台上有穿著白色短T的阿宅(?!),才確定我沒走錯路阿。到了會場,已經有很多長輩到了,擺滿貼滿貼紙 laptop 的桌子充滿了 hacker 的味道。


認親

因為不太熟悉與會的長輩,所以在放下行李之後,就在活動地點亂晃。晃來晃去,終於等到了四元大大 (雖然也是素未謀面,但至少有在網路上聊過天),聽完 mikimoto 爆料 talk 之後, ajax/embedded team 的成員: Jserv 大牛、Mat 紛紛到齊。

Orzlab


開工

在成員到期之後,變馬上開始動工,先把 La Fonera 大卸八塊準備連接 serial console,結果馬上中招。我帶了一條傳輸線,但是只有 RS232 接頭,大家的 laptop 都太新了,沒有人的機器上面有 rs232 的接頭,後來 fourdollar 大大終於生了一條 USB to RS232 出來。打開了 sshd 之後,便把 Fonera 接到一台 hub 上,此 Lan 就當作 hacking Fonera 專用的 Lan 啦。

Orzlab 的桌子


又中招

Jserv 事前準備了一份 toolchain,編了一隻小程式之後馬上丟到 Fonera 試試看,怎麼跑都跑不起來,突然想到這個招我之前也中過。利用 file 工具看一下生出來的 binary,啊哈!果然是 LSB 的問題。大部分 openwrt 的硬體都是 mipsel (MIPS, Little Endian) 的架構,使用 Atheros chip 的 Fonera 就是跟人家不太一樣,是使用 MSB。再來就是 build 程式 build 到死,不過等待時也不會閒著,因為旁邊有 opcafe 提供的美味餐點。

Working hard orz


氣氛

正當我還在跟 toolchain 奮鬥時,隔壁桌 RoR 組的劉燈突然興奮的大喊了一聲 "works!",哈,突然回憶起以前跟砲王、朱立三個人關在一起趕專題的時光阿,原來數年前我們就進行過一個小小 Hackathon 了!Working hard 的時間總是過的特別快,不知不覺就到了七點多,一行人到建中附近吃了還蠻實惠的晚餐後,繼續回南海藝廊奮戰。

RoR 組的討論非常熱烈


效率

光 build 一個 lighttpd 到 mips 平台上就花了我不少時間,lighttpd 雖然對 server 來說是 light,但是在 embedded 系統上仍屬於大噸位的程式,後來大家討論之後的結論是把 lighttpd 把整個 ajax/embedded 中抽離,推翻舊架構只在幾小時之中,Hackathon 的效率果然驚人!原本預定九點半就結束的活動,一直拖到十點大家才心甘情願的離開。

結束活動之後,馬上搭上捷運往小強的宿舍奔去,原來政大有單人房的宿舍耶,真高級。

Day2: working working working

我真的忘了第二天我在幹嘛,就是一直改 code、bulild、查資料、中招.. blahblah,表示真的有融入,所以啥都忘了?所幸有帶了相機,所以我還記得我中午吃了牛排 XD;背包裡的 google 紀念品,提醒我我留了 E-mail address 給 google 的 HR 大嬸。

午餐: 百里香牛排

就這樣,不知不覺就到了活動結束的時間,移往師大附近的 morelax 吃晚餐,由於一次湧入的鄉民太多,對吧台造成了 DOS ,所以在我吃完了我覺得等很久的晚餐之後,四元大大還在那邊餓肚子,哈。吃飯時跟 Ingy 聊了一下天,原來他也喜歡騎機車,在美國有一台 Ducati Monster。

Ingy and meDay 2 結束後續攤


總結

感謝辛苦主辦 Hackathon 的大大們,讓我有這次機會跟高手們一起窩在一個小房間,為了同一個目標一起 hacking,好久沒有這麼熱血了,真爽。希望之後還能有這種活動,如果時間更長就最好了(希望到時候我還有空參加)。

Link: 活動時拍的照片

2007年4月19日 星期四

OSDC.TW 二三事

4/14-4/15兩天的OSDC.TW活動終於結束了。

OSDC.TW 2007 終於結束了,這幾天陸續看了魔法設計師BlueCatleothYuren和一些相關的部落格後,覺得自己也該寫篇心得和大家分享一下這次的活動心得。

今年是第一次參加這麼大型的活動,個人感覺是相當新鮮的回憶。 相較以往參加的活動,OSDC.TW所聚集的人氣相當旺。這次活動還吸引了許多國外知名的Developer遠道前來共襄勝舉。 演講內容的深度和廣度都很棒。

這兩天聽到的講席有:

  • jserv - RT Nanokernel for Embedded Linux
  • Audrey Tang - Jifty
  • clkao - svk: version control without the headaches then pushmi
  • Shu-Chun Weng - The Value of Everything But the Cost of Nothing -- a Tutorial to Haskell
  • Marek Lindner - Wireless Meshing - the future of infrastructuring
  • Macpaul Lin - Porta2030
  • MGdesigner - 2D fonts generator
  • Lightening talk

一個議程約莫是80分鐘左右,所以講者所準備的題材大多是以介紹概念和展示為主。 最大的收獲無非就是能一睹傳說中的Developer的風采,甚至有機會能和長輩面對面聊天。

RT nanokernel這個場當然一定要先捧一下。每次聽jserv的演講都有幾個不錯的地方,除了都會有令人XD的笑話,另外就是一定會有Orz的Demo。 jserv戰鬥力真驚人,前一天還在CodeJam衝鋒陷陣,隔天還能馬上就準備好質量俱佳的報告。

生平第一次見到傳說中,被喻為「台灣電腦十大高手」的AudreyT,台風穩健,人看起來也非常有氣質。 整個Talk的內容非常流暢,一個步驟接一個步驟的解說如何用Jifty來作出doxory這樣的網站。 能用程式碼為主的內容作投影片,作簡短扼要的解說,還能保持內容的趣味,真的非常厲害。

第一次見到clkao是前一天在多鬆和參加CodeJam的人吃飯時看到的,他比我想像中的還要親切許多。 在當天的議程,他即介紹他著手寫SVK的源點和過程,還有一些設計理念。 svk我用得不久,大約才一個月的光景,然而svk所帶來的便利,已經成為「日常生活」中不可或缺的一部分。 而clkao他可以為了寫一個程式,空出整整一年的時間去Cook它 (而且也只花一年),真是令人佩服不已。

Shu-Chun Weng的Talk是介紹Haskell,一個我完全沒有聽過的程式語言。 短時間內要接受新的語言概念,對我來說還是太難。 聽到一半我就聽不懂了,感覺這東西用來作計算的功能似乎不錯。

Marek Lindner和Macpaul Lin則是介紹行動Wireless的概念。也就是利用AP和AP互聯,以建立網路通訊。 Marek用簡單的觀念來介紹這個架構的原理,而這個領域其實很難,應用非常廣。我們國內前陣子TOSSUG社群發起像Porta2030這樣的Project來玩這些東西。 最有趣的是Marek所秀出的他們在柏林市Wireless AP之間連線圖,感覺真的非常棒。 而Macpaul就是接著介紹和展示一些Porta2030的一些成果,還帶了很炫的Porta2030的衣服,相當有趣。

MGdesigner的Talk是關於漢字顯示的最新技術,在此之前就聽過他的演講,印象相當深刻。用組字的方式來顯示漢字,每一個人多多少少都想過。然而這個想法一直沒辦法落實到整個資訊系統上。 今天這個成果被開發出來,而且能開放專利並用自由軟體的來發展。對整個文字文化的影響非常深遠。 連閩南語暨客家語輸入法的開發者Arne Goetje(高盛華) 也自百忙中抽空來聆聽,可見得其重要性。

Lightening Talk大概這次大會裡最活潑的節目了,自由報名,每個表演限時七分鐘。 每個上台的人得在這個時間內把要講的內容講完,否則就會被主持人殘酷的搶走麥克風了。很酷炫的東西像是可以計算筆電傾斜度來操縱玩具大炮,虛擬的Flicker框架。jserv用C/C++實做Ajax/embedded,還可以用gdb來debug,此外,還有高橋征義 (也就是高橋流簡報法的創始者) 本人的簡報,最後再加上MGdesigner的組字Demo。Lightening Talk不論是效果或是笑果都非常棒,真的是一個特別的節目。

第一天晚上後來有跟Ping他們去古亭那裡吃飯。去了好幾個人,像是jserv、chihchun、yurenju、fourdollars、Marek等等。可惜我掛心於第二天的Talk,沒能好好放鬆心情的跟大家一起聊天。 不過後來還是跟Marek的朋友聊起來了。他的朋友的英文不是很好,就用德文找我聊天。 結果就是不斷的查線上字典伸單字。不過有趣的事後來他Demo了很炫的3D桌面程式給我們看,才知道他們就是s3dDevelopers 。平常是很少有機會看到3D的程式師的,而且還是Developer。沒想到在這裡遇到了,真是相當驚奇。

第二天晚上則是跟一群講師還有工作人員吃個飯。大家都很high,因為這次活動辦得真的不錯。hcchien找的餐廳很不錯,吃飯前psilotum還是一直拿相機猛拍。不過我覺得晚餐吃得好快啊,原來後來我累得睡著了。

除了這些聽講的心得外,最大的好處就是能和傳說中的Developer面對面聊天。這幾天我除了講師之外,還遇到jesse、yurenuc、Tsung、descent...等一些來自各方的愛好自由軟體朋友,聊聊最近在作什麼,交換心得。

今年活動辦得真的很好,希望OSDC.TW明年還能繼續再接再厲。

相關連結:

2007年4月18日 星期三

Open Kernel Labs公司成立,強化L4與虛擬技術應用

今天閱讀LinuxDevices.com時瞥見一則新聞「Startup touts virtualizing microkernel」,提及原本NICTA(澳洲的產學合作機構) 中專注於L4 microkernel為基礎的虛擬化 (virtualization) 技術的研究單位,正式成立公司 "Open Kernel Labs",看來即將在2008年為資訊產業帶來新的震撼。雖然L4 microkernel之父Jochen Liedtke已於2001年六月10日去世,但L4 microkernel設計與我們同在,並深深影響這個世紀的作業系統。

L4採用第二的micro-kernel設計,在kernel本身只提供十來個system call,相較於第一代的micro-kernel的Mach有一百多個而言,L4的設計相當精簡,有文獻指出,適當的規劃micro-kernel system call可提升系統效率,L4正是基於此一理念的實作。德國Dresden科技大學基於L4 microkernel提出L4Linux的設計,那是運作於L4 Micro-kernel的之上Linux server(修改過的Linux kernel,所以在該server上可運作一般的Linux應用程式),揭開L4在虛擬化技術的序幕,研發團隊率先將Linux Kernel 2.4移植到L4 Kernel Family (泛指 V.2、X.0 與 X.2 規格者),於是,原本的Linux程式可在不需修改的前提下,在L4 Micro-Kernel運作。幾乎在同一時間,德國Karlsruhe大學也成立L4Ka小組,與澳洲的New South Wales大學合作開發針對嵌入式系統的L4最佳化實做,後來也不約而同切入虛擬化技術的領域。

NICTA在澳洲扮演產學合作的角色,早在兩年前即與通訊大廠Qualcomm合作開發基於L4與虛擬化技術的3G手機設計在MSM6550晶片組的硬體上,提供虛擬化執行平台,允許Linux (在其上運作豐富的應用程式) 與BREW RTOS (進行資訊處理與操作3G Modem之用) 並行存在,這是個相當成功的展示。不僅如此,NICTA也跟澳洲當地的FancyPaints合作開發提供給Qualcomm 3G CDMA平台的絢麗手機人機介面。今日,這些成果將由專業商業公司進行維護與開創新價值,"Open Kernel Labs"也表示將繼續原本開放原始碼的實做(以BSD License釋出),相當值得關注。

在今年OSDC.tw研討會上,OrzLab揭露了RT nanokernel for Embedded Linux的設計,儘管途徑與L4 microkernel不同,但許多資源是可以共享的,同時我們也提出LOVER的口號,也就是 "Linux Optimized for Virtualization, Embedded, and Realtime" 這個概念的落實。

2007年4月16日 星期一

OpenMoko/Neo1973硬體模擬::Win32平台

紀錄「OpenMoko/Neo1973硬體模擬」後,收到許多迴響,cclien兄還因此徹夜未眠、提交patch,Jollen兄也寫了一篇「qemu-neo1973 / openmoko-emulator / jk2410-emulator」,分享Jollen-Pro Kit! (based on S3C2410)的硬體模擬,而前幾天則在通信論壇看到更紗的post「openmoko on winxp」,讓我也對Win32的移植感興趣。趁OSDC.tw結束的空檔,也來改看看,似乎沒遇到什麼問題,於是打包一個執行檔: openmoko-emulator-win32-bin-20070416.zip
已將昨天建構的u-boot、Linux kernel,以及rootfs等image置入,以下是執行畫面:
基本上解開Zip壓縮檔案後,直接跑qemu-system-arm.exe即可,模擬器外觀的支援還沒整合進去,但仍可從附帶的command window看到LCD Panel與GSM的資訊,同樣是按Enter鍵切換選單項目,Space鍵選擇。

附帶一提,OpenMoko/Neo1973的模擬器UI與GNU gdb整合的程式碼我已經作一段落,但現在遇到個非技術議題,因為該裝置是狹長型,而LCD Panel (VGA解析度)下上方都有頗大的空間,所以一旦模擬器的外觀載入後,就會超過螢幕解析度,勢必得作些裝置外觀的調整,所以可能需要美工專長的朋友協助。

2007年4月12日 星期四

UCIMF 2.0預計時程

Mat日前在UCIMFmailing-list上公告「UCIMF預計時程」,宣告即將在OSDC.tw上釋出UCIMF stable release 2.0.0,以下是訊息摘錄:

目前正在整理UCIMF的程式碼,同時準備4/15的OSDC.TW講稿。
主要修改內容為,加強外觀的調整,和穩定度的提升。
預計在4/15發佈2.0.0的tarball,並希望能邀請社群幫忙打包和開發。

目前希望的功能主要是:

  • 字型、顏色,能客製化。
  • OpenVanilla、IIIMF的支援

sincerely, Mat.

這個計畫已經進行一段時間,很高興即將邁入新的里程碑,未來也是Embedded i18n (Internationalization) / L10n (Localization)的解決方案之一。嗯,預祝順利!

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 Jupenk的學妹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 TaiwanOpenMoko在本實驗室初期作了最具體的資助:提供可修改的硬體裝置,並具備開放規格,這意味著,我們立刻即可將「自由」與「創意」這兩大精神注入原本死板的硬體。想像一下,我們可把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編碼