January 14, 2005

新年新希望

距離上一篇 blog,已經距離好一段時日了,有很多值得紀錄的項目,不過某些不愉快的經驗就跟著 2004 年的結束,一起消失,把握當下,作前瞻的思維吧。

發現使用者的 feedback 越來越多,新酷音也正式成立專案網頁,活躍在 MacOS X 社群的 gugod 與 zonble 也協助開發,真是令人興奮的發展動態,不過正如 kanru 所說,現在有太多 TODO,而我卻沒有時間好好處理,接下來會有一段時間的空檔,kanru 與 BBNS 也快放寒假了,應該可以好好討論下一版 libchewing 的設計細節。

因為工作需要,研究了 Embedded Linux 的 Graphics,挖掘到許多有趣的設計架構,也試著改善 VIA Unichrome 整合繪圖晶片的 FBDev driver 設計,並且也玩起許久未接觸的DirectFB。VIA 曾一度釋出許多 open source driver,但是從 2004 年中起,就趨向封閉,只提供 binary driver,還好有The Unichrome Project提供許多寶貴的資料與實作項目,根據前輩提供的資訊,我也發現 VIA 官方 open source 的一些弊端,目前已經修正些許 bug,當然最終會依據 GPL 釋出。在此同時,順手整理分析 2.4 Kernel FBDev 與 fbcon 實作的心得,寫一份比較正式的文件好了。

Graphics in Embedded System 實在是很有趣的主題,但是繁體中文的資料實在是有點稀少,應TnLUG的 Lman 之邀,預定今年四月份會作一場拋磚引玉的經驗談,至於細節還未敲定,有興趣的朋友可以參考討論項目。說到這,我最近在進行一項實驗,主要是發現過去 Embedded Linux 開發的過程需要太多人力的介入,而 uClibc 的uwoody給我頗多啟示,這是 Erik Andersen (uClibc、Busybox,以及許多 toolchain 的維護人,同時也是 Debian Developer) 針對 x86 架構下將 Debian packages 以 uClibc 重新編譯的 self-contained Debian-based distribution。

我比較想做出目標 (主要是配合 [Graphics in Embedded System] 這個主題) 是GeeXBox,這個僅 5Mb 的 LiveCD 相當有意思,裡頭包含 NFS client、Wireless-tools、linux-tv,以及 MPlayer 套件,也有一套開發工具集,這個機制是取自Linux From Scratch,並搭配 uClibc,整體的 code size 控制得相當好,也可以透過 configuration 來作不同程度的 customization,但是這類 "From Scratch" 的設計上來說,「優點就是缺點」,是不是可能預先編譯好特定的組態,以 udeb 包裝起來呢?uwoody 是個很好的出發點,其內附的 rootfs (Root File System) 甚至包含了 toolchain,可以透過 chroot 直接在上面開發,到了測試階段後,在慢慢精簡,並對 ext2 fs 作 resize 即可,相當方便。

驗證這個想法的同時,避免這個實驗過於枯燥,所以我訂了以下目標:
  • 以 DirectFB 作為 Graphics Toolkit,並設計一個堪用的 Media Center Frontend
  • 建構 uClibc 為基礎的 distribution,並與 uwoody 相容
  • 針對特定硬體作最佳化
  • 提供自動建構系統的設計,並著手開發便利的 Configuration tool
簡單來說,就是基於「小而美」理念的訴求,所以我稱為本實驗為 "KittenBox"。就第一點來說,我試著修改 DirectFB 與 XINE,設計一個稱為 MediaScape 的前端程式,簡稱為 mscape,目前的進度可以參考以下快照:



已經可以透過鍵盤操作全部的媒體導覽、播放,以及電視影像的處理,未來會加入 lirc 的整合,這樣就可以透過遙控器來操作這個簡單的 Media Center,當然,最終也會依據 GPL/LGPL 的授權釋出。

VIA 之前提供了一款 mini-ITX 的版子,稍微拼湊後就有 KittenBox 的雛形了,以下是該機器的系統資訊:
    $ cat /proc/cpuinfo
    processor       : 0
    vendor_id       : CentaurHauls
    cpu family      : 6
    model           : 7
    model name      : VIA Samuel 2
    stepping        : 3
    cpu MHz         : 601.369
    cache size      : 64 KB
    fdiv_bug        : no
    hlt_bug         : no
    f00f_bug        : no
    coma_bug        : no
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 1
    wp              : yes
    flags           : fpu de tsc msr cx8 mtrr pge mmx 3dnow
    bogomips        : 1199.30
    
以及
    $ lspci
    0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8623 [Apollo CLE266]
    0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [Apollo Pro266 AGP]
    0000:00:0f.0 Ethernet controller: VIA Technologies, Inc. VT6105 [Rhine-III] (rev 8b)
    0000:00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
    0000:00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
    0000:00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
    0000:00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82)
    0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge
    0000:00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
    0000:00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 50)
    0000:00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74)
    0000:01:00.0 VGA compatible controller: VIA Technologies, Inc. VT8623 [Apollo CLE266] integrated CastleRock graphics (rev 03)
    
所以之前作的 FBDev 與 DirectFB 的涉獵就派上用場了,稍微 tune 後,整體效能還算可以接受,儘管硬體加速的部分還有改進的空間,接下來的重點則是 memory footprint 與有限度的 Realtime 能力。

喔,對了,之前以 GOT (Gentoo@Taiwan) 的為名,設計一個 Window Manager,就稱為 GotWM,順便當作實作EWMH (Extended Window Manager Hints) 規格的一個小練習,運作快照可以參考以下:


呼呼,一口氣寫了若干有趣的新計畫,希望在這新的一年可以有更好的突破 :-)
由 jserv 發表於 January 14, 2005 02:34 AM
迴響