<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6940637973783721202</id><updated>2011-11-28T07:16:05.277+08:00</updated><category term='arm'/><category term='virtualization'/><category term='orzlab'/><category term='l4'/><category term='xscale'/><category term='tex'/><category term='revision control'/><category term='rtos'/><category term='debugging'/><category term='gadgetfs'/><category term='web'/><category term='gentoo'/><category term='community'/><category term='poky'/><category term='cacao'/><category term='ports'/><category term='pcf'/><category term='open source'/><category term='xul'/><category term='pxa27x'/><category term='tossug'/><category term='midori'/><category term='osdc.tw'/><category term='win32'/><category term='openvanilla'/><category term='monotone'/><category term='webkit'/><category term='opengl'/><category term='mutex'/><category term='zhongwen'/><category term='s3c2410'/><category term='fon'/><category term='cldc'/><category term='irc'/><category term='openembedded'/><category term='unicode'/><category term='semaphore'/><category term='mokomakefile'/><category term='hg'/><category term='handwriting'/><category term='screen'/><category term='embedded'/><category term='freetype'/><category term='i18n'/><category term='kexec'/><category term='java'/><category term='gdb'/><category term='olpc'/><category term='moztw'/><category term='usb'/><category term='ajax'/><category term='qpf'/><category term='cross development'/><category term='culture'/><category term='openmoko'/><category term='eabi'/><category term='graphics'/><category term='rt nanokernel'/><category term='irssi'/><category term='gsm'/><category term='ucimf'/><category term='mascot'/><category term='font'/><category term='gui'/><category term='hacker'/><category term='emulation'/><category term='maemo'/><category term='La Fonera'/><category term='user-mode-linux'/><category term='desktop'/><category term='etsi'/><category term='ucimf. orzlab'/><category term='okl4'/><category term='kernel'/><category term='palm'/><category term='optimization'/><category term='gtk+'/><category term='0xlab'/><category term='openwrt'/><category term='qemu'/><category term='eglibc'/><category term='mozilla'/><category term='svk'/><category term='bdf'/><category term='fontforge'/><category term='disassembly'/><category term='svn'/><title type='text'>Planet OrzLab</title><subtitle type='html'>Open RazzmatazZ Laboratory (OrzLab) funds an environment for freedom and creativity based on Free Software and Open Source efforts.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2158827806016111735</id><published>2009-06-22T04:51:00.004+08:00</published><updated>2009-06-22T05:33:37.128+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='community'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='orzlab'/><title type='text'>從 OrzLab 移轉到 0xlab</title><content type='html'>2007年的愚人節，我們做了一個小實驗，藉由號召熱衷於電腦技術的朋友，透過&lt;a href="http://orzlab.blogspot.com/2007/04/orzlab.html"&gt;OrzLab的成立&lt;/a&gt;，嘗試聚焦作些有趣的Hacking。儘管所有成員都是出於自願並得挪用下班與課後的有限空檔時間，但仍累積一些成果，並在這個過程中，無私地分享與交流，的確已達到當初的期望，並建立初步的人際互動。&lt;br /&gt;&lt;br /&gt;不過礙於現實的考量，成員們要不從學校畢業，就是邁入新的工作里程碑，既然當初聚焦作些Hacking的目標已達成，接著就該讓台灣本土的軟體創作走入國際，嘗試與全球多元的環境互動。在寂靜了好長一段時間後，我們有機會從&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/002102.html"&gt;剛創立的 0xlab&lt;/a&gt;，得到新的希望，我們之中，開始有人能全職作free and open source software，也有人試著與台灣的電子產業建立聯繫，並試著將這些聲音，以行動的方式，傳遞到更遠更廣的區域。回首來時路，只能用愛因斯坦的話語，來表達我們的初衷：「對一個人來說，所斯望的不是別的，而僅僅是他能全力以赴和獻身於一種美好事業」。&lt;br /&gt;&lt;br /&gt;目前，&lt;a href="http://0xlab.org/"&gt;0xlab&lt;/a&gt;不僅從&lt;a href="http://0xlab.org/projects.html"&gt;過去開發的專案&lt;/a&gt;中累積經驗，也積極地透過自由軟體的力量，追尋更多元、益於嵌入式與移動裝置開發的協同創作模式，除了已釋出的原始程式碼之外，也可一併參照開發日誌&lt;a href="http://planet.0xlab.org/"&gt;Planet 0xlab&lt;/a&gt;。相當榮幸能跟這群熱血並才華洋溢的朋友共事，彼此也能融洽的合作，一同獻身於自由軟體與嵌入式系統開發的美好事業，但，這一切只是開端。&lt;br /&gt;&lt;br /&gt;本文不是宣告&lt;a href="http://orzlab.blogspot.com/"&gt;OrzLab&lt;/a&gt;的終止，而是聲明正面的蛻變，在許多人不看好台灣軟體產業的同時，其實一小群執著的人們，不斷地爭取嶄新的舞台，以不同的視角觀望著資訊產業的巨變。因此，從&lt;a href="http://orzlab.blogspot.com/"&gt;OrzLab&lt;/a&gt;移轉到&lt;a href="http://0xlab.org/"&gt;0xlab&lt;/a&gt;，不僅是從業餘走向專業的過程，更可以說從實驗到實際的體驗，希望舊雨新知能繼續指導，更感謝所有為OrzLab付出、參與討論與開發的朋友們。&lt;br /&gt;&lt;br /&gt;關於&lt;a href="http://0xlab.org/"&gt;0xlab&lt;/a&gt;的資訊與動態，可參考以下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://0xlab.org/about.html"&gt;About 0xlab&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://asleepfromday.wordpress.com/2009/05/30/what-we-are-doing-now-and-how-to-join-force/" rel="bookmark"&gt;What we are doing now, and how to join force.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;而原本&lt;a href="http://orzlab.blogspot.com/"&gt;OrzLab&lt;/a&gt;的資源仍會公開存取 (只要hosting沒出問題)，但更新與軟硬體整合的部份，會全面移往&lt;a href="http://0xlab.org/"&gt;0xlab&lt;/a&gt;，再次感謝！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2158827806016111735?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2158827806016111735/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2158827806016111735' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2158827806016111735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2158827806016111735'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2009/06/orzlab-0xlab.html' title='從 OrzLab 移轉到 0xlab'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2706774192511959596</id><published>2007-12-11T22:46:00.000+08:00</published><updated>2007-12-12T01:02:03.918+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webkit'/><category scheme='http://www.blogger.com/atom/ns#' term='gtk+'/><category scheme='http://www.blogger.com/atom/ns#' term='midori'/><title type='text'>WebKit/QT &amp; WebKit/GTK+ on Ubuntu Linux初體驗</title><content type='html'>前兩篇「&lt;a href="http://orzlab.blogspot.com/2007/06/webkitgtk.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;WebKit&lt;/span&gt;的&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Gtk&lt;/span&gt;+支援&lt;/a&gt;」與「&lt;a href="http://orzlab.blogspot.com/2007/11/owbwebkit.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;OWB&lt;/span&gt;：以&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;WebKit&lt;/span&gt;為基礎的嵌入式網路瀏覽器&lt;/a&gt;」介紹了些 &lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;WebKit&lt;/span&gt;&lt;/a&gt;的開發現況後，這邊大概講一下在&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Ubuntu&lt;/span&gt; Linux底下如何無痛進行初體驗。依據官方首頁的訊息，&lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;WebKit&lt;/span&gt;&lt;/a&gt; 簡介如下：  &lt;blockquote&gt;&lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;WebKit&lt;/span&gt;&lt;/a&gt;是一種&lt;b&gt;開放原始碼瀏覽器引擎&lt;/b&gt;，同時也是 Mac OS X 底下的&lt;a href="http://www.apple.com/safari/"&gt;Safari&lt;/a&gt; 、 Dashboard、Mail、與其他Apple Mac OS X所使用的系統框架版本。&lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;WebKit&lt;/span&gt;&lt;/a&gt;所使用的&lt;a href="http://www.kde.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;KDE&lt;/span&gt;&lt;/a&gt;函式庫&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;KHTML&lt;/span&gt;與&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;KJS&lt;/span&gt;是屬於HTML與JavaScript實做的分支。&lt;br /&gt;&lt;/blockquote&gt;先來體驗一下原生於&lt;a href="http://zh.wikipedia.org/wiki/Qt"&gt;Qt&lt;/a&gt;的&lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;WebKit&lt;/span&gt;&lt;/a&gt;瀏覽器，動手打造個「&lt;b&gt;&lt;i&gt;仿&lt;a href="http://www.apple.com/safari/"&gt;Safari&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;」。以&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Ubuntu&lt;/span&gt; Linux 7.10為例，操作程序如下：&lt;br /&gt;1. 先安裝編譯時所需的軟體與套件庫&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;sudo&lt;/span&gt; apt-get install &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;libqt&lt;/span&gt;4-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;dev&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;libxslt&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;dev&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;gperf&lt;/span&gt; bison &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;libsqlite&lt;/span&gt;3-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;dev&lt;/span&gt; flex build-essential subversion&lt;/blockquote&gt;2.取得Subversion中的原始碼 (筆者花了近20分鐘才下載完畢，所以請保持耐心)&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;svn&lt;/span&gt; checkout http://svn.webkit.org/repository/webkit/trunk &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;WebKit&lt;/span&gt;&lt;/blockquote&gt;3.建立一個&lt;a href="http://zh.wikipedia.org/wiki/Qt"&gt;Qt&lt;/a&gt; for &lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;WebKit&lt;/span&gt;&lt;/a&gt;的瀏覽器&lt;br /&gt;(安裝的機器 Intel &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;CoreDue&lt;/span&gt; L2300@1.5GHZ 跑了近45 min )&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;QTDIR&lt;/span&gt;=/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;usr&lt;/span&gt;/share/qt4/ &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;WebKit&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;WebKitTools&lt;/span&gt;/Scripts/build-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;webkit&lt;/span&gt;&lt;/blockquote&gt;4.安裝完後，打以下指令開啟剛剛建立的瀏覽器。&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;WebKit&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;WebKitBuild&lt;/span&gt;/Release/bin/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;QtLauncher&lt;/span&gt;&lt;/blockquote&gt;有圖有真相!!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x5o1j9FQcgw/R107fGZeFGI/AAAAAAAAAMM/4vbczwR9Hck/s1600-h/screenshot1.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_x5o1j9FQcgw/R107fGZeFGI/AAAAAAAAAMM/4vbczwR9Hck/s320/screenshot1.png" alt="" id="BLOGGER_PHOTO_ID_5142331755006399586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;接著，嘗試原生於&lt;a href="http://www.gnome.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;Gtk&lt;/span&gt;+&lt;/a&gt;的&lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;WebKit&lt;/span&gt;&lt;/a&gt;，不過這次就直接介紹個剛成立的一個新軟體專案 &lt;a href="http://software.twotoasts.de/?page=midori"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;Midori&lt;/span&gt;&lt;/a&gt;來體驗一下 &lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;WebKit&lt;/span&gt;&lt;/a&gt;/&lt;a href="http://www.gnome.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;Gtk&lt;/span&gt;+&lt;/a&gt;。&lt;blockqoute&gt;&lt;a href="http://software.twotoasts.de/?page=midori"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;Midori&lt;/span&gt;&lt;/a&gt; 是一個輕量化的瀏覽器，有以下特點：&lt;br /&gt;&lt;/blockqoute&gt;&lt;ul&gt;&lt;li&gt;&lt;blockqoute&gt;完全採用&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;Gtk&lt;/span&gt;+ 2.x打造&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;以&lt;a href="http://webkit.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;WebKit&lt;/span&gt;&lt;/a&gt; &lt;/blockqoute&gt;進行快速網頁繪製&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;分頁、視窗與任務對話管理&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;書籤的儲存採用&lt;a href="http://pyxml.sourceforge.net/topics/xbel"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;XBEL&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;搜尋框則基於&lt;a href="http://www.opensearch.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;OpenSearch&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;可自訂前後選單動作&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;支援使用者腳本與樣式自訂&lt;/blockqoute&gt;&lt;/li&gt;&lt;li&gt;&lt;blockqoute&gt;可透過 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;Lua&lt;/span&gt; scripts 擴充&lt;/blockqoute&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockqoute&gt;然而，這個專案目前還是屬於alpha測試版的狀態，所以可能會比較不穩定些，而且有些功能還沒實做出來。&lt;br /&gt;&lt;br /&gt;&lt;/blockqoute&gt;&lt;a href="http://software.twotoasts.de/?page=midori"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;Midori&lt;/span&gt;&lt;/a&gt;目前則可透過apt的方式去安裝預先編譯的套件，但得先編輯設定：&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;sudo&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;gedit&lt;/span&gt; /etc/apt/sources.list&lt;/blockquote&gt;然後加入以下兩行：&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;code&gt;deb http://ppa.launchpad.net/stemp/ubuntu gutsy main&lt;br /&gt;deb-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;src&lt;/span&gt; http://ppa.launchpad.net/stemp/ubuntu gutsy main&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;儲存後離開，並進行更新：&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;sudo&lt;/span&gt; apt-get update&lt;/blockquote&gt;然後就可安裝&lt;a href="http://software.twotoasts.de/?page=midori"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;Midori&lt;/span&gt;&lt;/a&gt;：&lt;br /&gt;&lt;code&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;&lt;/span&gt;&lt;/code&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;sudo&lt;/span&gt; apt-get install &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;midori&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;&lt;/span&gt;跑完後，就可以直接從「應用程式」裡的「網際網路」選單開啟&lt;a href="http://software.twotoasts.de/?page=midori"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;Midori&lt;/span&gt;&lt;/a&gt; ，其執行時期的快照如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x5o1j9FQcgw/R16l9DVXpNI/AAAAAAAAANI/-7hDsp6Q69g/s1600-h/screenshot1.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_x5o1j9FQcgw/R16l9DVXpNI/AAAAAAAAANI/-7hDsp6Q69g/s320/screenshot1.png" alt="" id="BLOGGER_PHOTO_ID_5142730292789224658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;本文改寫於以下兩篇文章：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://lzy-blah.blogspot.com/2007/12/webkit-on-linux-ubuntu-gtk.html"&gt;[軟體介紹] &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;WebKit&lt;/span&gt; on Linux (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;ubuntu&lt;/span&gt;) -- &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;GTK&lt;/span&gt;+ 篇&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lzy-blah.blogspot.com/2007/12/webkit-on-linux-ubuntu-qt.html"&gt;[軟體介紹] &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;WebKit&lt;/span&gt; on Linux (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;ubuntu&lt;/span&gt;) -- QT 篇&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2706774192511959596?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2706774192511959596/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2706774192511959596' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2706774192511959596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2706774192511959596'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/12/webkitqt-webkitgtk-on-linux-ubuntu.html' title='WebKit/QT &amp; WebKit/GTK+ on Ubuntu Linux初體驗'/><author><name>lzy</name><uri>http://www.blogger.com/profile/04728542796614839731</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://lh6.google.com/lzy7478/RrTFbyqO2vI/AAAAAAAAADs/aVUbZmNmG6s/s144/OrzLab_white_bg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x5o1j9FQcgw/R107fGZeFGI/AAAAAAAAAMM/4vbczwR9Hck/s72-c/screenshot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3156348567939681490</id><published>2007-11-20T09:13:00.000+08:00</published><updated>2007-11-20T21:24:39.663+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='revision control'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>svn http, user-password and access control</title><content type='html'>&lt;p&gt;使用http protocol作為Subversion的URL，可利用apache的dav_svn module達成。&lt;/p&gt;&lt;blockquote&gt;dav是distribution authorization and versioning，為http協定的一個擴充&lt;/blockquote&gt;&lt;pre&gt;AuthUserFile  /etc/apache2/dav_svn.passwd&lt;br /&gt;AuthzSVNAccessFile /etc/apache2/dav_svn.authz&lt;/pre&gt;所以：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;要先準備好這兩個擋案，並依據.conf 的內容，擺在對應的路徑中&lt;/li&gt;&lt;li&gt;user-passwd file的內容是用 htpasswd  操作的，add user、change password都要用htpasswd來作&lt;/li&gt;&lt;li&gt;svn下各個目錄的存取權限就由dav_svn.authz設定，該檔案為純文字檔&lt;/li&gt;&lt;/ol&gt;Add User :&lt;pre&gt;htpasswd  'target .passwd file' user-name&lt;/pre&gt;這裡'target.passwd file'就是/etc/apache2/dav_svn.passwd.&lt;br /&gt;&lt;br /&gt;權限設定方式 ：&lt;blockquote&gt;&lt;pre&gt;[/]&lt;br /&gt;* =&lt;br /&gt;guest = r&lt;br /&gt;svntest = rw&lt;br /&gt;charles-chang = rw&lt;/pre&gt;&lt;/blockquote&gt;意思是對 [/] 目錄的權限設定：&lt;br /&gt;* - 所有人 - 無法access&lt;br /&gt;guest - 僅能讀取，無法修改&lt;br /&gt;svntest, charles-chang 都是一般user，可以讀取、修改。&lt;blockquote&gt;&lt;blockkquote&gt;當然，要用htpasswd把 guest, svntest, charles-chang都加到 user-passwd file 中&lt;/blockkquote&gt;&lt;/blockquote&gt;僅能讀取的user一樣可作check-out、add file等操作，但在commit時會出現error，svn log上也不會有該user的更動紀錄。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-3156348567939681490?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/3156348567939681490/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=3156348567939681490' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3156348567939681490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3156348567939681490'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/11/svn-http-user-password-and-access.html' title='svn http, user-password and access control'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6952841985512802607</id><published>2007-11-20T08:59:00.000+08:00</published><updated>2007-11-20T12:32:24.356+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='revision control'/><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>使用hg內建的web server</title><content type='html'>&lt;p&gt;hg( &lt;a href="http://www.selenic.com/mercurial/wiki/"&gt;Mercurial&lt;/a&gt;)內建 web server。&lt;br /&gt;&lt;br /&gt;一般使用方式如下：&lt;br /&gt;&lt;br /&gt;到已開啟好(hg init完畢)的repository (例如 c:\writeMLC)目錄下，執行以下指令：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;hg serve -p 8002&lt;/pre&gt;&lt;/blockquote&gt;然後開啟web browser，開啟以下網址： &lt;blockquote&gt;&lt;pre&gt;http://127.0.0.1:8002/&lt;/pre&gt;&lt;/blockquote&gt;即可看到該repository的資訊：&lt;br /&gt;&lt;a title="hg_serve.jpg" href="http://flickr.com/photos/88606158@N00/2045090505"&gt;&lt;img src="http://static.flickr.com/2170/2045090505_2ae912ec5c_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;此功能一方面可以作為command line模式的"friendly front end" ，另一方面，可以跟合作夥伴共享程式碼。&lt;br /&gt;&lt;br /&gt;若有多個repository ，就要用webdir-conf 這個選項。使用方式先編輯一個設定檔，指定web server path和repository的關聯性：&lt;br /&gt;編輯 一個檔案 (假設為webdirconf)&lt;blockquote&gt;&lt;pre&gt;[paths]&lt;br /&gt;writeMLC = C:\Whimery\DownloadWriteMLC&lt;br /&gt;UseYagarto = C:\Yagarto\UseYagarto&lt;br /&gt;BootRun = C:\BootRun\BootRun_Robert&lt;/pre&gt;&lt;/blockquote&gt;在啟動hg server時，加上以下參數：&lt;blockquote&gt;&lt;pre&gt;hg serve -p 8002 --webdir-conf webdirconf&lt;/pre&gt;&lt;/blockquote&gt;然後在web browser上的顯示會像是以下：&lt;br /&gt;&lt;img src="file:///C:/Documents%20and%20Settings/CharlesCY.Chang/My%20Documents/My%20Pictures/blog/hg_serve2.jpg" alt="" /&gt;&lt;br /&gt;&lt;a title="hg_serve2.jpg" href="http://flickr.com/photos/88606158@N00/2045913054"&gt;&lt;img src="http://static.flickr.com/2345/2045913054_fc58e0ef40_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;每個 repository 可以自行設定一些特徵，諸如：web style、authorization、zip download support，指定方式即利用每個 repository 下.hg目錄裡的hgrc 檔 (要自行建立與編輯）。&lt;br /&gt;&lt;br /&gt;以下就是為了方便所寫的hgrc內容：&lt;blockquote&gt;&lt;pre&gt;[web]&lt;br /&gt;style = gitweb&lt;br /&gt;allow_archive = bz2 gz zip&lt;br /&gt;push_ssl = false&lt;br /&gt;allow_push = *&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt; 說明：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;改用git style 的wen interface (較詳細)&lt;/li&gt;&lt;li&gt;增加 bz2、gz、zip的source snapshoot下載&lt;/li&gt;&lt;li&gt;不使用ssl (因為不知道在windows command 下怎麼用 :P)&lt;/li&gt;&lt;li&gt;允許經由http作push的動作 (允許他人check-in)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-6952841985512802607?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6952841985512802607/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=6952841985512802607' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6952841985512802607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6952841985512802607'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/11/hg-web-server.html' title='使用hg內建的web server'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-26593500121487513</id><published>2007-11-13T03:46:00.000+08:00</published><updated>2007-11-13T11:49:15.249+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webkit'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>OWB：以WebKit為基礎的嵌入式網路瀏覽器</title><content type='html'>幾個月前介紹了「&lt;a href="http://orzlab.blogspot.com/2007/06/webkitgtk.html"&gt;WebKit的Gtk+支援&lt;/a&gt;」新進展，現在&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;已正式採納為web engine，提供為網頁瀏覽與RSS reader使用。&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://www.sand-labs.org/owb"&gt;Origyn Web Browser&lt;/a&gt; (OWB)則是另一個以&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;為基礎的開放原始碼網路瀏覽器 (BSD license + LGPL + misc)，針對嵌入式環境做了許多微調與修正，引入一層簡化描繪與底層操作的軟體層，稱為&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://www.sand-labs.org/OWBAL_doc/" target="new"&gt;&lt;u&gt;OWB Abstraction Layer&lt;/u&gt;&lt;/a&gt; (OwBal)，得以銜接&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;與消費性電子產品需求。具體來說，原本的&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;需要heavyweight UI toolkit去作widget/font描繪，但&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://www.sand-labs.org/owb"&gt;OWB&lt;/a&gt;以&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://www.sand-labs.org/OWBAL_doc/" target="new"&gt;&lt;u&gt;OwBAL&lt;/u&gt;&lt;/a&gt;巧妙地補齊介面部份，並允許lightweight UI呈現，也就是 "render itself by its own toolkit"。詳細的技術介紹可參考「&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:85%;"  &gt;&lt;a href="http://www.linuxdevices.com/articles/AT5894497943.html"&gt;Introducing OWB, an open-source browser for consumer devices&lt;/a&gt;」一文。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;建構方式如下：&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;取得開發中的程式碼：&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;blockquote&gt;svn checkout http://www.sand-labs.org/svn/trunk owb&lt;/blockquote&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;以&lt;a href="http://www.cmake.org/"&gt;CMake&lt;/a&gt;調整組態設定：&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;blockquote&gt;cd owb &amp;amp;&amp;amp; ccmake .&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;    具體情況如下圖：&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rzix2dAF_8I/AAAAAAAAANE/W8oY0DDwCis/s1600-h/ccmake-owb.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rzix2dAF_8I/AAAAAAAAANE/W8oY0DDwCis/s320/ccmake-owb.png" alt="" id="BLOGGER_PHOTO_ID_5132047324444753858" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;        按下[c]則可進行組態設定，過程中會提示缺乏的開發套件。&lt;br /&gt;  最後按下[g]即可產生必要的Makefile&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;開始建構，當然是執行make&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;目錄下應該會有名為"owb"的執行檔。注意，建議安裝&lt;a href="http://www.freedesktop.org/wiki/Software/CJKUnifonts"&gt;CJKUnifonts&lt;/a&gt;以支援中日韓文顯示支援，並且需作以下修正：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Index: BAL/Implementations/Fonts/freetype/BTFont.cpp&lt;br /&gt;===================================================================&lt;br /&gt;--- BAL/Implementations/Fonts/freetype/BTFont.cpp       (revision 147)&lt;br /&gt;+++ BAL/Implementations/Fonts/freetype/BTFont.cpp       (working copy)&lt;br /&gt;@@ -114,7 +114,7 @@&lt;br /&gt;int size = static_cast&amp;lt;int&amp;gt;(m_fontDescription.specifiedSize());&lt;br /&gt;&lt;br /&gt;if (m_fontMap[size] == 0)&lt;br /&gt;-        m_fontMap[size] = d-&amp;gt;open("/usr/share/fonts/owb.ttf", size, 0);&lt;br /&gt;+        m_fontMap[size] = d-&amp;gt;open("/usr/share/fonts/truetype/arphic/ukai.ttf", size, 0);&lt;br /&gt;d-&amp;gt;m_ttfFont = m_fontMap[size];&lt;br /&gt;if (d-&amp;gt;m_ttfFont == NULL)&lt;br /&gt;   logml(MODULE_FONTS, LEVEL_EMERGENCY, make_message("open : \n"));&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;以「&lt;a href="http://blog.linux.org.tw/%7Ejserv/"&gt;Jserv's blog&lt;/a&gt;」為例，&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://www.sand-labs.org/owb"&gt;OWB&lt;/a&gt;的呈現效果如下：&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RzizjtAF_9I/AAAAAAAAANM/LgRWYPStEAk/s1600-h/owb.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RzizjtAF_9I/AAAAAAAAANM/LgRWYPStEAk/s320/owb.png" alt="" id="BLOGGER_PHOTO_ID_5132049201345462226" border="0" /&gt;&lt;/a&gt;在組態設定時，指定了以&lt;a href="http://www.freetype.org/"&gt;FreeType&lt;/a&gt;作為字型描繪引擎 (即 "WEBKIT_USE_FONTS_FREETYPE" 選項)，以取得更加的顯示效果。可發現網頁周圍沒有視覺捲軸 (但可使用方向鍵或PageUp/Down)，而且HTML按鈕則是&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://www.sand-labs.org/owb"&gt;OWB&lt;/a&gt;自行描繪的，輸入框亦然。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;int&gt;&lt;/int&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://www.sand-labs.org/owb"&gt;OWB&lt;/a&gt;現在的空間使用量與網頁呈現正確度相當不錯，除了使用&lt;a href="http://curl.haxx.se/"&gt;curl&lt;/a&gt;的方式還需要效能調整外，整體已相當穩定，目前的參考圖形引擎實做為&lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt;，官方網頁提供相當好的移植文件「&lt;/span&gt;&lt;a class="wiki" href="http://www.sand-labs.org/owb/wiki/OwbalPortingGuide"&gt;OWBAL Porting Guide to Embedded Systems&lt;/a&gt;」。依據發展方向，&lt;int&gt;&lt;/int&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;a href="http://www.sand-labs.org/owb"&gt;OWB&lt;/a&gt;適合應用於Set-Top Box、數位電視、Kiosk等環境，並且對&lt;a href="http://www.directfb.org/"&gt;DirectFB&lt;/a&gt;的支援也開始進行。&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-26593500121487513?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/26593500121487513/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=26593500121487513' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/26593500121487513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/26593500121487513'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/11/owbwebkit.html' title='OWB：以WebKit為基礎的嵌入式網路瀏覽器'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XYo3WYqTnPk/Rzix2dAF_8I/AAAAAAAAANE/W8oY0DDwCis/s72-c/ccmake-owb.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-5355024398348904895</id><published>2007-10-21T22:47:00.000+08:00</published><updated>2007-11-13T04:35:01.520+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='eglibc'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='openembedded'/><title type='text'>EGLIBC於S3C2410 ARM SoC的體驗</title><content type='html'>稍早於「&lt;a href="http://orzlab.blogspot.com/2007/05/eglibc.html"&gt;EGLIBC初探&lt;/a&gt;」提過&lt;a href="http://www.codesourcery.com/"&gt;CodeSourcery&lt;/a&gt;與諸多系統廠商合作，針對&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;的改進計畫 (自2.5版開始)，實做出更適合Embedded環境的C Library實做 ── &lt;a href="http://www.eglibc.org/"&gt;EGLIBC&lt;/a&gt;，前文也提及快速建構的script，而&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;也正式納入對&lt;a href="http://www.eglibc.org/"&gt;EGLIBC&lt;/a&gt;的支援。所以現在要建構與測試都可以相當快速，以下是參考的option groups組態：&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;a href="http://blog.linux.org.tw/%7Ejserv/"&gt;jserv&lt;/a&gt;@venux:/home/moko/build$ cat ../org.openembedded.dev/packages/glibc/eglibc-svn/option-groups.config&lt;br /&gt;# This file sets default values for all option group variables&lt;br /&gt;# mentioned in option-groups.def; see that file for a description of&lt;br /&gt;# each option group.&lt;br /&gt;&lt;br /&gt;OPTION_EGLIBC_ADVANCED_INET6 = n&lt;br /&gt;OPTION_EGLIBC_BSD = n&lt;br /&gt;OPTION_EGLIBC_CATGETS = n&lt;br /&gt;OPTION_EGLIBC_CHARSETS = n&lt;br /&gt;OPTION_EGLIBC_DB_ALIASES = n&lt;br /&gt;OPTION_EGLIBC_ENVZ = n&lt;br /&gt;OPTION_EGLIBC_FSTAB = n&lt;br /&gt;OPTION_EGLIBC_GETLOGIN = n&lt;br /&gt;OPTION_EGLIBC_INET = y&lt;br /&gt;OPTION_EGLIBC_LIBM = y&lt;br /&gt;OPTION_EGLIBC_LOCALES = n&lt;br /&gt;OPTION_EGLIBC_LOCALE_CODE = n&lt;br /&gt;OPTION_EGLIBC_NIS = n&lt;br /&gt;OPTION_EGLIBC_NSSWITCH = y&lt;br /&gt;OPTION_EGLIBC_RCMD = n&lt;br /&gt;OPTION_EGLIBC_SPAWN = n&lt;br /&gt;OPTION_EGLIBC_SUNRPC = n&lt;br /&gt;OPTION_EGLIBC_UTMP = y&lt;br /&gt;OPTION_EGLIBC_UTMPX = n&lt;br /&gt;OPTION_EGLIBC_WORDEXP = n&lt;br /&gt;OPTION_POSIX_REGEXP = y&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;具體的細節可參考Jim Blandy發表於mailing-list的文章「&lt;a href="http://www.eglibc.org/archives/patches/msg00345.html"&gt;EGLIBC size measurements for option groups&lt;/a&gt;」，&lt;a href="http://www.eglibc.org/"&gt;EGLIBC&lt;/a&gt;透過option groups可讓C runtime的建構更加模組化，可輕易挑選Embedded環境所需的特徵，大幅降低code size與memory footprint，以常見組態來說，後者相較於&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;縮減為85%。筆者實際在&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt; GTA01bv4硬體 (based on S3C2410 ARM SoC)測試，在Smartphone的使用情境中，free memory從原本58444 bytes (glibc) 增加到67404 bytes (eglibc)，幅度達13%，功能卻沒有因此打折，這與&lt;a href="http://www.uclibc.org/"&gt;uClibc&lt;/a&gt;或其他小型的C Runtime來說，是很大的優勢。&lt;br /&gt;&lt;br /&gt;取得筆者建構的&lt;a href="http://www.eglibc.org/"&gt;EGLIBC&lt;/a&gt;-based &lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt; 2007.2 image：&lt;a href="http://people.openmoko.org/jserv/images/"&gt;http://people.openmoko.org/jserv/images/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-5355024398348904895?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/5355024398348904895/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=5355024398348904895' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5355024398348904895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5355024398348904895'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/10/eglibcs3c2410-arm-soc.html' title='EGLIBC於S3C2410 ARM SoC的體驗'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6620712943938612011</id><published>2007-08-27T22:20:00.000+08:00</published><updated>2007-08-29T17:44:08.620+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screen'/><category scheme='http://www.blogger.com/atom/ns#' term='irc'/><category scheme='http://www.blogger.com/atom/ns#' term='irssi'/><title type='text'>教學：透過screen + irssi使用IRC</title><content type='html'>最近身旁許多在上 &lt;a href="http://zh.wikipedia.org/wiki/IRC"&gt;IRC&lt;/a&gt; (Internet Relay Chat)的朋友都問我哪個IRC client 比較好用？其實，只要問過我的，而且又是UNIX-like的系統使用者時，基本上都會被我推薦&lt;a href="http://www.irssi.org/"&gt;irssi&lt;/a&gt;這個command mode的純文字IRC程式。若有server可用的朋友們，更是會被我力推screen + irssi的組合。好處是，可以遠端持續掛著IRC，到哪邊都可以ssh進去繼續看IRC log，這樣真的很方便，也不用擔心因為沒開自己的電腦，就看不到別人的對話或別人要留給自己的訊息。&lt;br /&gt;&lt;br /&gt;以下是針對irssi這軟體所寫的簡易基本介紹與使用和一些需要使用到IRC與&lt;a href="http://www.gnu.org/software/screen/"&gt;GNU screen&lt;/a&gt;的基本指令，如需IRC或screen的其他更詳細指令與資料，文末會補上相關連結，如有不足，歡迎補充。&lt;br /&gt;&lt;br /&gt;irssi的程式安裝不贅述，可由apt-get或yum等工具自套件庫裡面找尋並安裝。&lt;br /&gt;&lt;br /&gt;先在這邊建立第一次使用screen + irssi操作IRC的朋友們觀念，確定遇到的問題跟操作，該是由screen還是由irssi的程式部份來處理，或者本身只是IRC上的指令操作罷了。screen只是方便讓使用者可以利用server不關機的優勢，讓irssi可以連續開著不中斷，使得下次再透過screen來接軌回到上次開啟還未被關閉的irssi來繼續IRC這樣子。所以，這樣看下面的簡介操作後比較不會搞混狀況，如果請教朋友也比較能問到問題處。&lt;br /&gt;&lt;br /&gt;以下例子皆以irssi 0.8.10或以上版本，經實驗都可順利執行，且都以在&lt;a href="http://freenode.net/"&gt;FreeNode&lt;/a&gt;上的#orzlab IRC channel 為例。&lt;br /&gt;&lt;br /&gt;(如果不掛 screen 者，這一段請直接跳過) 首先ssh login到server後，請輸入：&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;screen -RD&lt;/code&gt;&lt;br /&gt;-R            Reattach if possible, otherwise start a new session.&lt;br /&gt;-D (-r)       Detach and logout remote (and reattach here).&lt;/blockquote&gt;然後會進入到新開啟的screen，並且screen會自動開啟一個新的window讓我們使用，接下來直接輸入：&lt;br /&gt;&lt;code&gt;irssi&lt;/code&gt;&lt;br /&gt;就會在screen底下的第一個視窗執行irssi這隻程式。&lt;br /&gt;&lt;br /&gt;如果沒有要掛著screen執行irssi的朋友，那直接輸入&lt;br /&gt;&lt;code&gt;irssi&lt;/code&gt;&lt;br /&gt;就可以直接執行 irssi 這隻程式。&lt;br /&gt;&lt;br /&gt;進入irssi後，直接在提示輸入字元處輸入&lt;br /&gt;&lt;code&gt;/connect irc_server&lt;/code&gt;&lt;br /&gt;就會直接連到該個IRC server，例如：&lt;br /&gt;&lt;code&gt;/connect irc.freenode.net&lt;/code&gt;&lt;br /&gt;這樣就會直接連接到freenode的IRC server上，此時，可以先在這邊修改自己要在該IRC server 上的暱稱，如果要修改，則輸入以下格式：&lt;br /&gt;&lt;code&gt;/nick you_want_nickname&lt;/code&gt;&lt;br /&gt;例如當我輸入&lt;br /&gt;&lt;code&gt;/nick lzy&lt;/code&gt;&lt;br /&gt;時，那我顯示出來的暱稱將會是「lzy」的字樣( irssi 預設的暱稱會是 login 的使用者名稱)。&lt;br /&gt;搞定暱稱後，接著我們就可以加入其他頻道了。&lt;br /&gt;只要輸入&lt;br /&gt;&lt;code&gt;/j #channel_name&lt;/code&gt;&lt;br /&gt;就可以直接加入了，例如：&lt;br /&gt;&lt;code&gt;/j #orzlab&lt;/code&gt;&lt;br /&gt;這樣就完成加入#orzlab這個IRC channel(即&lt;a href="http://orzlab.blogspot.com/"&gt;OrzLab&lt;/a&gt;的主要IRC channel)，如果該IRC channel需要key/password的話，則輸入：&lt;br /&gt;&lt;code&gt;/j #channel_name password&lt;/code&gt;&lt;br /&gt;如果要離開單一IRC channel ，則直接輸入&lt;br /&gt;&lt;code&gt;/wc&lt;/code&gt;&lt;br /&gt;就可以離開這個IRC頻道。&lt;br /&gt;若是要離開一個IRC server的連線，則輸入&lt;br /&gt;&lt;code&gt;/disconnect irc_server_name&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;剛剛是教如何連線，現在則是教一些常用的熱鍵與功能。&lt;br /&gt;先來看圖說故事一下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x5o1j9FQcgw/Rsk_lUem-ZI/AAAAAAAAAFQ/wODG29cBd1k/s1600-h/irssi.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_x5o1j9FQcgw/Rsk_lUem-ZI/AAAAAAAAAFQ/wODG29cBd1k/s400/irssi.png" alt="" id="BLOGGER_PHOTO_ID_5100677963358599570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上面的這張圖，我們在&lt;br /&gt;&lt;code&gt;[Act: 1,2,4,6,9,10]&lt;/code&gt;&lt;br /&gt;這邊發現了幾個不一樣的標示數字，Act這一欄位會提示你在第幾編號的channel上對話狀況，而你還沒切換到該IRC channel 上觀看。顏色對應的意思如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;灰色一般體的是代表有人登入或登出此 irc channel (如 1,9,10)&lt;/li&gt;&lt;li&gt;白色粗體的是代表有人正在此 irc channel 上談話(如 4,6)&lt;/li&gt;&lt;li&gt;灰色粗體的則是有人在對話中提起你的名字或者呼叫你，總之就是有出現你的名字(如 2)&lt;/li&gt;&lt;/ul&gt;這是基本識別，再來是知道哪個channel有什麼狀況後，就是切換到該IRC channel上查看：&lt;br /&gt;&lt;blockquote&gt;Alt + 1~0 對應 1~10 的 irc channel 編號；&lt;br /&gt;Alt + q~p 對應 11~20 的 irc channel 編號；&lt;br /&gt;Ctrl + n/p 可切換 上/下 一個 irc channel；&lt;br /&gt;按鍵盤上的 PageUP/PageDn 可以直接切換 上/下 頁訊息。&lt;/blockquote&gt;如發現有編碼上的問題，需要轉編碼的話，則可輸入&lt;br /&gt;&lt;code&gt;/recode add #channel_name code_type&lt;/code&gt;&lt;br /&gt;例如要把#orzlab的UTF-8格式加入，則輸入&lt;br /&gt;&lt;code&gt;/recode add #orzlab utf8&lt;/code&gt;&lt;br /&gt;即可加入此頻道的編碼格式。&lt;br /&gt;然後輸入&lt;br /&gt;&lt;code&gt;/recode&lt;/code&gt;&lt;br /&gt;就可以看到加入的編碼列表。&lt;br /&gt;(註：因 /recode add會寫入到設定檔裡，所以僅需要寫入一次即可)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);font-size:130%;" &gt;Ｑ＆Ａ TIME：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ｑ：如何同時有連接多個IRC server呢？又該怎樣切換不同IRC server來加入該server的IRC channel呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;請直接再下一次&lt;code&gt; /connect irc_server &lt;/code&gt; 就可以再連接一個新的 irc server ，然後按&lt;code&gt;Alt + 1&lt;/code&gt;切換到第一個的特殊頻道上，再按 &lt;code&gt;Ctrl + x&lt;/code&gt;來切換目前要下達指令的 IRC server名稱。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何查看該頻道的所有人呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;請下達&lt;code&gt;/who&lt;/code&gt;的IRC指令即可，然後也是一樣按&lt;code&gt;Alt + 1&lt;/code&gt;切換到第一個伺服器狀態頻道上觀看&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何查看單一網友的基本連線資料呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;請下達&lt;code&gt;/whois nickname&lt;/code&gt;的IRC指令即可，然後也是一樣按Alt + 1切換到第一個伺服器狀態頻道上觀看&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何傳送私人訊息到指定的朋友暱稱呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;請下達&lt;code&gt;/msg nickname&lt;/code&gt;即可開啟一個名為指定暱稱的訊息頻道，一樣用&lt;code&gt;alt + 1~0/q~p&lt;/code&gt; 來選擇(注意：某些IRC server 會限制此功能，傳訊前請先確認是否有權限，如FreeNode)。&lt;/blockquote&gt;Ｑ：已使用上面所講的方式操作screen + irssi ，那我離開時，是否得下達任何參數或指令？又下次ssh login 後，需要打什麼指令呢？&lt;br /&gt;Ａ：&lt;blockquote&gt;為了簡化登入與記憶上的方面，採用-RD的參數，所以每次要離開irssi時，直接關閉該視窗就好，不需下達任何參數或指令。然後下一次ssh login後，只要打&lt;code&gt;screen -RD&lt;/code&gt; 這樣就可以接軌回上次開啟的irssi了。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如果遠端連線到編碼為Big5 的主機掛screen + irssi，且client端是採用UTF-8編碼時，編碼的亂碼問題如何處理？&lt;br /&gt;Ａ：&lt;blockquote&gt;首先，先處理screen的編碼問題，從utf8端要檢視big5 server時，先&lt;code&gt;Ctrl + a&lt;/code&gt;，然後輸入 &lt;code&gt;:encoding big5 utf8&lt;/code&gt; ，把從server將送出的Big5編碼先轉成UTF-8後再送出，然後輸入 &lt;code&gt;"/recode"&lt;/code&gt; 觀看頻道編碼是否指定正確，照上述設定，理應能順利顯示。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如果不小心按到&lt;code&gt;Ctrl + z&lt;/code&gt;或鍵盤上的Pause時， irssi被suspend了，該如何恢復？&lt;br /&gt;Ａ：&lt;blockquote&gt;請直接輸入&lt;code&gt;fg&lt;/code&gt;後按Enter ，就可以把剛剛被suspend的irssi給喚醒。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如果我要關閉一個irssi，該如何下達指令？&lt;br /&gt;Ａ：&lt;blockquote&gt;請直接關閉開啟irssi的screen ，請按&lt;code&gt;Ctrl + k&lt;/code&gt;來關閉screen window，然後可以再重新開啟一個全新的 rssi出來。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：要如何自動儲存IRC log ？&lt;br /&gt;Ａ：&lt;blockquote&gt;在需要auto irc log的IRC channel上輸入&lt;code&gt;/SET autolog ON&lt;/code&gt;，即可打開autolog功能。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：要如何指定當開啟irssi後，自動連接IRC server與自動連接IRC channel ？&lt;br /&gt;Ａ：&lt;blockquote&gt;直接看例子會比較快，先假設我要讓他自動用 lzy 的暱稱連接到Freenode的IRC server 上的#orzlab：&lt;br /&gt;&lt;code&gt;/network add -nick lzy Freenode&lt;br /&gt;/server add -auto -network Freenode irc.freenode.net 7000&lt;br /&gt;/channel add -auto #orzlab Freenode&lt;/code&gt;&lt;br /&gt;如果是需要key/password的IRC channel的話，則把最後一行改為&lt;br /&gt;&lt;code&gt;/channel add -auto #irc_channel_name irc_server_name password&lt;/code&gt;&lt;br /&gt;也就是直接把密碼接在後面就可以了&lt;br /&gt;如果需要自動對註冊的暱稱進行認證登入的話 (設口令為abcde)：&lt;br /&gt;&lt;code&gt;/network add -autosendcmd "/^msg nickserv ident abcde;wait 2000" Freenode&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何讓irssi發出有人提起自己暱稱時的訊息警告(或響鈴)？&lt;br /&gt;Ａ：&lt;blockquote&gt;在irssi裡輸入以下指令，讓irssi適時發出聲音訊號：&lt;br /&gt;&lt;code&gt;/set beep_when_window_active ON&lt;br /&gt;/set beep_when_away ON&lt;br /&gt;/set beep_msg_level MSGS NOTICES DCC DCCMSGS HILIGHT&lt;br /&gt;/set bell_beeps ON&lt;/code&gt;&lt;br /&gt;在screen中按下&lt;code&gt;Ctrl +a&lt;/code&gt; ,  &lt;code&gt;Ctrl + g&lt;/code&gt;的按鍵，讓screen把irssi發出來的聲音訊號傳出來&lt;br /&gt;或參考Jedi的blog一文「&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://jedi.org/blog/archives/003191.html"&gt;會響的 PuTTY + screen + irssi&lt;/a&gt;」&lt;br /&gt;&lt;/blockquote&gt;Ｑ：如何更換irssi的theme ？&lt;br /&gt;Ａ：&lt;blockquote&gt;把抓好的 theme(可從&lt;a href="http://irssi.org/themes"&gt;官網&lt;/a&gt;選擇偏好的)，然後複製該theme的檔案到~/.irssi/路徑，並下達&lt;code&gt;/SET theme theme_name&lt;/code&gt;來更改該 theme 。&lt;/blockquote&gt;&lt;br /&gt;Ｑ：如何自訂irssi的IRC訊息熱鍵？&lt;br /&gt;Ａ：&lt;blockquote&gt;因為設定比較繁雜，故只提供&lt;a href="http://irssi.org/documentation/tips"&gt;官網網址&lt;/a&gt;，讓有興趣的朋友可以自己去翻閱。&lt;/blockquote&gt;&lt;br /&gt;提供幾個額外補充的網站，沒標示語言者，皆為中文&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ircle.com/reference/commands.shtml"&gt;irc 指令介紹 （英文）&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://irssi.org/documentation/startup"&gt;irssi startup （英文）&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.shsh.ylc.edu.tw/index.php/Screen"&gt;screen 基本觀念與操作介紹&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;※本文另有較鄉民版本：「&lt;a href="http://lzy-blah.blogspot.com/2007/08/screen-irssi-irc-q.html"&gt;用 screen + irssi 上 irc 之鄉民版教學 (含Q&amp;amp;A)&lt;/a&gt;」&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-6620712943938612011?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6620712943938612011/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=6620712943938612011' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6620712943938612011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6620712943938612011'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/08/screen-irssi-irc.html' title='教學：透過screen + irssi使用IRC'/><author><name>lzy</name><uri>http://www.blogger.com/profile/04728542796614839731</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://lh6.google.com/lzy7478/RrTFbyqO2vI/AAAAAAAAADs/aVUbZmNmG6s/s144/OrzLab_white_bg.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x5o1j9FQcgw/Rsk_lUem-ZI/AAAAAAAAAFQ/wODG29cBd1k/s72-c/irssi.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3381470806328206603</id><published>2007-07-31T08:51:00.000+08:00</published><updated>2007-09-24T13:18:12.196+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2410'/><title type='text'>SLC ECC Correction in S3C2440</title><content type='html'>&lt;p&gt;S3C24xx都內建有NAND Flash Controller，而且都支援NAND Flash Boot。NAND Flash 和NOR Flash 相比，除了不能用linear addressing的方式來access外，就是NAND Flash有「允許bit error」的特性，所以在實際的使用上，就要配合ECC 來correct。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;NAND Flash Controller中NFECCSAT0就NFESTAT0 (0x4E000024) ，用來表示以下：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Main Area&lt;/li&gt;&lt;li&gt;Spare Area&lt;/li&gt;&lt;/ul&gt;兩個區域的「哪個byte中的哪個bit是錯的」，這就是NAND flash Controller提供的hardware ECC 功能。&lt;br /&gt;&lt;br /&gt;S3C2440只支援SLC，因為只有內建1 bite ECC，也就是說只能correct 1 bit的錯誤。S3C2443則內建4 bit的ECC，最多可以correct到4 bit的錯誤，所以可以support MLC。&lt;br /&gt;&lt;br /&gt;SLC和MLC除了1 time programming的限制外，就是容易產生的Error bit 數。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SLC保證 99.9999% 的chip 只會產生最多 1 bit的error。&lt;/li&gt;&lt;li&gt;MLC要到99.9999%的程度，會有 4 bit error。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);font-size:85%;" &gt;(以上的% 是僅供參考)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;回到NFESTAT0，要correct bit error，首先要check一下 error的狀態，以bit[1.0],[3.2] 分別代表兩個區域的error狀態：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;00 : No Error  - Lucky &lt;img src="http://benjamin0331.googlepages.com/smile.png" style="border: 0pt none ; margin: 0pt; padding: 0pt;" id="new" /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;01 : 1 bit error - Correct 回來&lt;/li&gt;&lt;li&gt;10 : Multiple error - 沒救了&lt;/li&gt;&lt;li&gt;11 : ECC area error - 沒救 (?)&lt;/li&gt;&lt;/ul&gt;所以，需要作ECC correct的，只有在 01 的時候。&lt;br /&gt;&lt;br /&gt;然後讀出 Error bit 所在的byte位置和bit位置，分別是&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Byte 位置  bit[17:7], bit[24:21]&lt;/li&gt;&lt;li&gt;Bit 位置 bit[6:4], bit[20:18]&lt;/li&gt;&lt;/ul&gt;所以correction 的動作&lt;blockquote&gt;&lt;pre&gt; *(ReadBuf + ByteNo) ^= ( 1 &amp;lt;&amp;lt; BitNo ) &lt;hr /&gt;&lt;br /&gt;SECCD 就是 Spare-area ECC Data&lt;br /&gt;MECCD 就是 Main-area ECC Data&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-3381470806328206603?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/3381470806328206603/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=3381470806328206603' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3381470806328206603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3381470806328206603'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/slc-ecc-correction-in-s3c2440.html' title='SLC ECC Correction in S3C2440'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4287186746250145378</id><published>2007-07-30T08:49:00.000+08:00</published><updated>2007-08-04T20:11:04.610+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2410'/><title type='text'>Baudrate set in S3C2443</title><content type='html'>&lt;p&gt;S3C2442 的UART Baurdate可設定的更細微，提供兩個register :&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;UBDIV : 整數部份&lt;br /&gt;&lt;/li&gt;&lt;li&gt;UDIVSLOT  : 小數部份&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;設定的計算為：&lt;br /&gt;&lt;blockquote&gt;整數 + 小數 = SRCCLK/ (baudratex16)  - 1&lt;/blockquote&gt;以115200, SRCCLK=40MHz為例&lt;br /&gt;&lt;blockquote&gt;整數 + 小數 = 40000000/(115200 x 16) - 1 = 20.7&lt;/blockquote&gt;所以&lt;br /&gt;&lt;blockquote&gt;整數 = 20&lt;br /&gt;小數 = 0.7&lt;/blockquote&gt;因此，UBRDIV = 20&lt;br /&gt;&lt;br /&gt;小數部份與UDIVSLOT的關係是&lt;br /&gt;&lt;blockquote&gt;小數 = UDIVSLOT 中 bit是1的數量 / 16&lt;/blockquote&gt;所以&lt;br /&gt;&lt;blockquote&gt;0.7 = 1's number in UDIVSLOT  / 16&lt;br /&gt;1's number in UDIVSOLT = 11&lt;br /&gt;&lt;/blockquote&gt;UDIVSLOT有很多種組合，只要讓1的個數是11即可，Samsung建議，個數為11時，UDIVSOLT用 0xDDDD。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4287186746250145378?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4287186746250145378/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4287186746250145378' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4287186746250145378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4287186746250145378'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/baudrate-set-in-s3c2443.html' title='Baudrate set in S3C2443'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2968291885159738833</id><published>2007-07-28T11:57:00.000+08:00</published><updated>2007-07-28T13:46:45.777+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2410'/><title type='text'>筆記：Into Idle</title><content type='html'>在設定完chip register，進入idle mode後，還要program co-processor：&lt;br /&gt;這一篇 &lt;a title="http://nocash.emubase.de/gbatek.htm" href="http://nocash.emubase.de/gbatek.htm"&gt;http://nocash.emubase.de/gbatek.htm&lt;/a&gt; 有說明到ARM CP15 Cache Control。&lt;blockquote&gt;&lt;pre&gt;Cn,Cm,Op2 Rd   Command&lt;br /&gt;C7,C0,4   0    Wait For Interrupt (Halt)&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;另外在linux kernel code中也有：&lt;blockquote&gt;&lt;pre&gt;/*&lt;br /&gt;* cpu_arm926_do_idle()&lt;br /&gt;*/&lt;br /&gt;.align 5&lt;br /&gt;ENTRY(cpu_arm926_do_idle)&lt;br /&gt;#if defined(CONFIG_CPU_ARM926_CPU_IDLE)&lt;br /&gt;mcr p15, 0, r0, c7, c0, 4  @ Wait for interrupt&lt;br /&gt;#endif&lt;br /&gt;mov pc, lr&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;ref  SystemIdle Function:&lt;br /&gt;MMU_WaitInterrupt(void)&lt;blockquote&gt;&lt;pre&gt;mov  r0,#0x0&lt;br /&gt;mcr  p15,0,r0,c7,c0,4&lt;br /&gt;mov pc,lr&lt;/pre&gt;&lt;/blockquote&gt;所以，這是要cache 進入idle mode，等待interrupt 的意思 ?&lt;br /&gt;&lt;br /&gt;S3C2412有三種Power mode:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;IDLE&lt;/li&gt;&lt;li&gt;STOP&lt;/li&gt;&lt;li&gt;SLEEP&lt;/li&gt;&lt;/ol&gt;是利用PWRMODECON 這個register來設定。&lt;br /&gt;&lt;br /&gt;說是這樣說，但是Samsung的BSP code卻沒有這樣作，完全沒用PWRMODECON，反而是用 PWRCFG。其中的STANDBYWFI 佔2 bit，設定後，可以進入：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IDLE : 01b&lt;/li&gt;&lt;li&gt;STOP : 10b&lt;/li&gt;&lt;li&gt;SLEEP : 11b&lt;/li&gt;&lt;/ul&gt;這種利用寫入 PWRMODECON 的STANDBYWFIbit 的作法，在datasheet 中稱作是  "&lt;span style="font-weight: bold;"&gt;mcr    p15, 0, r0, c7, c0, 4&lt;/span&gt;"。&lt;br /&gt;&lt;p&gt;datasheet 中「很好心」地為大家提供一個 "alternat method to set STANDBYWFI" :就是用剛剛的cp15 command:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;pre&gt;mcr  p15,0,r0,c7,c0,4&lt;/pre&gt;&lt;/blockquote&gt;但是沒有說明相當於command的哪一個信號? 01b, 10b, 11b ?&lt;br /&gt;&lt;br /&gt;對照datasheet和BSP code：&lt;p&gt;&lt;/p&gt;STANDBYWFI 進入IDLE是 01b。&lt;br /&gt;BSP code用 mcr cp15 command 進入時，Rd (在此用r0)，卻是設定成 #0x0。&lt;br /&gt;&lt;p&gt;而且這是datasheet中有關"進入STOP Mode"的說明中寫的，BSP code卻是在進入idle mode 的code中使用的。&lt;/p&gt;接著有一個table，說明進入三個mode的方法：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IDLE - STANDBYWFI&lt;/li&gt;&lt;li&gt;STOP - CMD or STANDBYWFI&lt;/li&gt;&lt;li&gt;SLEEP - CMD or STANDBYWFI&lt;/li&gt;&lt;/ul&gt;STANDBYWFI 的意思大概可瞭解，雖然有點不清楚，那麼"CMD"是什麼 ?是寫入command到PWRMODECON的MODESLEEP 嗎?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2968291885159738833?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2968291885159738833/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2968291885159738833' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2968291885159738833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2968291885159738833'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/into-idle.html' title='筆記：Into Idle'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-7868529839892008624</id><published>2007-07-27T08:33:00.000+08:00</published><updated>2007-10-14T07:18:50.023+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2410'/><title type='text'>External Interrupt in S3C2440</title><content type='html'>&lt;p&gt;S3C2440的EINT (Extend INT)中斷示意&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/checkoblog/381542995/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/123/381542995_e0063f451a_o.jpg" alt="s3c2440int" height="144" width="600" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;EINT也算是SUB INTERRUPT，但是完全沒有相似於SUBSRCPND的解說。只有register 說明，而且是安排在GPIO的部份... &lt;span style="color: rgb(153, 153, 153);font-size:85%;" &gt;(好吧，該GPIO的mux function有Interrupt，所以算OK吧)&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;偉大的EINT的registerg的說明中，EINTMASK、EINTPEND這兩個register只有table，沒有多餘的說明。&lt;br /&gt;&lt;br /&gt;本來以為EINTPEND是指「經過mask後的interrupt」，結果不是，是mask前。所以要處理 EINT時要這注意，要將 EINTPEND和EINTMASK「處理」後，才是真正產生中斷的中斷源。&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;跟trigger mode有關係，當是外部controller觸發，設定成edge trigger時，因為未回應外部controller時，trigger signal不會改變，不會再有一次edge波形發生，所以即使先ACK這個INT也沒關係。反而是未能要能正確，無漏失的catch next edge，ISR要儘快的ACK這個interrupt，免得edge 出現時，interrupt還未ACK而miss。&lt;br /&gt;&lt;br /&gt;.. 真是麻煩呀...&lt;br /&gt;&lt;br /&gt;這樣的連動是不是要用class包裝起來？當設定edge trigger，該isr先ACK。當設定level triiger，作post ACK?&lt;br /&gt;&lt;hr /&gt;回到上面的圖，SRCPND經過priority arbitration，Mask後，選出一個bit 到INTPND。實際產生中斷。&lt;br /&gt;&lt;br /&gt;INTPND和SRCPND都是要「手動」清除的。&lt;br /&gt;DataSheet (14. Interrupt Controller - Interrupt Pending Register) 是說..&lt;br /&gt;&lt;blockquote&gt;Like the SRCPND register, this reister has to be cleaned in interrupt service routine after cleaning the SRCPND register.&lt;/blockquote&gt;所以，中斷發生後，一定要clear SRCPND和INTPND。而且順序是&lt;br /&gt;&lt;ol&gt;&lt;li&gt;SRCPND&lt;/li&gt;&lt;li&gt;INTPND&lt;/li&gt;&lt;/ol&gt;原因和上面說的一樣..如果先clear到INTPND，但是SRCPND還沒清，則同一個中斷馬上又從SRCPND浮上來，導致一樣的INTPND。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-7868529839892008624?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/7868529839892008624/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=7868529839892008624' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7868529839892008624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7868529839892008624'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/external-interrupt-in-s3c2440.html' title='External Interrupt in S3C2440'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8899437914734259724</id><published>2007-07-26T09:49:00.000+08:00</published><updated>2007-09-26T07:15:47.473+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsm'/><category scheme='http://www.blogger.com/atom/ns#' term='etsi'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>SMS PDU</title><content type='html'>&lt;p&gt;ETSI (GSM 03.40 and GSM 03.38)中規範SMS的encoding可有以下幾類：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;7 bit encoding：最多可以包含160個characters，其中每個character只用一個或兩個byte的 7-bit data來作encoding。7 - bit encoding table 在.. &lt;a href="http://www.dreamfabric.com/sms/default_alphabet.html"&gt;http://www.dreamfabric.com/sms/default_alphabet.html&lt;/a&gt; 和ASCII Code比較後，除了0123456789、A-Z、a-z，和%$!*&amp;amp; ' ' 相同外，其他都不一樣。&lt;/li&gt;&lt;li&gt;8 bits encoding：最多可以包含140 個字。通常用作非文字SMS，而拿來當作Data傳輸使用。&lt;/li&gt;&lt;li&gt;16 bit encoding：最多只可以有 70 個'字'，是用來傳送Unicode text messages。 可以當作文字讀取。&lt;/li&gt;&lt;/ul&gt;另外，還規範傳送的方式(Mode)：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Text Mode&lt;/li&gt;&lt;li&gt;Pdu Mode&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;PDU (Protocol Description Unit)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PDU封包中，除了內文外，還包含其他的information，像是：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sender&lt;/li&gt;&lt;li&gt;SMS service center&lt;/li&gt;&lt;li&gt;time stamp&lt;/li&gt;&lt;/ul&gt;傳送的data是以"hexa-decimal" or "decimal semi-octents"。&lt;br /&gt;&lt;br /&gt;這個encoding有點麻煩，採用7 bit encoding是為了減少資料量。所以一個「字」就佔不滿一個byte，多的bit，就拿下一個「字」的bit，拿法是：&lt;br /&gt;&lt;blockquote&gt;從下一個「字」中 ，從後算起，還沒被拿走的bit 拿起。&lt;/blockquote&gt;這一篇文章，有很好的示範.. &lt;a href="http://www.dreamfabric.com/sms/hello.html"&gt;http://www.dreamfabric.com/sms/hello.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8899437914734259724?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8899437914734259724/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8899437914734259724' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8899437914734259724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8899437914734259724'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/07/sms-pdu.html' title='SMS PDU'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-635825925971149136</id><published>2007-06-29T23:18:00.000+08:00</published><updated>2007-06-30T11:33:04.167+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='cross development'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>OLPC Hacking Meet-up心得</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A-c5PQfUpGQ/RoUlMPa_5BI/AAAAAAAAABw/wY1l_9JsbPU/s1600-h/p1010006.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_A-c5PQfUpGQ/RoUlMPa_5BI/AAAAAAAAABw/wY1l_9JsbPU/s400/p1010006.jpg" alt="" id="BLOGGER_PHOTO_ID_5081508646785901586" border="0" /&gt;&lt;/a&gt;經過十天的等待，於於完成了這次「&lt;a href="http://orzlab.blogspot.com/2007/06/olpc-hack-meet-up-day.html"&gt;OLPC Hack Meet-Up Day&lt;/a&gt;」的活動。活動期間，感謝jollen、jserv、PingYeh、 Andrew、...等人提供不少對活動的經驗和建議。這段期間也感謝BV1AL、KC、olv、 FourDollars、linanne、aguai、wesley、thinker、yungyuc、gaso、yuren...等人的幫忙，才能順利將活動完成。&lt;br /&gt;&lt;br /&gt;活動開始，先是由Mat簡單介紹一下如何用&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;QEMU&lt;/a&gt;模擬&lt;a href="http://www.laptop.org/"&gt;OLPC&lt;/a&gt;和測試程式。之後則是共同開發和交流討論。21:10-22:00 則是展示時間，首先是jserv展示了&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;QEMU&lt;/a&gt;用於模擬系統開發的各個應用，也現場展示了他最新的成果「&lt;a href="http://orzlab.blogspot.com/2007/06/tablet-webpad.html"&gt;親手打造Tablet / WebPad&lt;/a&gt;」。接著，FourDollars也跟著和大家分享影音串流程式最新的發展，分析未來的驅勢。並同時展示了一個他參考&lt;a href="http://pcman.sayya.org/"&gt;pcman&lt;/a&gt;的程式而改出來的影音外掛程式。可以非常方便的點選網路廣播並收聽，並發想也能整合進&lt;a href="http://www.laptop.org/"&gt;OLPC&lt;/a&gt;，提高&lt;a href="http://www.laptop.org/"&gt;OLPC&lt;/a&gt;的娛樂性。&lt;br /&gt;&lt;br /&gt;而在&lt;a href="http://wiki.tossug.org/OLPCHackMeetUp"&gt;PCMan on OLPC&lt;/a&gt;這個主題上，由國內開發LiveCD(USB)系列的BV1AL將&lt;a href="http://cle.linux.org.tw/trac"&gt;gcin&lt;/a&gt;在&lt;a href="http://www.laptop.org/"&gt;OLPC&lt;/a&gt;上的成果作成LiveCD的映像檔，並設定好網路等相關部分。而&lt;a href="http://pcmanx.csie.net/"&gt;PCMan X&lt;/a&gt;開發團隊的字型好手olv ，則是解決&lt;a href="http://www.laptop.org/"&gt;OLPC&lt;/a&gt;上&lt;a href="http://pcmanx.csie.net/"&gt;PCMan X&lt;/a&gt;中文字型顯示的問題。在經過一段時間修改，順利將兩方的成果結合起來，如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A-c5PQfUpGQ/RoUwt_a_5CI/AAAAAAAAAB4/MDbhGCSGul0/s1600-h/olpc-pcman-gcin.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_A-c5PQfUpGQ/RoUwt_a_5CI/AAAAAAAAAB4/MDbhGCSGul0/s400/olpc-pcman-gcin.png" alt="" id="BLOGGER_PHOTO_ID_5081521321234392098" border="0" /&gt;&lt;/a&gt;雖然還是有許多小缺點，但這張快照也象徵了我們用行動來實踐我們的信念，也呼應了活動發起的訴求。&lt;br /&gt;&lt;br /&gt;在活動期間，wesley、aguai、annelin... 也嘗試利用&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;QEMU&lt;/a&gt;建立多個&lt;a href="http://www.laptop.org/"&gt;OLPC&lt;/a&gt;來模擬mesh network的測試環境。而Andrew、PingYeh、BV1AL、...在Tick偶然拿到&lt;a href="http://www.laptop.org/"&gt;OLPC&lt;/a&gt;實機的root console後，也著手研究了&lt;a href="http://www.laptop.org/"&gt;OLPC&lt;/a&gt;的系統更新、開機流程，相信不久之後也能見到相關的經驗分享。&lt;br /&gt;&lt;br /&gt;最後希望能持續將這些成果整理出來，以開放的方式回饋給upstream和社群。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-635825925971149136?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/635825925971149136/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=635825925971149136' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/635825925971149136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/635825925971149136'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/olpc-hacking-meet-up.html' title='OLPC Hacking Meet-up心得'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A-c5PQfUpGQ/RoUlMPa_5BI/AAAAAAAAABw/wY1l_9JsbPU/s72-c/p1010006.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1691896259608956297</id><published>2007-06-28T02:44:00.000+08:00</published><updated>2007-06-28T03:22:03.506+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>親手打造Tablet / WebPad</title><content type='html'>從事嵌入式系統開發，很大層面就是想體會「親手打造」的成就感。以往最大的問題就是進入的門檻較高，不僅得有開發硬體，還得要耗費大量的時間進行驗證測試，然而，這些繁瑣的過程會讓我們失焦，是的，最重要的部份，還是賦予硬體生命的軟體，這才是具備長遠價值的產物，一旦有了足夠的經驗與系統軟體，要在相容的硬體移植或加強功能設計，那就如魚得水了。&lt;br /&gt;&lt;br /&gt;之前選定一個用以「練功」的題目「&lt;a href="http://orzlab.blogspot.com/2007/04/embedded-linux-mozilla.html"&gt;構想：Embedded Linux + Mozilla&lt;/a&gt;」，作法可有很多種，不過筆者嘗試以系統模擬的途徑，驗證「&lt;a href="http://orzlab.blogspot.com/2007/03/blog-post_15.html"&gt;視覺化系統模擬與偵錯&lt;/a&gt;」一文中提出的概念：引入針對嵌入式裝置的基礎建設，作以system prototype、進階分析，以及快速軟體開發之用。上個月則於討論群組提出具體的想法「&lt;span id="thread_subject_site"&gt;&lt;a href="http://groups.google.com/group/orzlab/browse_thread/thread/9dbbc64174e01837"&gt;RFC: Tablet/WebPad 參考設計&lt;/a&gt;」，目前已稍有成果，在Google Code Hosting上申請了新專案「&lt;/span&gt;&lt;a href="http://code.google.com/p/mind/" style="text-decoration: none; color: rgb(0, 0, 0);"&gt;mind - MIND stands for "Mind Is Not a Device&lt;/a&gt;"」，可透過&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;的迷你子集合去建構整個Embedded Linux作業系統，並調整為Tablet / WebPad的系統組態，以Xscale與x86作為參考開發的硬體平台，本階段已可使用&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;Qemu&lt;/a&gt;為基礎的系統模擬進行驗證 (GNU Toolchain、Emulator，與Debugger均移植到Win32)，以下是運作中的展示畫面：&lt;br /&gt;&lt;div style="font-size: 95%; margin-top: 3px;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RoK0azCwnzI/AAAAAAAAAHw/D8xs5M61D2k/s1600-h/mind-qemu-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/RoK0azCwnzI/AAAAAAAAAHw/D8xs5M61D2k/s400/mind-qemu-1.png" alt="" id="BLOGGER_PHOTO_ID_5080821702098722610" border="0" /&gt;&lt;/a&gt;這呈現了我們Embedded Linux平台的應用程式，即精簡版的&lt;a href="http://www.mozilla.org/"&gt;Mozilla&lt;/a&gt; web browser，輔以XUL打造進階的使用者介面。這個系統主要是作概念性呈現，所以其他應用程式則相對單純，程式主畫面如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RoK2BjCwn0I/AAAAAAAAAH4/huz3g0Fyy4Q/s1600-h/mind-qemu-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RoK2BjCwn0I/AAAAAAAAAH4/huz3g0Fyy4Q/s320/mind-qemu-2.png" alt="" id="BLOGGER_PHOTO_ID_5080823467330281282" border="0" /&gt;&lt;/a&gt;待作事項：&lt;br /&gt;&lt;/div&gt;&lt;span id="thread_subject_site"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="thread_subject_site"&gt;針對ARM平台規範新的虛擬硬體組態，加入Wifi / Bluetooth裝置模擬&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="thread_subject_site"&gt;加入網路管理程式，如&lt;a href="http://linetconf.csie.net/"&gt;Linetconf&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="thread_subject_site"&gt;透過內建的&lt;a href="http://oprofile.sourceforge.net/"&gt;OProfile&lt;/a&gt;進行深入的效能調校&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="thread_subject_site"&gt;提供x86 LiveCD&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1691896259608956297?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1691896259608956297/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1691896259608956297' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1691896259608956297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1691896259608956297'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/tablet-webpad.html' title='親手打造Tablet / WebPad'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XYo3WYqTnPk/RoK0azCwnzI/AAAAAAAAAHw/D8xs5M61D2k/s72-c/mind-qemu-1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-806737648071472847</id><published>2007-06-27T00:09:00.000+08:00</published><updated>2007-06-30T11:27:03.841+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>在Ubuntu / Debian上啟動kqemu加速OLPC的執行</title><content type='html'>Mat 已經寫了一篇簡單的文件「&lt;a href="http://orzlab.blogspot.com/2007/06/olpc-hello-world.html"&gt;Hello World for OLPC&lt;/a&gt;」，只要照著做就可以很容易的把 OLPC 利用 qemu 模擬跑起來了。不過如果可以先把kqemu的kernel module裝起來的話，那麼執行OLPC的模擬會更加的快速順暢。以下簡單介紹Debian/Ubuntu上啟動kqemu的方法：&lt;br /&gt;&lt;br /&gt;1. 首先把相關的套件裝好&lt;br /&gt;&lt;blockquote&gt;# sudo aptitude install module-assistant&lt;/blockquote&gt;2. 然後利用module-assistant編譯出kqemu的kernel module並且安裝到系統中&lt;br /&gt;&lt;blockquote&gt;# sudo module-assistant auto-install kqemu-source&lt;/blockquote&gt;3. 最後載入模組並建立裝置節點&lt;br /&gt;&lt;blockquote&gt;# sudo modprobe kqemu major=250&lt;br /&gt;# sudo mknod /dev/kqemu c 250 0&lt;br /&gt;# sudo chmod 666 /dev/kqemu&lt;br /&gt;&lt;/blockquote&gt;然後就可以照著Mat寫的文件跟著做即可。&lt;br /&gt;&lt;br /&gt;另外~ 目前OLPC底層的作業系統是Fedora Core 6 (zod)，所以啦，知道FC6怎麼玩的，基本上OLPC也是一樣地玩。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-806737648071472847?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/806737648071472847/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=806737648071472847' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/806737648071472847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/806737648071472847'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/ubuntudebian-kqemu-olpc.html' title='在Ubuntu / Debian上啟動kqemu加速OLPC的執行'/><author><name>Shih-Yuan Lee</name><uri>https://profiles.google.com/111702816719386284707</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-xoL2dK7RKRw/AAAAAAAAAAI/AAAAAAAAK_8/ctww0V13RlE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4594709943165485928</id><published>2007-06-25T02:41:00.000+08:00</published><updated>2007-06-26T22:41:55.420+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='palm'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>模擬Linux on Palm 5</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rn6_mio6FaI/AAAAAAAAAHo/7pZKA32nDW0/s1600-h/qemu-palmld-fnw-launcher.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rn6_mio6FaI/AAAAAAAAAHo/7pZKA32nDW0/s320/qemu-palmld-fnw-launcher.png" alt="" id="BLOGGER_PHOTO_ID_5079708098574816674" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.palm.com/intl/"&gt;Palm&lt;/a&gt;產品家族自第五代開始，部份採用Intel Xscale處理器，日前&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;的CVS tree也正式納入支援，於是熱血的hackers又開始鑽研是否可模擬&lt;a href="http://www.palm.com/intl/"&gt;Palm&lt;/a&gt; 5的硬體，並在其上運作Linux。在一番嘗試後，&lt;a href="http://hhtinker.blogspot.com/"&gt;Alex&lt;/a&gt;很高興跟大家宣佈這個訊息，請見「&lt;a href="http://hhtinker.blogspot.com/2007/06/testing-linux4palm-on-qemu.html"&gt;Testing Linux4Palm on qemu&lt;/a&gt;」一文。他在                 &lt;a href="http://sourceforge.net/projects/hackndev/"&gt;Hack&amp;Dev&lt;/a&gt;計畫 (目標即是將Linux移植到原本運作PalmOS的硬體環境) 的程式碼加入以&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;為基礎的&lt;a href="http://www.palm.com/intl/"&gt;Palm&lt;/a&gt; 5的硬體模擬器，目前支援的硬體列表如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;palmtc - Palm Tungsten|C (PXA255)&lt;/li&gt;&lt;li&gt;palmz72 - Palm Zire72 (PXA270)&lt;/li&gt;&lt;li&gt;palmtx - Palm TX (PXA270)&lt;/li&gt;&lt;li&gt;palmld - Palm LifeDrive (PXA270)&lt;/li&gt;&lt;/ul&gt;取得與編譯方式如下：&lt;br /&gt;&lt;blockquote&gt;# svn co https://hackndev.svn.sourceforge.net/svnroot/hackndev/qemu/trunk qemu-hnd&lt;br /&gt;# cd qemu-hnd&lt;br /&gt;# ./configure --target-list=arm-softmmu --cc=gcc-3.4&lt;br /&gt;# make -j2&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://trac.hackndev.com/projects/palmld/wiki/ReleaseFnW"&gt;預先取得&lt;/a&gt;必要的核心與檔案系統影像檔，假設解開壓縮檔後位於./palm/0.0.3-fnw目錄，則可透過以下方式執行： (其中一個hardware model)&lt;br /&gt;&lt;blockquote&gt;$ cat RUN.sh&lt;br /&gt;#!/bin/sh&lt;br /&gt;BASE_DIR=`pwd`/palm/0.0.3-fnw&lt;br /&gt;./arm-softmmu/qemu-system-arm \&lt;br /&gt; -M &lt;span style="font-weight: bold;"&gt;palmld&lt;/span&gt; \&lt;br /&gt; -kernel $BASE_DIR/zImage \&lt;br /&gt; -sd $BASE_DIR/Angstrom-opie-image-palmld-0.0.3-alpha.rootfs.ext2 \&lt;br /&gt; -append "root=/dev/mmcblk0  psplash=false"&lt;/blockquote&gt;啟動畫面如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rn6-mio6FXI/AAAAAAAAAHQ/Z3a3jhJeZng/s1600-h/qemu-palmld-fnw-boot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rn6-mio6FXI/AAAAAAAAAHQ/Z3a3jhJeZng/s320/qemu-palmld-fnw-boot.png" alt="" id="BLOGGER_PHOTO_ID_5079706999063188850" border="0" /&gt;&lt;/a&gt;過程中可透過&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;作LCD panel與終端機顯示 (serial) 的切換，也就是 Ctrl-Alt-[13]。以下是終端機操作畫面：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rn6-vyo6FZI/AAAAAAAAAHg/rHLLNqPeamw/s1600-h/qemu-palmld-fnw-serial2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rn6-vyo6FZI/AAAAAAAAAHg/rHLLNqPeamw/s320/qemu-palmld-fnw-serial2.png" alt="" id="BLOGGER_PHOTO_ID_5079707157976978834" border="0" /&gt;&lt;/a&gt;系統模擬越來越多元了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4594709943165485928?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4594709943165485928/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4594709943165485928' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4594709943165485928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4594709943165485928'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/palm-5linux.html' title='模擬Linux on Palm 5'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XYo3WYqTnPk/Rn6_mio6FaI/AAAAAAAAAHo/7pZKA32nDW0/s72-c/qemu-palmld-fnw-launcher.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1481846166790900306</id><published>2007-06-21T00:31:00.000+08:00</published><updated>2007-06-21T09:10:14.275+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>Hello World for OLPC</title><content type='html'>&lt;span style="font-size:100%;"&gt;許多朋友好奇前天的螢幕快照怎麼來的，其實過程並沒有想像中的那麼難。小弟就以作一個Hello World的程式作範例。&lt;br /&gt;&lt;br /&gt;在開始之前，先假設你手邊已俱備下列幾個主要的工具：&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;QEMU i386 ( OLPC的平台是x86 )&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;操作步驟如下：&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;1. 首先取得OLPC的映像檔：&lt;a href="http://olpc.download.redhat.com/olpc/streams/development/LATEST-STABLE-BUILD/devel_ext3/olpc-redhat-stream-development-devel_ext3.img.bz2"&gt;按這裡下載&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;   &lt;span style="font-size:100%;"&gt;2.  啟動qemu&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;  &lt;span style="font-size:100%;"&gt;qemu &lt;tt&gt;-redir tcp:2222::22 &lt;/tt&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;olpc-redhat-stream-development-devel_ext3.img&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;其中 "-redir tcp:2222::22"的意思是將 QEMU中的OLPC的:22 Port和本機端的:2222 Port接在一起。&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;3.  取得終端機&lt;br /&gt;&lt;br /&gt;進入到OLPC視窗環境後，在OLPC的模擬環境按 “&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Ctrl-Alt-3&lt;/span&gt;&lt;span style="font-size:100%;"&gt;”，就會進到console模式（要回到視窗模式請按 &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;“Ctrl-Alt-1”&lt;/span&gt;&lt;span style="font-size:100%;"&gt; ）。接著用root登入（預設沒有密碼），就可以順利取得root console。&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;記得順便設定一下root的密碼&lt;/span&gt;&lt;span style="font-size:100%;"&gt;。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;4. 下一步?&lt;br /&gt;&lt;br /&gt;根據&lt;a href="http://wiki.laptop.org/go/Emulating_the_XO/Help_and_tips#Development"&gt;官網上的說明&lt;/a&gt;，下一步應該就可以直接連線進去，但是實際上卻不行，為什麼呢?因為這時候的OLPC還沒有將網路啟動，需要先設定網路才行。&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;5. 設定網路&lt;br /&gt;&lt;br /&gt;在root console下執行&lt;br /&gt;&lt;/span&gt;   &lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;blockquote&gt;ifup eth0&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;或是&lt;br /&gt;&lt;/span&gt;   &lt;blockquote&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;echo ifup eth0 &gt;&gt; /etc/rc.local&lt;/span&gt;    &lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;設成下次自動啟動&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;6. 確定啟動sshd&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;blockquote&gt;    /etc/init.d/sshd start&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;執行到這裡，我們已經有能力可以連線到QEMU中的OLPC了。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;7. 連線到OLPC&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;blockquote&gt;    ssh -X -o NoHostAuthenticationForLocalhost=yes -p 2222 root@localhost&lt;/blockquote&gt;其中 "-X" 是設定視窗轉送的參數。（可以執行xterm看看，所產生的視窗會將送到本機端來）。進行到這裡，我們已經有操控整個OLPC系統的能力，可以像使用一般Linux的方式去使用。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;8. 如何作一個最簡單的Hello World?&lt;br /&gt;&lt;br /&gt;目前OLPC並沒有內建gcc等開發工具。不過uname一下，可以發現OLPC的平台是i686。也就是說，我們可以先在本機端開發好程式，編譯好了再上傳執行即可。&lt;br /&gt;&lt;br /&gt;而在OLPC裡的視窗程式執行環境為gtk、pygtk。我們不妨利用現在的pygtk來作為試驗。在這裡我們就直接引用pygtk給的&lt;a href="http://www.moeraki.com/pygtktutorial/pygtk2tutorial/examples/helloworld.py"&gt;官方範例&lt;/a&gt;。&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;9. 如何上傳?&lt;br /&gt;&lt;br /&gt;最直接的方式就是透過scp的方式上傳。&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt;scp -o NoHostAuthenticationForLocalhost=yes -P 2222 ./helloworld.py \ root@localhost:/home/olpc/hello_world.py&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;10. 如何執行：&lt;br /&gt;&lt;br /&gt;由於OLPC的XWindow是用olpc這個使用者的身份執行。所以在執行前記得切換成olpc這個使用者&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt; su - olpc&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;之後用視窗轉送的方式來執行&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt; DISPLAY=:0.0 ./helloworld.py&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;就可以看到簡單的Hello World的畫面了&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A-c5PQfUpGQ/Rnl-a27V3OI/AAAAAAAAABg/LR5AEf5w_40/s1600-h/helloworld.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_A-c5PQfUpGQ/Rnl-a27V3OI/AAAAAAAAABg/LR5AEf5w_40/s400/helloworld.png" alt="" id="BLOGGER_PHOTO_ID_5078229054723054818" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1481846166790900306?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1481846166790900306/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1481846166790900306' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1481846166790900306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1481846166790900306'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/olpc-hello-world.html' title='Hello World for OLPC'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A-c5PQfUpGQ/Rnl-a27V3OI/AAAAAAAAABg/LR5AEf5w_40/s72-c/helloworld.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6100660454892289282</id><published>2007-06-20T14:41:00.000+08:00</published><updated>2007-06-22T11:32:42.619+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><category scheme='http://www.blogger.com/atom/ns#' term='kexec'/><title type='text'>多國語言支援的圖形化kboot</title><content type='html'>上週二 (Jun 12) 在TOSSUG聚會活動「&lt;a href="http://wiki.tossug.org/SignUp:2007-07"&gt;2007 年第 7 場心得分享 - 組字的核心：字的結構&lt;/a&gt;」時，展示「&lt;a href="http://orzlab.blogspot.com/2007/06/xorzembedded.html"&gt;Xorz/Embedded的動態組字實做&lt;/a&gt;」並提及可能的應用形式，我舉了關於boot loader的例子，作為說明動態組字技術在嵌入式系統的重要性。的確，隨著虛擬化技術與能源管理技術的突破，boot loader越來越多元，針對前者，得配合virtualization executive做出不同的啟動程序，而對後者來說，動態進階能源管理所建立的「中間資訊」(suspend to RAM / suspend to Disk)，也需要作合理的處理，這都需要高度彈性的boot loader涉入。另外，我們可從&lt;a href="http://www.dslinux.org/"&gt;DSLinux&lt;/a&gt; (port Linux to the Nintendo DS gaming console) 與&lt;a href="http://cell.fixstars.com/ps3linux/"&gt;PS3 Linux&lt;/a&gt; (SONY PlayStation 3的Linux移植) 等計畫發現，其移植的途徑不同以往，而是大膽採用&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;/kexec的機制來降低移植的難度，並提供多樣的應用方式，詳情可參考之前的文章「&lt;a href="http://orzlab.blogspot.com/2007/06/kboot.html"&gt;kboot初探與模擬驗證&lt;/a&gt;」。&lt;br /&gt;&lt;br /&gt;早上在hack &lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;時，又想到上述議題，所以我決定作個概念性驗證的實做，驗證&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;這個「功能強大的Linux boot loader」對&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的影響。以往的boot loader雖然實做了圖形介面，但功能是很侷限的，頂多只能產生靜態選單與底圖，筆者的想法就是，用一個簡單的圖形系統取而代之，提供真正有彈性的使用者互動機制，而我們有Xorz/Embedded。另外一個議題是，我們應該允許不同的開機方式，比方說透過網路或USB隨身碟，而且可在任何時間切換，使用情境很直覺，可以假設一開始運作缺乏中文系統的&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;預設Sugar UI，等有需要的時候，插入USB隨身碟，系統會彈出一個boot畫面，提示使用者是否要重新開機，因為透過kexec系統呼叫，這一切將會非常快速 (跳過BIOS與硬體初始化)，而USB隨身碟上面的系統當然就可以有中文或者其他客制化的環境。&lt;br /&gt;&lt;br /&gt;同時，筆者也想藉此彰顯在「&lt;a href="http://orzlab.blogspot.com/2007/05/blog-post.html"&gt;組字技術與手持式裝置的新機會&lt;/a&gt;」一文表達的想法，為何我們千方百計想把CJK (中日韓) 語文整合到嵌入式系統設計呢？或許我們會犧牲美觀，但是可帶來對於多國語文最基本的顯示能力，這大可整合到boot loader或kernel中。聽起來很玄，俗語說：「一圖勝千言」，看看現在的進度：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RnjXoyo6FWI/AAAAAAAAAHI/tq-kn5JHA4U/s1600-h/kboot-xorz-embedded.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/RnjXoyo6FWI/AAAAAAAAAHI/tq-kn5JHA4U/s400/kboot-xorz-embedded.png" alt="" id="BLOGGER_PHOTO_ID_5078045675648324962" border="0" /&gt;&lt;/a&gt;以上呈現的想法就是動態讀取裝置列表 (透過udev與&lt;a href="http://www.freedesktop.org/wiki/Software/hal"&gt;FreeDesktop HAL&lt;/a&gt;)，讓&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的軟體建設得以作基本的probing處理，進而在小型的圖形環境中產生對應的動態選單與動作描述。圖片展示了讀取USB Disk，並取出其中的中文標籤，以選單方式讓使用者決定系統的啟動與否，甚至，我們可透過網路來啟動或更新整個&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;，這一切將可相當有彈性。&lt;br /&gt;&lt;br /&gt;附帶一提，右下角的圖示就是「&lt;a href="http://orzlab.blogspot.com/2007/04/orzlab_4287.html"&gt;OrzLab的吉祥物&lt;/a&gt;」：「囧囧」，正準備跳出傳統的PC，走向多種嵌入式系統裝置的新應用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-6100660454892289282?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6100660454892289282/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=6100660454892289282' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6100660454892289282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6100660454892289282'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/kboot_20.html' title='多國語言支援的圖形化kboot'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XYo3WYqTnPk/RnjXoyo6FWI/AAAAAAAAAHI/tq-kn5JHA4U/s72-c/kboot-xorz-embedded.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4900900245196454410</id><published>2007-06-20T12:19:00.000+08:00</published><updated>2007-06-20T15:38:50.610+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>OLPC Hack Meet-Up Day</title><content type='html'>Mat稍早寫了「&lt;a href="http://orzlab.blogspot.com/2007/06/pcmanx-on-olpc.html"&gt;PCManX on OLPC&lt;/a&gt;」一文，提到他最近對&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;所作的修改，並試圖移植知名的BBS連線程式&lt;a href="http://pcmanx.csie.net/"&gt;PCManX&lt;/a&gt;到該平台上，不過礙於&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;底層未能提供足夠的基礎建設，所以Mat發起一個活動「&lt;a target="_blank" rel="nofollow" href="http://wiki.tossug.org/OLPCHackMeetUp"&gt;OLPCHackMeetUp&lt;/a&gt;」，邀請更多同好齊聚hacking。以下引述介紹文字：&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;== 活動宗旨 ==&lt;br /&gt;國際知名的&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;（One Latop Per Child，百元電腦）計劃正在進行，硬體製造的業務也由國內的廣達代工。然而國內社群對&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;相關的知識並不多，軟體方面也參與的很少。 因此希望能藉著發起這個活動，引介自由軟體愛好者實際參與&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的軟體開發，同時能互相交流軟體開發的經驗和心得，並以開放的方式回饋給&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;計劃與自由軟體社群。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;== 活動目標 ==&lt;br /&gt;在目標的選定上，我們希望能以一個近程目標來秀出我們的特有的特色軟體。於是我們選定開放的BBS軟體&lt;a href="http://pcmanx.csie.net/"&gt;PCManX&lt;/a&gt;作為目標，同時也希望能在實作過程中，找出&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的中文支援的方法：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;將&lt;a href="http://pcmanx.csie.net/"&gt;PCManX&lt;/a&gt;放進&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;環境執行，並調整成符合Sugar (&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的外觀風格) 的應用程式風格&lt;br /&gt;&lt;/li&gt;&lt;li&gt;實作glibc locale + Fontconfig data + TTF + SCIM以提供中文顯示、輸入環境 &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p&gt;時間預定於June 28, 2007 (四)，晚間19:00~22:00舉辦，歡迎參與&lt;a href="http://orzlab.blogspot.com/"&gt;OrzLab&lt;/a&gt;的討論「&lt;a href="http://groups.google.com/group/orzlab/browse_thread/thread/1f045973f966c408/"&gt;OLPC Hack Meet-Up Day&lt;/a&gt;」。至少有以下議題需要思考：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;輸入法的型態：傳統的GTK+ IM module或Ajax web IM&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的軟體開發方式與模擬器的整合&lt;/li&gt;&lt;li&gt;底層i18/L10n基礎建設&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;期待您的參與及指教！&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4900900245196454410?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4900900245196454410/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4900900245196454410' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4900900245196454410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4900900245196454410'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/olpc-hack-meet-up-day.html' title='OLPC Hack Meet-Up Day'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-9055894840844155192</id><published>2007-06-18T03:46:00.000+08:00</published><updated>2007-06-18T22:22:14.783+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>PCManX on OLPC</title><content type='html'>感謝&lt;a href="http://www.jollen.org/blog/"&gt;jollen&lt;/a&gt;前輩的幫忙，讓我有進一步接觸&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;（傳說中的百元電腦）的機會。&lt;br /&gt;&lt;br /&gt;去年年底時就聽了好幾次&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的新聞，能真的用到實品，興奮之情真是難以言喻。期待歸期待，真實世界的&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;用起來感覺倒還不是很順暢。可能是裡頭的軟體版本還沒跟到最新版，或是還不夠成熟，沒有完全發揮硬體完全的效能的原因吧。&lt;br /&gt;&lt;br /&gt;想要更新到最新的版本，然而手邊又沒有工具也是沒輒。幸好，拜模擬器之賜，軟體的開發不再死死侷限在硬體上。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的組織已經有提供好相關的軟體模擬環境和開發工具，讓參與者即使沒有機器也能進行軟體測試與開發的工作。其相關的聯結如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.laptop.org/go/Emulating_the_XO/Help_and_tips"&gt;Emulating the XO/Help and tips&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;幸運的是，&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;的本質就是Linux系統，只有表面的介面看起來不太一樣，其他的系統設定跟程式環境都一樣。只要拿到&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;裡的super-user，理論上幾乎可以作到任何在Linux上的事。&lt;br /&gt;&lt;blockquote&gt;「理論上？！」&lt;/blockquote&gt;我們總是需要作一些嘗試來堅定我們的信念。&lt;br /&gt;BBS可說是咱在地特有的文化，適逢(Open-) PCMan於日前釋出2007的&lt;a href="http://pcman.openfoundry.org/"&gt;最新版本&lt;/a&gt;。何不移稙一個BBS軟體到&lt;a href="http://laptop.org/"&gt;OLPC&lt;/a&gt;上呢？經過幾天的嘗試，終於有了初步的成果如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A-c5PQfUpGQ/RnWQDG7V3NI/AAAAAAAAABY/wqOVNS6MJRM/s1600-h/pcman-on-olpc.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_A-c5PQfUpGQ/RnWQDG7V3NI/AAAAAAAAABY/wqOVNS6MJRM/s400/pcman-on-olpc.png" alt="" id="BLOGGER_PHOTO_ID_5077122538003619026" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-9055894840844155192?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/9055894840844155192/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=9055894840844155192' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/9055894840844155192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/9055894840844155192'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/pcmanx-on-olpc.html' title='PCManX on OLPC'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A-c5PQfUpGQ/RnWQDG7V3NI/AAAAAAAAABY/wqOVNS6MJRM/s72-c/pcman-on-olpc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8346533693962996293</id><published>2007-06-16T20:11:00.000+08:00</published><updated>2007-06-17T23:01:31.874+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><category scheme='http://www.blogger.com/atom/ns#' term='kexec'/><title type='text'>kboot初探與模擬驗證</title><content type='html'>&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;本質上是個小型Linux作業系統，但功能卻是個boot loader，何解？&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;本身提供簡單的系統工具，支援檔案與網路操作，可自外界取得kernel image或其他檔案，進而&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;利用了kexec的機制，讓Linux kernel可快速重新啟動，於是具備boot loader的功能。&lt;br /&gt;&lt;br /&gt;kexec是一組新的系統呼叫，包含在2.6 kernel中 (視支援架構而定)，搭配其user-space的工具&lt;a href="http://www.xmission.com/%7Eebiederm/files/kexec/"&gt;kexec-tools&lt;/a&gt;，則可在既有的Linux kernel (支援kexec系統呼叫) 中載入其他的kernel (不需要有kexec支援)，並給予必要之參數或檔案，如kernel command line與initrd等，這方面的資訊可參考以下文章：&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/cn/linux/l-kexec/"&gt;使用 kexec 快速重啟 Linux&lt;/a&gt; (DeveloperWorks)&lt;/li&gt;&lt;li&gt;&lt;a href="http://lwn.net/Articles/15468/"&gt;kexec&lt;/a&gt; (LWN)&lt;/li&gt;&lt;/ul&gt;目前，kexec的硬體支援不限定x86，包含ARM與PPC都已有patch現身。那麼，如此的機制到底有什麼價值呢？以往的boot程序是很單純，清一色就是boot loader載入kernel，然後跳到user-mode或者是特定的工作，但現在的系統設計往往不是單一硬體、單一架構就可勝任的，諸如RAID或高負載的備援系統設計，都需要相當繁複的規劃，很顯然就非普通的boot loader可以應付，也很難修改&lt;a href="http://www.etherboot.org/"&gt;Etherboot&lt;/a&gt;去圓滿符合需求，這時候，我們聯想到Linux，搭配到上述的kexec，不就是最美妙的boot loader嗎？在載入新的kernel之前，我們可作任何Linux能做的事情，像是載入firmware並進行設定、掛載NFS、掛載NTFS (透過&lt;a href="http://www.linux-ntfs.org/"&gt;Linux-NTFS&lt;/a&gt;)、... 等等，只要能提供新kernel給&lt;a href="http://www.xmission.com/%7Eebiederm/files/kexec/"&gt;kexec-tools&lt;/a&gt;工具作載入，最後再透過kexec系統呼叫，就可完成這個「功能強大的boot loader」的終極任務。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;就是這樣的概念驗證實做品，使用的情境相當多元。舉例來說，&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;想進行遠端開機 (Diskless)，但只有Wireless LAN或3G network可用，這時候就掛載對應的kernel module (包附在&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;中)，然後透過user-space的應用程式進行設定，等待連線建立並確保檔案擷取成功，接著就在裝置上執行自遠端取得核心。另一種情境也很有趣，以往Linux distribution都得作通用性與最佳化的妥協，前者往往得將系統劃分諸多核心模組與大量的設定程式，後者往往得針對硬體作多次嘗試，那麼，透過&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;可先啟動generic kernel，然後進行硬體偵測，參考所需的硬體與最佳化組態，重新編譯核心，最後將該核心載入，而這個過程可透過一些設計得當的效能評估工具，一次又一次的重複自動微調，有別於以往的boot loader。關於&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;的應用，可參考以下簡報：&lt;ul&gt;&lt;li&gt;&lt;a href="http://jserv.sayya.org/kernel/kboot/kboot-lca2007-talk.pdf"&gt;kboot - A Boot Loader Based on Kexec&lt;/a&gt; (&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;作者提供的slides)&lt;/li&gt;&lt;li&gt;於Linux Conference AU的&lt;a href="http://www.linux.org.au/conf/2007/talk/191.html"&gt;演講錄影&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jserv.sayya.org/kernel/kboot/elc07_yagi.pdf"&gt;HTTP-FUSE PS3 Linux : an internet boot framework with kboot&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Linux_for_PlayStation_3"&gt;PS3 Linux&lt;/a&gt; hackers)&lt;/li&gt;&lt;/ul&gt;後者給予我們極大的想像空間，當我們在新的硬體進行核心與週邊移植時，的確可先把能運作的最低限度核心置入&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;，然後再從不同的開發分支取得新核心並啟動，而這些過程都是透明的，而且不需要燒錄到傳統儲存裝置中，只要資源允許，可在RAM中做到繁瑣的事情。&lt;br /&gt;&lt;br /&gt;昨天做了一個小hack，將原本的&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt; (Version 11) 進行調整，更動紀錄如下：&lt;blockquote&gt;Enhancements:&lt;br /&gt;. Provided qemu specific configurations for verifying kboot&lt;br /&gt;. Enable Visibility for gcc-3.4 (symbol hidden)&lt;br /&gt;. Perform size optimizations against user-space packages.&lt;br /&gt;Upgraded:&lt;br /&gt;. kernel - 2.6.21&lt;br /&gt;. binutils - 2.17.50.0.16&lt;br /&gt;. uClibc - 0.9.29&lt;br /&gt;&lt;/blockquote&gt;我們甚至不需要單獨的x86機器，就能測試kexec與&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;，只要有能夠運作&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;Qemu&lt;/a&gt;的環境即可。首先，取得&lt;a href="http://orzlab.blogspot.com/"&gt;OrzLab&lt;/a&gt;修改的版本：&lt;a href="http://people.debian.org.tw/%7Ejserv/kboot-11-orzlab.tar.bz2"&gt;kboot-11-orzlab.tar.bz2&lt;/a&gt;，解開後直接打 "make" 就會建構整個系統，包含下載必要的套件、工具，以及編譯與安裝等。搭載於&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;的Linux kernel是精簡的版本，只提供TCP/IP stack、procfs、initrd/initramfs、ne2k NIC driver、VESA VGA framebuffer console等，但足以讓我們作許多應用。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;Qemu&lt;/a&gt;提供DHCP與TFTP server的模擬，完全省下我們佈署的難度，所以在模擬環境中，所需的操作甚至大幅少於實體。筆者提供了簡單的script名為 "qemu-launcher.sh"，直接執行即可，&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;啟動後的畫面如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RnPnHCo6FSI/AAAAAAAAAGo/d9Uju-8Dvas/s1600-h/kexec-on-qemu-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/RnPnHCo6FSI/AAAAAAAAAGo/d9Uju-8Dvas/s320/kexec-on-qemu-1.png" alt="" id="BLOGGER_PHOTO_ID_5076655313130231074" border="0" /&gt;&lt;/a&gt;依據&lt;a href="http://fabrice.bellard.free.fr/qemu/user-doc.html"&gt;Qemu的操作文件&lt;/a&gt;，預設透過模擬的DHCP server取得的IP是10.0.2.15，而server自己則是10.0.2.2，上面的畫面展示&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;已經載入一個小型的Linux kernel並出現提示訊息，等待命令操作，我們可打一些指令如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RnPoQio6FUI/AAAAAAAAAG4/x5u-YwC78Ak/s1600-h/kexec-on-qemu-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RnPoQio6FUI/AAAAAAAAAG4/x5u-YwC78Ak/s320/kexec-on-qemu-2.png" alt="" id="BLOGGER_PHOTO_ID_5076656575850616130" border="0" /&gt;&lt;/a&gt;看到kernel version 2.6.21與ping連線的狀況，除此之外，還有ssh/sshd可用，所以大可連線到某台server，重新編譯核心程式碼，然後放到某個網路伺服器上。接著我們就要來驗證kexec/&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;的功能。Qemu內建的TFTP server相當好用，直接對應於host上的目錄架構，而就Debian/Ubuntu來說，host的核心會在根目錄建立symbolic link，而vmlinuz與initrd.img就指向目前運作的核心與initrd。&lt;br /&gt;&lt;br /&gt;於是，我們在模擬的環境只要下簡單的一行指令即可載入並重新啟動： (鍵入粗體字部份)&lt;br /&gt;&lt;blockquote&gt;kboot: &lt;span style="font-weight: bold;"&gt;tftp://10.0.2.2/vmlinuz&lt;/span&gt;&lt;/blockquote&gt;然後我們會看到 "Start Kernel" 的字樣跳過，然後我們就在Qemu的模擬環境看到啟動目前host上的核心：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RnPqMyo6FVI/AAAAAAAAAHA/KPT5UOoNyIo/s1600-h/kexec-on-qemu-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RnPqMyo6FVI/AAAAAAAAAHA/KPT5UOoNyIo/s320/kexec-on-qemu-3.png" alt="" id="BLOGGER_PHOTO_ID_5076658710449362258" border="0" /&gt;&lt;/a&gt;因為在之前提供的qemu啟動script中省略root file system的指派，所以會停在kernel panic的畫面，不過這也達到我們的目的，驗證kexec/&lt;a href="http://kboot.sourceforge.net/"&gt;kboot&lt;/a&gt;，有了這個便利的模擬測試環境，未來也可作不同的變化。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8346533693962996293?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8346533693962996293/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8346533693962996293' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8346533693962996293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8346533693962996293'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/kboot.html' title='kboot初探與模擬驗證'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XYo3WYqTnPk/RnPnHCo6FSI/AAAAAAAAAGo/d9Uju-8Dvas/s72-c/kexec-on-qemu-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-282734114155562982</id><published>2007-06-14T03:46:00.000+08:00</published><updated>2007-06-16T21:54:11.363+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webkit'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='maemo'/><title type='text'>WebKit的Gtk+支援</title><content type='html'>khtml是在&lt;a href="http://www.kde.org/"&gt;KDE&lt;/a&gt; 2中，集合檔案檢視系統與網頁瀏覽器於一身的Konqueror內部主幹，是極為精美細膩的設計，如果說為一窺 KDE 技術最佳的進入點，那真是一點都不為過。由於khtml卓越的設計，很快就出現以khtml為基礎的網路瀏覽器專案，比方說運作於Qtopia (Core)之下的&lt;a href="http://www.konqueror.org/embedded/"&gt;Konqueror/Embedded&lt;/a&gt;，而Apple Inc.也採納khtml，部分重新設計與最佳化就變成WebCore (MacOS X內建瀏覽器Safari的核心基礎建設)。而業界的應用也很廣泛，像是韓國嵌入式系統廠商&lt;a href="http://www.mizi.com/"&gt;Mizi Research&lt;/a&gt;就曾將&lt;a href="http://www.konqueror.org/embedded/"&gt;Konqueror/Embedded&lt;/a&gt;經過一番調整，成為相當強悍的瀏覽器。&lt;br /&gt;&lt;br /&gt;Apple Inc.提供了大量的修改，讓khtml的品質獲得極大的提昇，又在KDE開發者的斡旋下，Apple Inc.終於採納了社群開放發展的模式，於是KDE與Apple Inc.兩組開發人馬傾向共享&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;的程式碼基礎 (codebase)。接著，Nokia也宣佈&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;為基礎的&lt;a href="http://opensource.nokia.com/projects/S60browser/"&gt;S60WebKit&lt;/a&gt; (針對S60手機平台)與&lt;a href="http://gtk-webcore.sourceforge.net/"&gt;gtk+-webcore&lt;/a&gt; (針對Gtk+/X11環境)，並依循LGPL與BSD License的方式，將修改貢獻回&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;專案。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;在這三年內蓬勃發展，提供了許多不同軟硬體平台的移植，值得一提的是新出現的GDK (Gtk+的低階圖形處理部份) 移植，這意味著&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;可運作於GDK支援的環境，就嵌入式系統來說，我們會關注linux-fb與&lt;a href="http://www.directfb.org/"&gt;DirectFB&lt;/a&gt;兩個Gtk+/GDK所支援的backend。在近半年來的發展，&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;的Gtk+/GDK移植已到堪用的地步，針對Nokia770/&lt;a href="http://maemo.org/"&gt;Maemo&lt;/a&gt;與&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;的硬體移植也出現成功案例。&lt;br /&gt;&lt;br /&gt;為了降低建構&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;/Gtk+的難度，我做了簡單的建構系統 (檔案：&lt;a href="http://jserv.sayya.org/khtml/webkit-build-script.tar.bz2"&gt;webkit-build-script.tar.bz2&lt;/a&gt;)，允許從Subversion取出最新的發展版本，並作必要的設定，最後進行編譯。下載並解開後，直接執行以下script：&lt;br /&gt;&lt;blockquote&gt;# ./BUILD.sh&lt;/blockquote&gt;中間會透過apt-get取得必要的開發套件。建構完畢後，大致的執行畫面如下：&lt;br /&gt;(1) wiki.openmoko.org&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RnBPQyo6FQI/AAAAAAAAAGY/5T9S-RONsUo/s1600-h/webkit-gtk-openmoko.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/RnBPQyo6FQI/AAAAAAAAAGY/5T9S-RONsUo/s320/webkit-gtk-openmoko.png" alt="" id="BLOGGER_PHOTO_ID_5075643929936401666" border="0" /&gt;&lt;/a&gt;(2) Google Maps&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RnBPmyo6FRI/AAAAAAAAAGg/WCjdm4f9UXQ/s1600-h/webkit-gtk-maps.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/RnBPmyo6FRI/AAAAAAAAAGg/WCjdm4f9UXQ/s320/webkit-gtk-maps.png" alt="" id="BLOGGER_PHOTO_ID_5075644307893523730" border="0" /&gt;&lt;/a&gt;&lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;在&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt; GTA01也開始運作了，但還是有很多需要調整之處，這也是今年Google &lt;a href="http://code.google.com/soc/"&gt;Summer of Code&lt;/a&gt;的項目之一，期待這方面的新進展。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-282734114155562982?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/282734114155562982/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=282734114155562982' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/282734114155562982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/282734114155562982'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/webkitgtk.html' title='WebKit的Gtk+支援'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XYo3WYqTnPk/RnBPQyo6FQI/AAAAAAAAAGY/5T9S-RONsUo/s72-c/webkit-gtk-openmoko.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2491055097775757592</id><published>2007-06-11T03:33:00.000+08:00</published><updated>2007-06-11T04:24:59.849+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='handwriting'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='font'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>從Chrasis談手寫辨識引擎在移動裝置的機會</title><content type='html'>&lt;a href="http://www.gentoo.tw/"&gt;Gentoo Taiwan&lt;/a&gt;的&lt;a href="http://palatis.blogspot.com/"&gt;Palatis&lt;/a&gt;日前公開他發展中的手寫辨識引擎與訓練程式，可參考blog文章「&lt;a href="http://palatis.blogspot.com/2007/06/chrasis-010-alpha.html"&gt;Chrasis 0.1.0 alpha!&lt;/a&gt;」，專案發展紀錄可參考&lt;span style="font-size:100%;"&gt;「                                                  &lt;a href="http://chrasis.blogspot.com/"&gt;Chrasis -           &lt;span&gt;Chinese Handwriting Recognition As-Is&lt;/span&gt;&lt;/a&gt;」，正如版本號所宣示的，現在還有很大的改進空間，不過已經初步可運作，以下是其訓練手寫辨識程式的執行畫面：&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RmxT1io6FPI/AAAAAAAAAGI/QmrDmyyd13I/s1600-h/chrasis.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RmxT1io6FPI/AAAAAAAAAGI/QmrDmyyd13I/s320/chrasis.png" alt="" id="BLOGGER_PHOTO_ID_5074523059436262642" border="0" /&gt;&lt;/a&gt;程式碼可透過Subversion存取：&lt;br /&gt;&lt;blockquote&gt;# svn co svn://svn.berlios.de/chrasis/Engine/libchrasis/trunk libchrasis&lt;br /&gt;# svn co svn://svn.berlios.de/chrasis/Linux/ChrasisTrainer/trunk ChrasisTrainer&lt;br /&gt;&lt;/blockquote&gt;libchrasis為手寫辨識引擎，其相依性有： (以Ubuntu 7.04為例)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;libxml++2.6-dev&lt;/li&gt;&lt;li&gt;libsqlite3-dev&lt;/li&gt;&lt;li&gt;sqlite3&lt;/li&gt;&lt;li&gt;libboost-dev&lt;/li&gt;&lt;/ul&gt;ChrasisTrainer顧名思義就是訓練程式，以Gtk+打造，其相依性如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;libgtkmm-2.4-dev&lt;/li&gt;&lt;li&gt;llibxml++-2.6-dev&lt;/li&gt;&lt;/ul&gt;測試了幾個簡單的中文字，都能正確辨識，算是不錯了。當然，手寫辨識的議題很複雜，以下是筆者在wiki - &lt;a href="http://openvanilla.org/wiki/zh/index.php?title=ChineseInformationProcessing"&gt;ChineseInformationProcessing&lt;/a&gt;的「手寫輸入」段落紀錄的部份資訊l：&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Kanji Pad - Japanese Handwriting recognition &lt;a href="http://www.gtk.org/%7Eotaylor/kanjipad/" class="external free" title="http://www.gtk.org/~otaylor/kanjipad/" rel="nofollow"&gt;http://www.gtk.org/~otaylor/kanjipad/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Kanji Pad 的新網頁 (演算法不變，新增 GTK2 的移植) &lt;a href="http://fishsoup.net/software/kanjipad/" class="external free" title="http://fishsoup.net/software/kanjipad/" rel="nofollow"&gt;http://fishsoup.net/software/kanjipad/&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;以下為 rabit 的個人見解 (Modified by &lt;a href="http://openvanilla.org/wiki/zh/index.php?title=%E4%BD%BF%E7%94%A8%E8%80%85:Jserv&amp;amp;action=edit" class="new" title="使用者:Jserv"&gt;User:jserv&lt;/a&gt;)： &lt;/p&gt; &lt;ul&gt;&lt;li&gt; KanjiPad 本身使用的辨識方法是很簡單的字典法，當使用者透過手寫版或滑鼠寫出字時，程式辨識出筆劃種類，並紀錄每個筆劃的順序，然後根據字典查出候選字。也因此，KanjiPad 根本不考慮寫出來的字形貌是否相似，只求筆劃順序相符。 &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;img src="http://www.opencjk.org/%7Eyumj/chinput/chinput_5.gif" alt="chinput_5.gif" /&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt; 以 Cinput (修改自 Kanji Pad) 的圖為例，「林」這個字辨識出來的候選字有「林、杯、枝、板、茂」，這幾個字右半邊的「木、不、支、反」筆劃順序都是跟「木」是相似的。這樣的演算法辨識 率是不高的，一但筆順不對，就很難辨識出來，不過話說回來，也不能太苛求 KanjiPad，因為它原本的用途就是日本人寫來學習漢字用的，可以說本來就是當作字典使用。 &lt;/li&gt;&lt;li&gt; 中文手寫辨識是難度相當高的, 困難的地方有二： &lt;ul&gt;&lt;li&gt; 就技術而言，在辨識方面會用到許多數學模型，如 Baysian Decision Theory hidden Markov models、類神經網路等，而辨識中文還必須對中文字作分析，找出每個中文字的特徵 (筆形、筆順等)，若要更精準，需拆解中文字成基本的部件，來作分析 (有點像漢字跡因工程)，這時就要處理寫字上連筆的問題，技術上有實現的複雜度，但或許還不是最困難的。 &lt;/li&gt;&lt;li&gt;   必須對每一個字的分析，建立資料庫，這是需要大量的成本 (包含時間、人力等)，中文字尤其複雜，除了大量的漢字，還有異體字、罕用字等，我想這對 open source 是最困難之處，這跟 open source license 中文字型的狀況有些類似。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;看似這是NP-Hard的問題，但如果我們思考Mobile 2.0對我們的衝擊，可以發現，大多數的手持裝置都需要手寫、筆跡、觸碰軌跡辨識的技術，而且也依賴原本在桌面系統的軟體元件與操作習慣，此時，危機反而就是轉機。具體來說，我們可思考「&lt;a href="http://chewing.csie.net/"&gt;新酷音&lt;/a&gt;」一類智慧型輸入法如何移植到手持式裝置如PDA或SmartPhone一類的裝置，基本上，運算速度與儲存裝置都不是大問題 (早在兩年前，「&lt;a href="http://chewing.csie.net/"&gt;新酷音&lt;/a&gt;」輸入法系統就證明在某隻SmartPhone上正確運作)，真正的難題反而是輸入法的「輸入」本身。是的，以「&lt;a href="http://chewing.csie.net/"&gt;新酷音&lt;/a&gt;」來說，支援兩種基本符號：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;注音符號&lt;/li&gt;&lt;li&gt;拼音字母&lt;/li&gt;&lt;/ul&gt;這兩者背後也有學問，光是注音符號對照的鍵盤排列就可玩許多花樣，諸如許氏注音、倚天26鍵等等，拼音系統就不必多說，在台灣根本就是多頭馬車。以往，「&lt;a href="http://chewing.csie.net/"&gt;新酷音&lt;/a&gt;」的開發者花了很大的心力去維護這些子系統的可用性與正確度，整合到libchewing (核心函式) 中，但如今要整合到手持式裝置，就面臨新問題：&lt;br /&gt;&lt;blockquote&gt;「如何將傳統鍵盤的行為導入輸入法系統？」&lt;/blockquote&gt;我們首先會想到手寫辨識，就目前的系統來說，多半會內建OSK (On-Screen Keyboard)，所以「&lt;a href="http://chewing.csie.net/"&gt;新酷音&lt;/a&gt;」理所當然可架構於OSK之上，不過這與我們中文打字者的思維有很大的落差。何以此說？試想，「&lt;a href="http://chewing.csie.net/"&gt;新酷音&lt;/a&gt;」的中文簡介是什麼？就是「智慧型注音輸入法」，透過統計與預測方式，大幅降低同音字詞的出現率，進而改善注音輸入的速度，使用鍵盤只是一種過度，真正使用者腦海中的思維，仍是「注音」(或拼音）本身，所以，日前筆者也跟&lt;a href="http://palatis.blogspot.com/"&gt;Palatis&lt;/a&gt;聊到一種新途徑：&lt;br /&gt;&lt;blockquote&gt;「何不直接辨識注音符號，然後導入新酷音輸入法引擎去作猜字處理？」&lt;/blockquote&gt;這種技術難度對於&lt;span style="font-size:100%;"&gt;&lt;a href="http://chrasis.blogspot.com/"&gt;Chrasis&lt;/a&gt;一類的簡化手寫辨識引擎來說，算是綽綽有餘，如果不討論太複雜的連寫與草寫議題的話。某種角度來說，這說明了Mobile 2.0的思維方式：「過去的桌面技術有機會走入移動裝置之中」與「打破過去封閉技術的藩籬，個人也得以貢獻新的技術元素到移動裝置設計」，如今，我們有完全開放程式碼並開放手機規格與實做的&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;、有高效率的動態組字技術，以及最寶貴的資源，也就是富有高度創意的自由軟體開發者，其整體的影響將會很有趣，手持裝置才正要作更有意義的應用，咱們拭目以待。&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2491055097775757592?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2491055097775757592/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2491055097775757592' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2491055097775757592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2491055097775757592'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/chrasis.html' title='從Chrasis談手寫辨識引擎在移動裝置的機會'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XYo3WYqTnPk/RmxT1io6FPI/AAAAAAAAAGI/QmrDmyyd13I/s72-c/chrasis.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4261477079325308579</id><published>2007-06-11T00:12:00.000+08:00</published><updated>2007-06-11T01:49:42.247+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='font'/><title type='text'>Xorz/Embedded的動態組字實做</title><content type='html'>之前的文章「&lt;a href="http://orzlab.blogspot.com/2007/05/xorzembeddedphone-ui.html"&gt;Xorz/Embedded作為Phone UI&lt;/a&gt;」與「&lt;a href="http://orzlab.blogspot.com/2007/05/blog-post.html"&gt;組字技術與手持式裝置的新機會&lt;/a&gt;」提到輕量級視窗圖形系統的實做進度，同時也思考組字技術帶來的新契機，無論是技術與實務規劃面來說，都還有很大的商議空間，但筆者認為這是必要的基礎建設。利用週末，終於在Xorz/Embedded實做出基本的中文動態組字功能，執行畫面如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RmwuGCo6FNI/AAAAAAAAAF4/eLpShnkuCFc/s1600-h/xorz-embedded-chinese.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/RmwuGCo6FNI/AAAAAAAAAF4/eLpShnkuCFc/s320/xorz-embedded-chinese.png" alt="" id="BLOGGER_PHOTO_ID_5074481561462248658" border="0" /&gt;&lt;/a&gt;以上展示「黃」(Unicode 0x9EC3)與其搭配不同組件 (部首) 的呈現方式。原本single.fnt (&lt;a href="http://www.ksana.tw/"&gt;剎那&lt;/a&gt;單線體) 定義為：&lt;br /&gt;&lt;blockquote&gt;!009EC300|黃0=0000162E0001F02E00005A1100015A5E0000A8110001A85F0000595F0001AC5F00000A5F0001F55F00003C7300013CCE00003D7B0001CA7B0001CACF00003B9E0001C99E00008066000180C1000062D6000242EB000116FA00009AD00002D0E50001DEF700003CC00001CAC0&lt;/blockquote&gt;又，考慮美觀，我從文鼎楷體轉出了stroked font，從而做了細部的調整，這方面還得與&lt;a href="http://www.ksana.tw/"&gt;剎那搜尋工坊&lt;/a&gt;討論如何整合，但基本上組字的概念是可以延續的。「黈」這字在single.fnt是如此定義：&lt;blockquote&gt;009EC800|黈0=黃0131272E1主0811078D9&lt;/blockquote&gt;相當明顯就是「黃」與「主」兩部件的左右結合，同理，「黌」則定義如下：&lt;br /&gt;&lt;blockquote&gt;009ECC00|黌0=00D07E66B黃0156AD78A&lt;/blockquote&gt;改為上下部件的結合。當然，目前的實做還很陽春，但已經看得出效益，以目前的stroked font engine來說，只要先描述以上三個組件，如「黃」與「主」：&lt;br /&gt; &lt;blockquote&gt;/* 0x9ec3 (黃) */&lt;br /&gt;     3, 66, 56, 0,&lt;br /&gt;     'm', 28, -36,&lt;br /&gt;     '2', 29, -36, 29, -36,&lt;br /&gt;     '2', 33, -37, 39, -37,&lt;br /&gt;   ...&lt;br /&gt;&lt;/blockquote&gt;接著就採用single.fnt所定義的組字表示，去作遞迴表示即可，大幅省下儲存空間，也可避免許多維護成本，更重要的是，這一舉克服以往字型檔與程式碼不對稱的問題。除了中文動態組字外，其實Xorz/Embedded的繪字引擎也允許一些變化，比方說「Q版」的呈現，&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rmw3OSo6FOI/AAAAAAAAAGA/rNA_4icBFx8/s1600-h/xorz-embedded-chinese2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rmw3OSo6FOI/AAAAAAAAAGA/rNA_4icBFx8/s320/xorz-embedded-chinese2.png" alt="" id="BLOGGER_PHOTO_ID_5074491598800819426" border="0" /&gt;&lt;/a&gt;有點像是塗鴉文字，行文甚至有互相疊合的效果，這是為了配合某些特殊的應用，如廣告文字，所特別設計的系統，畢竟Xorz/Embedded一開始的定位就是針對嵌入式系統的特製輕量級圖形系統。&lt;br /&gt;&lt;br /&gt;恰好&lt;a href="http://wiki.tossug.org/"&gt;TOSSUG&lt;/a&gt;在本週二也請到國內在動態組字學有專精的前輩，為我們分享中文缺字議題、動態組字技術，以及進行中的變革，詳情可參考「&lt;a href="http://wiki.tossug.org/SignUp:2007-07"&gt;Tossug 2007 年第 7 場心得分享&lt;/a&gt;」，如果當天有空檔，或許筆者也可來作些介紹與展示。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4261477079325308579?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4261477079325308579/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4261477079325308579' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4261477079325308579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4261477079325308579'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/xorzembedded.html' title='Xorz/Embedded的動態組字實做'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XYo3WYqTnPk/RmwuGCo6FNI/AAAAAAAAAF4/eLpShnkuCFc/s72-c/xorz-embedded-chinese.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3923232159268570223</id><published>2007-06-01T11:53:00.000+08:00</published><updated>2007-11-01T02:37:50.936+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='cross development'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>build u-boot from sources</title><content type='html'>因為openmoko patch的u-boot有支援Samsung S3C24xx的stepping stone，所以build看看。&lt;br /&gt;&lt;br /&gt;主要是follow這一篇文章 "&lt;a href="http://wiki.openmoko.org/wiki/Migration_to_bad_block_tolerant_builds"&gt;Migration to bad block tolerant builds&lt;/a&gt;"，說明比u-boot那一篇仔細 (但是我apply 609的patch沒有成功，所以還是使用main stream)。&lt;br /&gt;&lt;br /&gt;工作的目錄是 /home/openmoko&lt;br /&gt;&lt;br /&gt;裝好subvesion，設定svn使用proxy，在~./subversion/server中加入proxy server，port :&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;http-proxy-host = 10.1.1.200&lt;br /&gt;http-proxy-port = 3000&lt;/pre&gt;&lt;/blockquote&gt;checkout openmoko 到 openmoko 目錄&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ svn co https://svn.openmoko.org/ openmoko&lt;/pre&gt;&lt;/blockquote&gt;安裝git-core，改變default git tool (debian etch)&lt;blockquote&gt;&lt;pre&gt;$ aptitude install git-core&lt;br /&gt;$ update-alternatives --config git&lt;br /&gt;== 選 "git-scm"&lt;/pre&gt;&lt;/blockquote&gt;export 好http_proxy，checkout u-boot&lt;blockquote&gt;&lt;pre&gt;$ git clone http://www.denx.de/git/u-boot.git&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);font-size:85%;" &gt;(需要等待一段時間)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;取得cross toolchain : 因為monotone出不去proxy (雖然mailing list中聲稱新版的monotone可以經過proxy，可是我這裡還是出不去)，所以只好直接從 openmoko拿build 好的cross tool&lt;blockquote&gt;&lt;pre&gt;$ wget -r -L http://buildhost.openmoko.org/tmp/cross&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 153, 153); font-weight: bold;font-size:85%;" &gt;(需等待更長時間，且lib/下的檔案有些沒有抓回來，要確認一下，加上 "-c"抓沒抓到的folder。修改 bin 下的file，設為可執行。)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;把抓下來的toolchain copy到 ..&lt;blockquote&gt;&lt;pre&gt;/space/fic/openmoko/gta01/tmp/cross&lt;/pre&gt;&lt;/blockquote&gt;設好PATH:&lt;blockquote&gt;&lt;pre&gt;$ export PATH=/space/fic/openmoko/gta01/tmp/cross/bin:$PATH&lt;/pre&gt;&lt;/blockquote&gt;u-boot - apply patch: (要先裝好&lt;a href="http://savannah.nongnu.org/projects/quilt"&gt;quilt&lt;/a&gt;)&lt;blockquote&gt;&lt;pre&gt;$ cd u-boot&lt;br /&gt;$ export QUILT_PATCHES=/home/openmoko/openmoko/trunk/src/target/u-boot/patches&lt;br /&gt;$ quilt push -a&lt;/pre&gt;&lt;/blockquote&gt;Ok，沒有error message。&lt;br /&gt;&lt;br /&gt;build u-boot - config and make: &lt;blockquote&gt;&lt;pre&gt;$ make ARCH=arm gta01bv2_config&lt;br /&gt;$ make ARCH=arm&lt;/pre&gt;&lt;/blockquote&gt;完成。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-3923232159268570223?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/3923232159268570223/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=3923232159268570223' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3923232159268570223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3923232159268570223'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/06/build-u-boot-from-sources.html' title='build u-boot from sources'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1107107826202443421</id><published>2007-05-31T00:55:00.000+08:00</published><updated>2007-05-31T03:12:59.462+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='font'/><title type='text'>組字技術與手持式裝置的新機會</title><content type='html'>專注於中文技術的&lt;a href="http://www.ksana.tw/"&gt;剎那搜尋工坊&lt;/a&gt;推出新版 (2007.05.26) 的「&lt;a href="http://www.ksana.tw/ccgfind/"&gt;剎那字引&lt;/a&gt;」軟體，其概念相當特別，以「部件」來分析漢字 (泛指中日韓漢字) 進而可做出正向或反向的資訊化操作。就完整的中文處理系統來說，不僅要考慮畫面或裝置輸出，還有繁瑣的輸入法，但受限於異體字、錯別字，或可用性等考量 (特別是手持式裝置來說，得提供一定程度的「漢字容錯」處理)，每每挑戰著設計者的技術水準，但這方面的議題並不是建立大量的state machine就可克服的，我們得從漢字本質去思考。&lt;br /&gt;&lt;br /&gt;「&lt;a href="http://www.ksana.tw/ccgfind/"&gt;剎那字引&lt;/a&gt;」的執行畫面如下： (Win32/Delphi Application running via &lt;a href="http://www.winehq.org/"&gt;WINE&lt;/a&gt;/Linux)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rl2xWqPo_mI/AAAAAAAAAFw/VOVdXuQqess/s1600-h/ccgfind.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rl2xWqPo_mI/AAAAAAAAAFw/VOVdXuQqess/s320/ccgfind.png" alt="" id="BLOGGER_PHOTO_ID_5070403758344175202" border="0" /&gt;&lt;/a&gt;我們可一目了然得知特定部件與其對應的漢字，這可用一致性的數學模式去表示，不過這裡就不贅述了，可參考Foxman前輩發表的一系列文章。對於手持式裝置來說，漢字的輸出與輸入之間即有一定程度的關聯，比方說手寫辨識就與組字在概念上有共通處，而漢字構形資料可作反拆或逆向查詢與推斷，意味著可運用於輸入法的輔助索引處理的機制，是此，即使是手寫辨識的操作，甚至可簡化為只需書寫偏旁，系統反推並決定候選字 (與其組合)，大幅降低辨識的複雜度，或考慮到傳統的輸入法，這就是一個相當有效率的「過濾器」。&lt;br /&gt;&lt;br /&gt;再來我們可回頭思考漢字系統長久以來的缺字問題，儘管桌面應用已經逐步改善此議題，對於手持裝置來說，仍是極大的衝擊。當然，國際大廠注意到這類需要對資源錙銖必較的裝置上，做完整中日韓多國語文處理的議題，本身就是兼顧技術、可用性、價格成本，與後端交換碼種種妥協的設計，所以IICore (International Ideograph Core) 標準被提出，預期成為手機、PDA等移動通訊產品的重要規格，原則上不超過一萬字，是Unicode的子集 (碼位大幅調整)。問題是，我們應著眼於深入更多觸角的移動通訊運算，不該僅用常用的表意文字來限制資訊系統的使用。人們都有使用行動通訊裝置的自由，卻往往受限於種種預設立場的桎梏，這是相當不合理的事情，勢必，技術上得有所突破。&lt;br /&gt;&lt;br /&gt;基於以上考量，動態組字技術於手持式裝置的需求，越來越顯見其重要性，正如之前文章「&lt;a href="http://orzlab.blogspot.com/2007/03/blog-post_20.html"&gt;紀錄：可攜式造字引擎專利釋放暨成果發表會&lt;/a&gt;」所提及的概念，我們可發現運算技術、文化需求，以及M化等因素的交錯即將邁入臨界點，未來將以何種方式呈現？不得而知，但我們實在有必要將基礎建設完善化。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1107107826202443421?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1107107826202443421/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1107107826202443421' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1107107826202443421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1107107826202443421'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/blog-post.html' title='組字技術與手持式裝置的新機會'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XYo3WYqTnPk/Rl2xWqPo_mI/AAAAAAAAAFw/VOVdXuQqess/s72-c/ccgfind.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2387320847111743412</id><published>2007-05-30T17:27:00.000+08:00</published><updated>2007-05-30T23:19:23.979+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cross development'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>GSM modem裝置模擬</title><content type='html'>系統模擬對於嵌入式系統開發來說，是相當重要的里程，不僅晶片層面如此，對於週邊來說，更可對應用程式開發帶來立即的效益，現在，OpenMoko-emulator也提供虛擬GSM modem的模擬。首先，依據之前的文章「&lt;a href="http://orzlab.blogspot.com/2007/05/usbopenmoko.html"&gt;透過USB連線與OpenMoko模擬裝置互動&lt;/a&gt;」，建立虛擬USB network連線，並透過ssh連線到虛擬硬體中，接下來就可以進行GSM modem的操作，畫面如下：(粗體字是打入的指令)&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ &lt;span style="font-weight: bold;"&gt;ssh root@192.168.0.202&lt;/span&gt;&lt;br /&gt;root@192.168.0.202's password:&lt;br /&gt;root@fic-gta01:~$ &lt;span style="font-weight: bold;"&gt;libgsmd-tool -m shell&lt;/span&gt;&lt;br /&gt;libgsm-tool - (C) 2006 by Harald Welte&lt;br /&gt;This program is Free Software and has ABSOLUTELY NO WARRANTY&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;O&lt;/span&gt;&lt;br /&gt;# # Power-On&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;R&lt;/span&gt;&lt;br /&gt;# Register&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;也可以不透過OpenMoko的工具，直接下AT command：(粗體字是打入的指令)&lt;blockquote&gt;&lt;pre&gt;root@fic-gta01:~$ &lt;span style="font-weight: bold;"&gt;/etc/init.d/gsmd stop&lt;/span&gt;&lt;br /&gt;Shutting down gsmd: Terminated&lt;br /&gt;root@fic-gta01:~$ &lt;span style="font-weight: bold;"&gt;echo 1 &gt;/sys/bus/platform/devices/gta01-pm-gsm.0/power_on&lt;/span&gt;&lt;br /&gt;root@fic-gta01:~$ &lt;span style="font-weight: bold;"&gt;cu -E @ -l /dev/ttySAC0&lt;/span&gt;&lt;br /&gt;Connected.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ATE1&lt;/span&gt;&lt;br /&gt;OK&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;詳情可參考Marcin Juszkiewicz的文章 "&lt;a href="http://blog.haerwu.biz/2007/05/29/how-to-check-does-gsm-modem-works/" rel="bookmark" title="Permanent Link to How to check does GSM modem works"&gt;How to check does GSM modem works&lt;/a&gt;"，但對於openmoko-emulator也適用，甚至我們還可以模擬出各種不同的反應，卻不需要任何實體環境介入，這是相當有意思的手機軟體開發方式。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2387320847111743412?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2387320847111743412/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2387320847111743412' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2387320847111743412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2387320847111743412'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/gsm-modem.html' title='GSM modem裝置模擬'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1093843052559703778</id><published>2007-05-30T08:16:00.000+08:00</published><updated>2007-05-30T09:13:55.062+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cross development'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>quilt - patch tools</title><content type='html'>&lt;p&gt;quilt 是用來patch很多patches時使用，使用的方法是&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;quilt cmd&lt;/pre&gt;&lt;/blockquote&gt;可以用&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;quilt cmd -h&lt;/pre&gt;&lt;/blockquote&gt;來看可用的command有哪些。&lt;br /&gt;&lt;br /&gt;因為是多個patch files，所以有一定的patch 順序，quilt會幫我們handle這些順序 (因為當初這些patch 也是由quilt 產生的呀）。就像stack操作一樣，push (apply) 一個patch；用pop 把sourcecode回到上一個沒patch的狀態。&lt;br /&gt;&lt;br /&gt;所以，quilt也可以當作是簡易的Version control system用。&lt;br /&gt;&lt;br /&gt;quilt的操作，將所有的pacth檔都放在要patch的source directory中的"patches"目錄。 (可以是symbolic link)&lt;br /&gt;&lt;br /&gt;剛剛講的patch stack (patch 順序) 就紀錄在 "patches/series" 這個file中。&lt;br /&gt;&lt;br /&gt;所以openmoko 的bootloader patch apply 的方法就是：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;download u-boot latest versio (svn checkout lateset version)&lt;/li&gt;&lt;li&gt;download openmoko u-boot patch (是一個folder)&lt;/li&gt;&lt;li&gt;把這個patch folder copy 到 download 的u-boot folder中&lt;/li&gt;&lt;li&gt;run quilt push -就會依照應有的順序apply 所有的patch.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;That's all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1093843052559703778?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1093843052559703778/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1093843052559703778' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1093843052559703778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1093843052559703778'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/quilt-patch-tools.html' title='quilt - patch tools'/><author><name>Checko</name><uri>http://www.blogger.com/profile/03239306354367907990</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://photos1.blogger.com/blogger/669/302/320/IMGP0803.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4291231813146494982</id><published>2007-05-26T23:02:00.000+08:00</published><updated>2007-05-26T23:27:34.540+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>GCC Visibility與軟體最佳化</title><content type='html'>以前在blog文章「&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001425.html"&gt;Qt Library 的精簡&lt;/a&gt;」提到GCC的&lt;a href="http://gcc.gnu.org/wiki/Visibility"&gt;C++ Visibility&lt;/a&gt;，其實官方的wiki已經描述相當清楚，引述如下：&lt;br /&gt;&lt;blockquote&gt;"Why is the new C++ visibility support so useful? &lt;span class="anchor" id="line-4"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-5"&gt;&lt;/span&gt;&lt;p class="line874"&gt;Put simply, it hides most of the ELF symbols which would have previously (and unnecessarily) been public. This means: &lt;span class="anchor" id="line-6"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-7"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p class="line891"&gt;&lt;em&gt;It very substantially improves load times of your DSO (Dynamic Shared Object).&lt;/em&gt; &lt;span class="anchor" id="line-8"&gt;&lt;/span&gt;For example, a huge C++ template-based library which was tested (the TnFOX Boost.Python bindings library) now loads in eight seconds rather than over six minutes! &lt;span class="anchor" id="line-9"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line891"&gt;&lt;em&gt;It lets the optimiser produce better code.&lt;/em&gt; &lt;span class="anchor" id="line-10"&gt;&lt;/span&gt;PLT indirections (when a function call or variable access must be looked up via the Global Offset Table such as in PIC code) can be completely avoided, thus substantially avoiding pipeline stalls on modern processors and thus much faster code. Furthermore when most of the symbols are bound locally, they can be safely elided (removed) completely through the entire DSO. This gives greater latitude especially to the inliner which no longer needs to keep an entry point around "just in case". &lt;span class="anchor" id="line-11"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line891"&gt;&lt;em&gt;It reduces the size of your DSO by 5-20%.&lt;/em&gt; &lt;span class="anchor" id="line-12"&gt;&lt;/span&gt;ELF's exported symbol table format is quite a space hog, giving the complete mangled symbol name which with heavy template usage can average around 1000 bytes. C++ templates spew out a huge amount of symbols and a typical C++ library can easily surpass 30,000 symbols which is around 5-6Mb! Therefore if you cut out the 60-80% of unnecessary symbols, your DSO can be megabytes smaller! &lt;span class="anchor" id="line-13"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="line891"&gt;&lt;em&gt;Much lower chance of symbol collision.&lt;/em&gt; &lt;span class="anchor" id="line-14"&gt;&lt;/span&gt;The old woe of two libraries internally using the same symbol for different things is finally behind us with this patch. Hallelujah! &lt;span class="anchor" id="line-15"&gt;&lt;/span&gt;&lt;span class="anchor" id="line-16"&gt;&lt;/span&gt;"&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;事實上，對於許多採用C語言撰寫的專案也適用，而且效果很不錯。嵌入式系統開發時常常得控制程式空間使用量，咱們就來看看具體的案例，包含Nokia 770/800與OpenMoko在內的許多專案，採用X Window System，server端的實做是KDrive，而client端雖然只要能跟X Protocol即可，不限定程式語言與實做，但往往我們會透過libX11。就如筆者之前的演講與blog提及，X本身的效率其實很好，但問題在於複雜的軟體實做，其中有許多改進的空間，libX11就是一例。&lt;br /&gt;&lt;br /&gt;剛剛做了些hacking，發現光是利用GCC的&lt;a href="http://gcc.gnu.org/wiki/Visibility"&gt;C++ Visibility&lt;/a&gt;來隱藏非公開的API/ELF symbol，即可大幅降低空間使用量，並提昇載入應用程式速度。&lt;br /&gt;&lt;br /&gt;在Ubuntu 7.04上進行測試，同樣的libX11套件，施加我的修改：&lt;a href="http://jserv.sayya.org/freedesktop/libX11-visibility.patch"&gt;libX11-visibility.patch&lt;/a&gt;後重新編譯，比較兩者的差異： (stripped)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;/usr/lib/libX11.so.6.2.0 (原本) - 964K&lt;/li&gt;&lt;li&gt;dist/usr/lib/libX11.so.6.2.0 (修改過) - 839K&lt;/li&gt;&lt;/ul&gt;相當顯著的差異，接著比較兩者透過size指令的落差：&lt;br /&gt;&lt;blockquote&gt; textures   datatype    bss_seg    decided    hexunfilenamefilename&lt;br /&gt;966896  14496   1596 982988  effcc/usr/lib/libX11.so.6.2.0 (原本)&lt;br /&gt;&lt;br /&gt;textures   datatype    bss_seg    decided    hexunfilename&lt;br /&gt;827962  11336   1224 840522  cd34adist/usr/lib/libX11.so.6.2.0 (修改過)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;於是乎，我們可參照wiki上對於DSO的描述，這之間的意義不僅是空間的降低，對於Code optimizer來說，也允許更多積極的處理方式，最重要的是，符號解析的速度提昇，也避免潛在的符號衝突。這是很簡單的修改，但影響卻相當顯著，我們也可看到整個Gtk+/GNOME的架構仍有最佳化的空間。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4291231813146494982?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4291231813146494982/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4291231813146494982' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4291231813146494982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4291231813146494982'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/gcc-visibility.html' title='GCC Visibility與軟體最佳化'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3900831934681893412</id><published>2007-05-25T01:09:00.000+08:00</published><updated>2007-05-25T08:20:47.908+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tossug'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>OpenMoko演講影片上線</title><content type='html'>&lt;p&gt;&lt;embed style="width: 400px; height: 326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-8574715471341709984&amp;amp;hl=en" flashvars=""&gt;&lt;/embed&gt;&lt;/p&gt;&lt;br /&gt;在&lt;a href="http://www.flickr.com/people/mutolisp/"&gt;psilotum&lt;/a&gt;的協助下，5/8在Tossug聚會所演講的「&lt;a href="http://wiki.tossug.org/SignUp%3a2007-05"&gt;Free your phone! OpenMoko&lt;/a&gt;」過程都完整的錄影下來了，在 Google Video 上甚至還可以清楚看到簡報內容。請享用!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Credits:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Speakers: &lt;a href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt;/&lt;a href="http://gnumonks.org/%7Elaforge/weblog/"&gt;Harald Welte&lt;/a&gt;&lt;br /&gt;Host: &lt;a href="http://wiki.tossug.org/"&gt;Tossug&lt;/a&gt;/&lt;a href="http://pingyeh.net/"&gt;Ping Yeh&lt;/a&gt;&lt;br /&gt;Organizer: &lt;a href="http://people.debian.org.tw/%7Echihchun/"&gt;Rex Tsai&lt;/a&gt;&lt;br /&gt;Producer: &lt;a href="http://www.flickr.com/people/mutolisp/"&gt;psilotum&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;備註: 我們不是在甚麼奇怪的地方，背景是&lt;a href="http://lasaveurdelapasteque.com/"&gt;天邊一朵雲&lt;/a&gt;的法國版海報，Cafe Lumiere 只是一家貼滿海報的咖啡店而已。&lt;/p&gt;&lt;br /&gt;Source: &lt;a href="http://people.debian.org.tw/%7Echihchun/2007/05/25/talk-of-openmoko-is-online/"&gt;http://people.debian.org.tw/~chihchun/2007/05/25/talk-of-openmoko-is-online/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-3900831934681893412?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3900831934681893412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3900831934681893412'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/openmoko.html' title='OpenMoko演講影片上線'/><author><name>Rex Tsai</name><uri>http://www.blogger.com/profile/03765070300237042390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-553243505017115087</id><published>2007-05-25T01:07:00.000+08:00</published><updated>2007-05-25T08:24:13.840+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='La Fonera'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='openwrt'/><category scheme='http://www.blogger.com/atom/ns#' term='fon'/><title type='text'>串連WIFLY與FON AP</title><content type='html'>&lt;a href="http://fourdollars.blogspot.com/"&gt;四元&lt;/a&gt;(4$) 一直對小巧可愛的路由器非常感興趣，他寫了一篇關於 「&lt;a href="http://fourdollars.blogspot.com/2007/04/linux.html"&gt;Linux絕對有支援的無線網路卡&lt;/a&gt;」提到了&lt;a href="http://tw.asus.com/products4.aspx?l1=12&amp;amp;l2=41&amp;l3=0&amp;amp;model=59&amp;modelmenu=1"&gt;ASUS WL-330g&lt;/a&gt;、&lt;a href="http://www.dlink.com/products/?pid=346"&gt;D-Link DWL-G730AP&lt;/a&gt;與&lt;a href="http://catalog.belkin.com/IWCatProductPage.process?Product_Id=203404"&gt;Belkin  Wireless G Travel Router&lt;/a&gt; 等非常省電容易攜帶的產品。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fourdollars.blogspot.com/"&gt;4$&lt;/a&gt;動了一個主意，想把可愛的La Fonera改裝成類似上述的產品，可以透過Ethernet 連上WiFi AP，再透過WiFi  AP連上外部的網路。由於&lt;a href="http://fourdollars.blogspot.com/"&gt;4$&lt;/a&gt;在&lt;a href="http://hackathon.blogspot.com/"&gt;Hackathon&lt;/a&gt;的時，在&lt;a href="http://cclien.net/"&gt;cclien&lt;/a&gt;的協助下，成功的編譯了&lt;a href="http://openwrt.org/"&gt;OpenWrt&lt;/a&gt;的開發版 &lt;a href="https://svn.openwrt.org/openwrt/trunk/"&gt;Kamikaze&lt;/a&gt;，並燒進FON La Fonera中，因此他需要做的只是再把設定寫進去即可。&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/hacking-fonera.jpg" alt="Hacking La fonera" /&gt;&lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;很不幸的 4$ 改爛了設定檔，開了幾個  &lt;a href="http://en.wikipedia.org/wiki/VLAN"&gt;VLan&lt;/a&gt;，結果沒辦法透過無線或有線網路進入，把自己關在 AP 外面。因此週二帶了條&lt;a href="http://people.debian.org.tw/%7Echihchun/2007/05/17/cheapest-ttl2usb-converter-for-la-fonera/"&gt;傳輸線&lt;/a&gt;到 &lt;a href="http://wiki.tossug.org/"&gt;Tossug&lt;/a&gt; 聚會，幫忙進到 Console，並把相關的設定修正，以便讓他可以再 ssh 進 AP 裡。&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/working-group.jpg" alt="FON hacking group" /&gt;&lt;/p&gt;根據 OpenWrt &lt;a href="http://wiki.openwrt.org/OpenWrtDocs/KamikazeConfiguration"&gt;Kamikaze 的設定方式&lt;/a&gt;，我們只消更改 /etc/config/network與/etc/config/wireless檔案，開兩個WiFi Interfaces，一個作為&lt;abbr title="Wireless Station"&gt;STA&lt;/abbr&gt;，另一個作為&lt;abbr title="Access Point"&gt;AP&lt;/abbr&gt;，並將Ethernet port與&lt;abbr title="Wireless Station"&gt;STA&lt;/abbr&gt; wireless interface "&lt;a href="http://linux-net.osdl.org/index.php/Bridge"&gt;bridge&lt;/a&gt;" 在一起。&lt;br /&gt;&lt;br /&gt;改後檔案像這樣&lt;br /&gt;/etc/config/wireless&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;config wifi-device  wifi0&lt;br /&gt;     option type     atheros&lt;br /&gt;     option channel  5&lt;br /&gt;     option diversity 0&lt;br /&gt;     option txantenna 1&lt;br /&gt;     option rxantenna 1&lt;br /&gt;#       option distance  2000&lt;br /&gt;# disable radio to prevent an open ap after reflashing:&lt;br /&gt;     option disabled 0&lt;br /&gt;&lt;br /&gt;config wifi-iface&lt;br /&gt;     option device   wifi0&lt;br /&gt;     option network  wan&lt;br /&gt;     option mode     sta&lt;br /&gt;     option ssid     "WIFLY"&lt;br /&gt;     option hidden   0&lt;br /&gt;#       option txpower  15&lt;br /&gt;#       option bgscan   enable&lt;br /&gt;     option encryption none&lt;br /&gt;&lt;br /&gt;config wifi-iface&lt;br /&gt;     option device   wifi0&lt;br /&gt;     option network  lan&lt;br /&gt;     option mode     ap&lt;br /&gt;     option ssid     "FON_AP"&lt;br /&gt;     option hidden   0&lt;br /&gt;     option encryption none&lt;/pre&gt;&lt;br /&gt;/etc/config/network&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Copyright (c) 2006 OpenWrt.org&lt;br /&gt;&lt;br /&gt;config interface loopback&lt;br /&gt;     option ifname   lo&lt;br /&gt;     option proto    static&lt;br /&gt;     option ipaddr   127.0.0.1&lt;br /&gt;     option netmask  255.0.0.0&lt;br /&gt;&lt;br /&gt;config interface lan&lt;br /&gt;     option ifname   eth0&lt;br /&gt;     option type     bridge&lt;br /&gt;     option proto    static&lt;br /&gt;     option ipaddr   192.168.1.1&lt;br /&gt;     option netmask  255.255.255.0&lt;br /&gt;     option gateway  ''&lt;br /&gt;     option dns      ''&lt;br /&gt;     option network  ath0&lt;br /&gt;&lt;br /&gt;config interface wan&lt;br /&gt;     option ifname ath1&lt;br /&gt;     option proto dhcp&lt;/pre&gt;&lt;/blockquote&gt;如此一來，你就可以一邊連上&lt;a href="http://www.wifly.com.tw/"&gt;WIFLY&lt;/a&gt;，另外一方面以FON_AP將WIFIY提供的網際網路連線分享給其他人用啦。:-)&lt;br /&gt;&lt;br /&gt;接下來要做的是應該是改一條USB Cable，讓La Fonera可以直接吃USB的電源。;-)&lt;br /&gt;&lt;br /&gt;Credits:&lt;br /&gt;設備 - &lt;a href="http://www.fon.com/"&gt;FON Taiwan&lt;/a&gt;&lt;br /&gt;軟體開發 -  &lt;a href="http://cclien.net/"&gt;cclian&lt;/a&gt;, &lt;a href="http://fourdollars.blogspot.com/"&gt;4$&lt;/a&gt;, &lt;a href="http://blog.linux.org.tw/jserv/"&gt;jserv&lt;/a&gt;&lt;br /&gt;攝影 - &lt;a href="http://www.flickr.com/people/mutolisp/"&gt;psilotum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Source: &lt;a href="http://people.debian.org.tw/%7Echihchun/2007/05/25/leverage-wifly-and-fon/"&gt;http://people.debian.org.tw/~chihchun/2007/05/25/leverage-wifly-and-fon/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-553243505017115087?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/553243505017115087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/553243505017115087'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/wifly-fon-ap.html' title='串連WIFLY與FON AP'/><author><name>Rex Tsai</name><uri>http://www.blogger.com/profile/03765070300237042390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-5352586661907262213</id><published>2007-05-23T11:27:00.000+08:00</published><updated>2007-05-23T12:07:07.349+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='cross development'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>ARM模擬的狀態保存</title><content type='html'>前文「&lt;a href="http://orzlab.blogspot.com/2007/05/usbopenmoko.html"&gt;透過USB連線與OpenMoko模擬裝置互動&lt;/a&gt;」指出現在透過&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;來模擬&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;已有相當便利的互動機制，我們也隨時可在&lt;a href="http://fabrice.bellard.free.fr/qemu/qemu-doc.html"&gt;Qemu Monitor&lt;/a&gt;中監看與控制虛擬機器的狀態，Andrzej Zaborowski最近實做了ARM模擬的狀態保存，所以現在可快速load/save vm，如此一來，應用程式的開發與驗證更加便利。目前也整合到openmoko-emulator中，取得最新的發展版本：&lt;br /&gt;&lt;blockquote&gt;$ svn co https://OpenSVN.csie.org/openmoko_addons/openmoko-emulator&lt;br /&gt;&lt;/blockquote&gt;現在openmoko/run.sh這個script已處理qemu-img的操作，所以我們只要如往常一般編譯與執行即可。舉例來說，我們希望保存開機完成、見到整個OpenMoko UI的狀態，那麼只要按下Ctrl-Alt-2以切換到Qemu Monitor畫面，在提示符號下先暫停虛擬機器的系統模擬動作：&lt;br /&gt;&lt;blockquote&gt;(qemu) &lt;span style="font-weight: bold;"&gt;stop&lt;/span&gt;&lt;/blockquote&gt;接著就可以保存狀態：&lt;br /&gt;&lt;blockquote&gt;(qemu) &lt;span style="font-weight: bold;"&gt;savevm&lt;/span&gt; mainwindow&lt;/blockquote&gt;參數 "mainwindow" 只是一個識別名稱，事實上我們可以在不同的狀態給予特定的識別，這時候我們可以結束虛擬機器的執行：&lt;br /&gt;&lt;blockquote&gt;(qemu) &lt;span style="font-weight: bold;"&gt;quit&lt;/span&gt;&lt;/blockquote&gt;然後我們重新啟動openmoko-emulator (run.sh)，立刻切換到&lt;a href="http://fabrice.bellard.free.fr/qemu/qemu-doc.html"&gt;Qemu Monitor&lt;/a&gt;，隨後在命令提示打入指令以查看保存的狀態：&lt;br /&gt;&lt;blockquote&gt;(qemu) &lt;span style="font-weight: bold;"&gt;info snapshots&lt;/span&gt;&lt;/blockquote&gt;應該會得到類似以下的輸出：&lt;br /&gt;&lt;blockquote&gt;Snapshot devices: mtd&lt;br /&gt;&lt;pre&gt;Snapshot list (from mtd):&lt;br /&gt;ID     TAG                  VM SIZE      DATE&lt;br /&gt;1       mainwindow     22M              2006-05-23  11:11:35&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;要還原已保存的狀態相當直覺，只要打下指令：&lt;br /&gt;&lt;blockquote&gt;(qemu) &lt;span style="font-weight: bold;"&gt;loadvm&lt;/span&gt; mainwindow&lt;/blockquote&gt;再按鍵Ctrl-Alt-1切回執行畫面，這時候就可以看到上次我們保存的狀態與畫面了，當然，配合前次提到的Linux gadgetfs，我們還可存取USB (emulated) network，這樣進行應用程式開發的彈性也提昇許多，若再引入自動化的機制，未來要實做「時光機器」也是相當可行的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-5352586661907262213?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/5352586661907262213/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=5352586661907262213' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5352586661907262213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5352586661907262213'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/arm.html' title='ARM模擬的狀態保存'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3406276097856095072</id><published>2007-05-21T16:28:00.001+08:00</published><updated>2007-05-21T19:03:08.757+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='culture'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>OpenMoko at Tossug</title><content type='html'>&lt;p style="text-align: center;"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/sean.jpg" alt="Sean Moss-Pultz" /&gt;&lt;/p&gt;5/8在&lt;a href="http://wiki.tossug.org/SignUp%3a2007-05"&gt;Tossug&lt;/a&gt;舉辦的分享活動算是相當成功，當天總共來了超過五十位聽眾。許多朋友也留下聯絡資訊，或許可以加入開發社群或即將成立的&lt;a href="http://www.openmoko.com/"&gt;OpenMoko公司&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;演講分為兩節，&lt;a href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt;介紹關於&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;的背景故事、起源與目標。而 &lt;a href="http://gnumonks.org/%7Elaforge/weblog/"&gt;Harald Welte&lt;/a&gt; 則介紹軟硬體等技術細節。&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/harald.jpg" alt="Harald Welte" /&gt;&lt;/p&gt;演講完整錄影，影片將上傳至網路，簡報一併於稍後提供。謝謝&lt;a href="http://www.flickr.com/people/mutolisp/"&gt;psilotum&lt;/a&gt;攝影，以及&lt;a href="http://wiki.tossug.org/"&gt;Tossug&lt;/a&gt;工作人員的辛苦籌備。&lt;br /&gt;&lt;br /&gt;原文: &lt;a href="http://people.debian.org.tw/%7Echihchun/2007/05/17/openmoko-at-tossug/"&gt;http://people.debian.org.tw/~chihchun/2007/05/17/openmoko-at-tossug/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-3406276097856095072?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3406276097856095072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3406276097856095072'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/openmoko-at-tossug.html' title='OpenMoko at Tossug'/><author><name>Rex Tsai</name><uri>http://www.blogger.com/profile/03765070300237042390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4861037570515678638</id><published>2007-05-21T16:26:00.000+08:00</published><updated>2007-05-21T19:05:08.466+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Working on Neo1973</title><content type='html'>&lt;p style="text-align: center;"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/hacking-openmoko.jpg" alt="Working on Neo1973" /&gt;&lt;/p&gt;這是4/14在&lt;a href="http://wiki.tossug.org/MixCoffee&amp;Tea"&gt;Mix coffee &amp;amp; tee&lt;/a&gt;的工作畫面 (&lt;a href="http://people.debian.org.tw/%7Echihchun/2007/04/30/have-fun-with-openmokoneo1973/"&gt;工作紀錄&lt;/a&gt;, &lt;a href="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/minicom-0411.txt" title="Minicom log for reflash images on Neo 1973"&gt;Minicom log for reflash images on Neo 1973&lt;/a&gt;)，我們將Neo1973拆解，並試著reflash與裝上debug board。我很喜歡這張照片，謝謝&lt;a href="http://www.flickr.com/people/mutolisp/"&gt;psilotum&lt;/a&gt;的攝影。&lt;br /&gt;&lt;br /&gt;原文: &lt;a href="http://people.debian.org.tw/%7Echihchun/2007/05/17/working-on-neo1973/"&gt;http://people.debian.org.tw/~chihchun/2007/05/17/working-on-neo1973/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4861037570515678638?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4861037570515678638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4861037570515678638'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/working-on-neo1973.html' title='Working on Neo1973'/><author><name>Rex Tsai</name><uri>http://www.blogger.com/profile/03765070300237042390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1111705160460208484</id><published>2007-05-21T16:14:00.000+08:00</published><updated>2007-05-25T08:15:27.933+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='La Fonera'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='fon'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Cheapest ttl2usb converter for la fonera</title><content type='html'>本來是想一起參加&lt;a href="http://hackathon.blogspot.com/"&gt;台灣黑客鬆&lt;/a&gt;的聚會，因為&lt;a href="http://blog.linux.org.tw/%7Ejserv/"&gt;Jserv&lt;/a&gt;跟幾位朋友想在&lt;a href="http://www.fon.com/tw/info/whatsFon#whatsLafonera"&gt;La Fonera&lt;/a&gt;上動動手腳，試著在La Fonera上玩玩&lt;a href="http://orzlab.blogspot.com/2007/03/ajaxembedded.html"&gt;AJAX/Web Server for embedded system&lt;/a&gt;。然而因為會議太忙，兩天都沒辦法出席，真是對不住。cclien寫了一篇相當不錯的文章，紀錄了&lt;a href="http://cclien.net/archives/000308.html"&gt;黑客鬆&lt;/a&gt;的過程。最後他們是將&lt;a href="http://jose.med.kuleuven.ac.be/wt/Home.fcg"&gt;Wt&lt;/a&gt;移植到La Foera 上，Jserv於&lt;a href="http://osdc.tw/"&gt;OSDC&lt;/a&gt;中也針對此議題給了一個 &lt;a href="http://en.wikipedia.org/wiki/Lightning_Talk"&gt;lighting talk&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;事後，有一些朋友詢問該如何購買或製作黑La Fonera一定會用到的Serial Port Cable。事實上，現在有好幾種方法可以進到La Fonera中，&lt;a href="http://stefans.datenbruch.de/"&gt;Stefans Datenbruch&lt;/a&gt; 針對不同版本提供了開啟ssh的數個方法 (&lt;a href="http://stefans.datenbruch.de/lafonera/"&gt;Hacking the La Fonera&lt;/a&gt;) 。基本上，開啟ssh後，你大約可以進行reflash或各式各樣的惡搞。然而，偶爾你還是需要用到console，因為說不準什麼時候會搞壞，讓路由器再起不能。&lt;br /&gt;&lt;br /&gt;要連上La Fonera的 Console，你需要的是TTL Converter，利用J2的&lt;a href="http://wiki.openwrt.org/OpenWrtDocs/Hardware/Fon/Fonera#head-f67f402ba755bfd031ad6558b2ced842698f1949"&gt;Pinout&lt;/a&gt;，就可以進到console或redboot prompt 。&lt;a href="http://cclien.net/"&gt;cclien&lt;/a&gt;利用他自己的手機線路做&lt;a href="http://cclien.net/archives/000299.html"&gt;一條TTL2Rs232的線路&lt;/a&gt;。他用的是DLR-3的傳輸線，現在大約不怎麼好買。&lt;br /&gt;&lt;br /&gt;其實，如果看得懂電路圖，利用前輩做的&lt;a href="http://blog.unlugarenelmundo.es/2006/11/02/habilitando-acceso-por-ssh-a-la-fonera/"&gt;線路圖&lt;/a&gt;，到市場場買顆MAX232或相容的chip，再加上其他一些配件，大約只花費6.72 €。但是像我這樣通常只用筆記型電腦的傢伙，若做了RS232接頭還得再找一條RS232轉USB的轉接頭來，這樣的花費大約也要5~10€。&lt;br /&gt;&lt;br /&gt;最簡單的作法就是使用手機傳輸線了，例如支援Nokia手機的CA-42傳輸線，在Yahoo拍賣上大約是NT$ 90 ~ NT$ 200。它本身利用&lt;a href="http://www.prolific.com.tw/eng/Products.asp?ID=59"&gt;PL-2303&lt;/a&gt;或&lt;a href="http://www.arkmicro.com/en/products/view.php?id=10"&gt;ARK3116&lt;/a&gt;將UART轉成USB，所以你要做的就是找到正確的Pinout即可。&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;a href="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/usage.jpg" title="CA-42 Cable for La Fonera 1.0" rel="lightbox"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/usage.thumbnail.jpg" alt="CA-42 Cable for La Fonera 1.0" /&gt;&lt;/a&gt;&lt;/p&gt;我買過兩個版本的CA-42傳輸線，分別是用&lt;a href="http://www.prolific.com.tw/eng/Products.asp?ID=59"&gt;PL-2303&lt;/a&gt;或&lt;a href="http://www.arkmicro.com/en/products/view.php?id=10"&gt;ARK3116&lt;/a&gt;的晶片，不同的版本顯然用的晶片不同，而線路顏色所代表的意義也不同，所以你或許得自己以電錶等工具摸索一番。你也可以依據腳位，知道每條線路的功能，可參考&lt;a href="http://pinouts.ru/CellularPhones-Nokia/nokia_pop_pinout.shtml"&gt;Nokia Pop-port pinout&lt;/a&gt;。根據我的經驗，近期可以在市場上買到的是ARK3116，這款的GND是紅色，RX是綠色，TX是白色。&lt;br /&gt;&lt;p style="text-align: center;" align="left"&gt;&lt;a href="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/pinport.jpg" title="Pinport of La fonear 1.0" rel="lightbox"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/05/pinport.thumbnail.jpg" alt="Pinport of La fonear 1.0" /&gt;&lt;/a&gt;&lt;/p&gt;你可以在電子材料行買到一些簡易的線材，稍加修剪後接上線路後即可。有了Serial Console，你就可以存取&lt;a href="http://www.cygwin.com/redboot/"&gt;redboot&lt;/a&gt;, 並可試著把新的boot image/kernel image/rootfs燒進去。Happy hacking ;-)&lt;br /&gt;&lt;br /&gt;本文發佈於 &lt;a href="http://people.debian.org.tw/%7Echihchun/2007/05/17/cheapest-ttl2usb-converter-for-la-fonera/"&gt;http://people.debian.org.tw/~chihchun/2007/05/17/cheapest-ttl2usb-converter-for-la-fonera/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1111705160460208484?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1111705160460208484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1111705160460208484'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/cheapest-ttl2usb-converter-for-la.html' title='Cheapest ttl2usb converter for la fonera'/><author><name>Rex Tsai</name><uri>http://www.blogger.com/profile/03765070300237042390</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1508734880744631442</id><published>2007-05-21T14:52:00.000+08:00</published><updated>2008-01-19T18:28:02.509+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='eglibc'/><category scheme='http://www.blogger.com/atom/ns#' term='eabi'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>EGLIBC初探</title><content type='html'>在Embedded的環境下，我們有許多C Library的選擇，從&lt;a href="http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/"&gt;BSD libc&lt;/a&gt;、&lt;a href="http://www.uclibc.org/"&gt;uClibc&lt;/a&gt;、&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;、&lt;a href="http://www.fefe.de/dietlibc/"&gt;dietlibc&lt;/a&gt;，甚至是&lt;a href="http://en.wikipedia.org/wiki/Klibc"&gt;klibc&lt;/a&gt; (配合initramfs)，過去我們考量到footprint，往往會捨棄發展活躍的GNU C Library (&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;)，轉而以&lt;a href="http://www.uclibc.org/"&gt;uClibc&lt;/a&gt;或&lt;a href="http://www.fefe.de/dietlibc/"&gt;dietlibc&lt;/a&gt;來建構系統，正如&lt;a href="http://www.uclibc.org/"&gt;uClibc&lt;/a&gt;的FAQ網頁提及的項目 "&lt;a name="why"&gt;What's wrong with glibc?&lt;/a&gt;" 所說：&lt;br /&gt;&lt;blockquote&gt;"The GNU C library     is a great piece of software, make no mistake.  It is compliant with just     about every standard ever created, and runs on just about every operating     system and architecture -- no small task!  But there is a price to be paid     for that.  It is quite a large library, and keeps getting larger with each     release.  It does not even pretend to target embedded systems.  To quote     from Ulrich Drepper, the maintainer of GNU libc: "...glibc is not the right     thing for [an embedded OS]. It is designed as a native library (as opposed     to embedded).  Many functions (e.g., printf) contain functionality which is     not wanted in embedded systems." 24 May 1999"&lt;br /&gt;&lt;/blockquote&gt;以及下一條 "&lt;a name="doesnt_suck"&gt;So uClibc is smaller then glibc?  Doesn't that mean it completely sucks? How could it be smaller and not suck?&lt;/a&gt;" 所說：&lt;br /&gt;&lt;blockquote&gt;"uClibc and glibc have different goals.  glibc strives for features     and performance, and is targeted for desktops and servers with     (these days) lots of resources.  It also strives for ABI stability.            On the other hand, the goal of uClibc is to provide as much functionality     as possible in a small amount of space, and it is intended primarily for     embedded use.  It is also highly configurable in supported features, at the     cost of ABI differences for different configurations."&lt;/blockquote&gt;&lt;br /&gt;所以很明顯，&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;考量到通用性系統的需求，許多部份會考量到效能的最佳化處理，所以光是字串函式往往就可能拆成許多程序來實做，以針對不同的資料量給予最佳效能的處理方式，但往往也必須付出大量的footprint衝擊。Greg Alexander甚至寫了一篇用詞尖銳的文章 "&lt;a href="http://www.galexander.org/glibc.html"&gt;GLIBC SUCKS&lt;/a&gt;" 來闡述他的觀察：就算是簡單只用printf()函式的 "Hello World" 程式，竟然也不成比例的龐大，引述如下：&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;Let's perform some more GLIBC2 vs. BSD libc comparisons:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;[greg@linux] ~$ gcc -static -o hello hello.c; strip hello&lt;br /&gt;[greg@linux] ~$ du -sk hello&lt;br /&gt;416     hello&lt;br /&gt;&lt;/pre&gt; compared to:&lt;br /&gt;&lt;pre&gt;[greg@freebsd] ~$ gcc -static -o hello hello.c; strip hello&lt;br /&gt;[greg@freebsd] ~$ du -sk hello&lt;br /&gt;44      hello&lt;br /&gt;&lt;/pre&gt; Yeah, that's right, when statically linked GLIBC2's printf() and support routines are about 10x as big as BSD's.  We're on computers, a 15% improvement is considered worth looking at so you can copy their techniques.  An "order of magnitude" is 2x.  You simply aren't expecting 10x differences between extremely simple code that hasn't advanced, technologically, in more than two decades.&lt;/blockquote&gt;可見如此簡單的應用程式，其空間使用竟然達十倍之譜，在筆者的「&lt;a href="http://wiki.debian.org.tw/HackingHelloWorld"&gt;深入淺出Hello World&lt;/a&gt;」系列演講也提及許多&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;與gcc潛藏的神秘性質，這些對於有特定目標、空間侷限的系統來說，是很難允許的。但採用非&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;的解決方案雖可大幅降低footprint與系統複雜度，卻可能因而限制可用的應用程式，最有名的例子就是&lt;a href="http://www.mozilla.org/"&gt;Mozilla&lt;/a&gt;一直無法在&lt;a href="http://www.uclibc.org/"&gt;uClibc&lt;/a&gt;上正確編譯與執行，這也辜負了採用GNU/Linux作為Embedded system作業系統的美意。過去我們得因應需求與彈性考量，多方取捨並周旋於前述的C Library實做中。&lt;br /&gt;&lt;br /&gt;專注於GNU開發工具研發與客制化的&lt;a href="http://www.codesourcery.com/"&gt;CodeSourcery&lt;/a&gt;公司與若干嵌入式系統大廠，諸如&lt;a href="http://www.mvista.com/"&gt;MontaVista&lt;/a&gt;、Freescale，及WindRiver等廠商合作，針對&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;的改進計畫 (自2.5版開始)，實做出更適合Embedded環境的C Library實做 -- &lt;a href="http://www.eglibc.org/"&gt;EGLIBC&lt;/a&gt;，並承諾與&lt;a href="http://www.gnu.org/software/libc/libc.html"&gt;glibc&lt;/a&gt;的binary/source compatibility，其明確的目標可參考&lt;a href="http://www.eglibc.org/mission"&gt;EGLIBC::Mission&lt;/a&gt;網頁：&lt;br /&gt;&lt;blockquote&gt;"    Expand and enhance the capabilities of the GNU C Library (GLIBC) to    support embedded systems for diverse environments, and maintain an open    development environment encouraging broad, cooperative developer    participation."&lt;/blockquote&gt;所以採取同樣的codebase (svn merged from FSF)，同時也確保是Free Software (copyright holder為FSF)，在mailing-list也可見到「借力使力」的發展模式，如Joseph S. Myers的post "&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;a name="00208" href="http://www.eglibc.org/archives/patches/msg00208.html"&gt;[patches] EGLIBC 2.6 created&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;"。Jollen兄日前在「&lt;/span&gt;&lt;/strong&gt;&lt;a href="http://www.jollen.org/blog/2007/05/embedded_device_is_pc.html"&gt;Embedded Device 等於 PC&lt;/a&gt;」一文提及以下概念：&lt;br /&gt;&lt;blockquote&gt;「就現代的硬體來說，embedded device 和 PC 的界線是越來越小了，雖然有時參與的 project 是 'embedded device'，但是技術本質上就好像在做 PC 一樣。」&lt;/blockquote&gt;這是非常有趣、值得思索的趨勢，拜硬體蓬勃發展所賜，我們得以在此時間點大量採用原本桌面系統的軟體建設，知名的&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;計畫就是最好的明證，但畢竟嵌入式系統的考量仍有差異，所以今日我們有以下發展理念：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;銜接活躍的自由軟體開發&lt;/li&gt;&lt;li&gt;不只採用開放的系統，更要有開放的發展心態&lt;/li&gt;&lt;li&gt;將力量集中於刀鋒上，創造核心價值&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;這使得採用&lt;a href="http://www.eglibc.org/"&gt;EGLIBC&lt;/a&gt;成為多贏的解決方案，於是OrzLab也開始評估這些嶄新技術。延續之前的分析與模擬驗證 (詳見「&lt;a href="http://orzlab.blogspot.com/2007/03/blog-post_15.html"&gt;視覺化系統模擬與偵錯&lt;/a&gt;」一文)，最近的重心放於&lt;a href="http://www.arm.com/products/DevTools/ABI.html"&gt;ARM Embedded ABI&lt;/a&gt;、GCC 4.2，與&lt;a href="http://www.eglibc.org/"&gt;EGLIBC&lt;/a&gt;等最新的技術，為了簡化進行流程，我改了簡單的script:&lt;a href="http://jserv.sayya.org/embedded/toolchain-eglibc.sh"&gt;toolchain-eglibc.sh&lt;/a&gt;，這可自動擷取原始程式碼並建構。執行方式很簡單：&lt;br /&gt;&lt;blockquote&gt;./toolchain-eglibc.sh arm&lt;/blockquote&gt;成功編譯後，會在$HOME/cross-build/arm-none-linux-gnueabi目錄下建立以下子目錄：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;obj : 建構過程的目的檔，可忽略&lt;/li&gt;&lt;li&gt;tools : 包含GNU Toolchain&lt;/li&gt;&lt;li&gt;sysroot : 置入target的Runtime (root file system)&lt;/li&gt;&lt;/ul&gt;稍後筆者會探討如何利用系統模擬器來驗證，並探討整體效能與記憶體使用的提昇。&lt;br /&gt;&lt;br /&gt;Update: Jick的更新與修正可參考「&lt;a href="http://jicknan.blogspot.com/2008/01/eglibc-embedded-glibc.html"&gt;EGLIBC: Embedded GLIBC 体验&lt;/a&gt;」&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1508734880744631442?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1508734880744631442/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1508734880744631442' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1508734880744631442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1508734880744631442'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/eglibc.html' title='EGLIBC初探'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1195080109161777145</id><published>2007-05-19T22:03:00.000+08:00</published><updated>2007-05-19T22:59:00.118+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cross development'/><category scheme='http://www.blogger.com/atom/ns#' term='openembedded'/><title type='text'>避免cross-compile的陷阱：libtool</title><content type='html'>在Unix系統上，有個知名的 "make" 工具，可協助開發程式，但是隨著程式開發複雜度的提昇，已經很難用有限的 "make rules" 來滿足多變的需求，所以Cygnus/RedHat的Tom Tromey就設計&lt;a href="http://www.gnu.org/manual/autoconf/index.html" target="_blank"&gt;autoconf&lt;/a&gt;與&lt;a href="http://www.gnu.org/manual/automake/index.html" target="_blank"&gt;automake&lt;/a&gt;等工具，期望大幅降低異質性平台開發的困難。這也包含所謂的cross-compile，為了克服不同平台的函式庫編譯落差，&lt;a href="http://www.gnu.org/software/libtool/libtool.html" target="_blank"&gt; libtool&lt;/a&gt;也被提出，立意甚好但往往讓我們遇到不少問題，比方說知名的hacker - Casey Marshall - 就在與這些上萬行的工具程式奮戰一段時間後，寫了篇短文 "&lt;a href="http://metastatic.org/text/libtool.html"&gt;Avoiding libtool minefields when cross-compiling&lt;/a&gt;"。&lt;a href="http://www.gnu.org/manual/autoconf/index.html" target="_blank"&gt;autoconf&lt;/a&gt;與&lt;a href="http://www.gnu.org/manual/automake/index.html" target="_blank"&gt;automake&lt;/a&gt;等工具最核心的想法就是希望編譯過程可以簡化成如下： (以x86下進行ARM-Linux程式編譯為例)&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;./configure --host=arm-linux \&lt;br /&gt; --prefix=/usr \&lt;br /&gt; --enable-shared \&lt;br /&gt; --enable-Feature1 \&lt;br /&gt; --disable-Feature2&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;筆者參與的若干自由軟體計畫中，也陸續導入此設計，如上的組態所示，我們指定cross-compile的對象為arm-linux，&lt;a href="http://www.gnu.org/manual/automake/index.html" target="_blank"&gt;automake&lt;/a&gt;會依據特定條件去找尋與測試編譯環境，同時我們啟用Feature1與抑制Feature2，接著一堆上萬行的Makefile就會乖乖建構了。那麼，問題在哪呢？我們很常見到以下的編譯錯誤：&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;/bin/sh libtool --mode=link target-gcc -c -O2 -o libbar.so ... -lfoo&lt;br /&gt;target-gcc -c -O2 -o libbar.so ... /usr/lib/libfoo.so&lt;br /&gt;/usr/lib/libfoo.so: &lt;strong&gt;could not read symbols: File in wrong format&lt;/strong&gt;&lt;br /&gt;collect2: ld returned 1 exit status&lt;/tt&gt;&lt;br /&gt;&lt;/pre&gt;很明顯，&lt;a href="http://www.gnu.org/software/libtool/libtool.html" target="_blank"&gt;libtool&lt;/a&gt;被誤導，原本該尋找arch = arm的程式檔案，沒想到抓到host (x86)上的檔案，為何如此？我們隨便挑一個描述程式連結資訊的*.la檔案：&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;$ cat /usr/lib/libesd.la&lt;br /&gt;# libesd.la - a libtool library file&lt;br /&gt;# Generated by ltmain.sh - GNU libtool 1.5.6 (1.1220.2.95 2004/04/11 05:50:42) Debian: 224 $&lt;br /&gt;#&lt;br /&gt;# Please DO NOT delete this file!&lt;br /&gt;# It is necessary for linking the library.&lt;br /&gt;&lt;br /&gt;# The name that we can dlopen(3).&lt;br /&gt;dlname='libesd.so.0'&lt;br /&gt;&lt;br /&gt;# Names of this library.&lt;br /&gt;library_names='libesd.so.0.2.36 libesd.so.0 libesd.so'&lt;br /&gt;&lt;br /&gt;# The name of the static archive.&lt;br /&gt;old_library='libesd.a'&lt;br /&gt;&lt;br /&gt;# Libraries that this one depends upon.&lt;br /&gt;dependency_libs=' -L/usr/lib /usr/lib/libaudiofile.la -lm'&lt;br /&gt;&lt;br /&gt;# Version information for libesd.&lt;br /&gt;current=2&lt;br /&gt;age=2&lt;br /&gt;revision=36&lt;br /&gt;&lt;br /&gt;# Is this an already installed library?&lt;br /&gt;installed=yes&lt;br /&gt;&lt;br /&gt;# Should we warn about portability when linking against -modules?&lt;br /&gt;shouldnotlink=no&lt;br /&gt;&lt;br /&gt;# Files to dlopen/dlpreopen&lt;br /&gt;dlopen=''&lt;br /&gt;dlpreopen=''&lt;br /&gt;&lt;br /&gt;# Directory that this library needs to be installed in:&lt;br /&gt;&lt;strong&gt;libdir='/usr/lib'&lt;/strong&gt;&lt;/tt&gt;&lt;/pre&gt;再清楚不過，這肇因於將libdir指向Host/x86上的目錄下，但這些*.la檔案已經置放於 "staging" (工作區)，於是我們可用GNU sed去更動。比方說 "staging" 目錄於 /tmp/rootfs，那麼：&lt;br /&gt;&lt;tt&gt;&lt;blockquote&gt;sed -i~ -e       "s;/usr;/tmp/rootfs/usr;"&lt;/blockquote&gt;&lt;/tt&gt;這之間有頗多繁瑣的工作，還好&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;對&lt;a href="http://www.gnu.org/manual/autoconf/index.html" target="_blank"&gt;autoconf&lt;/a&gt;、&lt;a href="http://www.gnu.org/manual/automake/index.html" target="_blank"&gt;automake&lt;/a&gt;，與&lt;a href="http://www.gnu.org/software/libtool/libtool.html" target="_blank"&gt;libtool&lt;/a&gt;作了修正，所以大部分的Automake-based applications可以很容易透過&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;去建構，但副作用則是需要re-generated，又，這樣的套件或應用程式往往佔多數，耗費的時間也相當可觀。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1195080109161777145?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1195080109161777145/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1195080109161777145' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1195080109161777145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1195080109161777145'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/cross-compilelibtool.html' title='避免cross-compile的陷阱：libtool'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-5510750474468652304</id><published>2007-05-19T03:26:00.000+08:00</published><updated>2007-05-19T04:51:23.354+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgetfs'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><title type='text'>透過USB連線與OpenMoko模擬裝置互動</title><content type='html'>前幾篇文章介紹如何透過&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;來模擬&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;與&lt;a href="http://pokylinux.org/"&gt;Poky&lt;/a&gt;，這部份的開發逐漸穩定，而&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;現在對於硬體的模擬也頗完整，很多時候我們可直接指定Ethernet模擬來作PXE/BOOTP/TFTP開機或DHCP，於是Host與(Emulated) Target互動就相當簡單。但，如果是&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt; Neo1973/GTA01這類沒有Ethernet (頂多只有Wifi或Bluetooth)的硬體裝置，該如何互動呢？最近加入USB gadget模擬的支援，可將USB slave轉包到Linux 2.6的&lt;a href="http://www.linux-usb.org/usbtest/"&gt;gadgetfs&lt;/a&gt;，如此一來，我們就可建立USB (emulated) network，兩端也可用NFS或&lt;a href="http://fuse.sourceforge.net/sshfs.html"&gt;sshfs&lt;/a&gt;來作檔案分享存取。&lt;br /&gt;&lt;br /&gt;在Ubuntu 7.04上操作的方式如下，注意，建議使用一般權限進行，並善用sudo的機制。&lt;br /&gt;&lt;br /&gt;取得Linux Kernel原始程式碼：&lt;br /&gt;&lt;blockquote&gt;$ apt-get install linux-source-2.6.20&lt;/blockquote&gt;解開檔案並給予目前的組態：&lt;br /&gt;&lt;blockquote&gt;$ cd /usr/src&lt;br /&gt;$ tar jxf linux-source-2.6.20.tar.bz2 &amp;&amp;amp; cd linux-source-2.6.20&lt;br /&gt;$ cp /boot/config-`uname -r` .config&lt;br /&gt;&lt;/blockquote&gt;因為Ubuntu預設的USB Gadget/Peripheral controller是實體裝置，但我們需要dummy_hcd (Dummy/Loopback USB host and device emulator driver)，所以我們得調整設定：&lt;br /&gt;&lt;blockquote&gt;$ patch -p0 &lt; &lt;a href="http://jserv.sayya.org/kernel/dotconfig_dummy_hcd.patch"&gt;dotconfig_dummy_hcd.patch&lt;/a&gt;&lt;/blockquote&gt;然後建構我們需要的核心模組：&lt;br /&gt;&lt;blockquote&gt;$ make MODVERDIR=drivers/usb/gadget \&lt;br /&gt;    drivers/usb/gadget/dummy_hcd.ko \&lt;br /&gt;    drivers/usb/gadget/gadgetfs.ko&lt;br /&gt;&lt;/blockquote&gt;順利的話就會有兩個 .ko檔，接著就安裝：&lt;br /&gt;&lt;blockquote&gt;$ sudo insmod drivers/usb/gadget/dummy_hcd.ko&lt;br /&gt;$ sudo insmod drivers/usb/gadget/gadgetfs.ko default_uid=`id -u`&lt;/blockquote&gt;Host端需要一個名為/dev/gadget的目錄，以掛載gadgetfs：&lt;br /&gt;&lt;blockquote&gt;$ sudo mkdir -p /dev/gadget&lt;br /&gt;$ sudo mount -t gadgetfs gadget /dev/gadget -o noauto,user,group&lt;/blockquote&gt;核心的部份告一段落，接著我們要來建構&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;，取得最新的openmoko-emulator：&lt;br /&gt;&lt;blockquote&gt;$ svn co https://OpenSVN.csie.org/openmoko_addons/openmoko-emulator&lt;br /&gt;&lt;/blockquote&gt;編譯時期需指定kernel header (Ubuntu預設沒有打包全部USB gadget的header)：&lt;br /&gt;&lt;blockquote&gt;$ cd openmoko-emulator&lt;br /&gt;$./configure --cc="gcc-3.4 -I/usr/src/linux-source-2.6.20/include"&lt;/blockquote&gt;&lt;br /&gt;在最後一行輸出應該要有以下字樣：&lt;br /&gt;&lt;blockquote&gt;USB Gadgetfs support yes&lt;/blockquote&gt;接著就打 "make"，順利的話會在arm-softmmu目錄產生名為qemu-system-arm的執行檔。我們可透過script自動下載u-boot、kernel，與rootfs等images並「燒」入我們的模擬硬體中，操作如下：&lt;br /&gt;&lt;blockquote&gt;$ ./openmoko/download.sh&lt;br /&gt;$ ./openmoko/flash.sh&lt;br /&gt;&lt;/blockquote&gt;正確的話，畫面會提示run.sh的script檔案被生成，咱們就來跑看看：&lt;br /&gt;&lt;blockquote&gt;$ ./openmoko/run.sh&lt;/blockquote&gt;操作方式在前文「&lt;a href="http://orzlab.blogspot.com/2007/04/openmokoneo1973.html"&gt;OpenMoko/Neo1973硬體模擬&lt;/a&gt;」已提及，不贅述。等X Window的畫面都出現後，就是運用&lt;a href="http://www.linux-usb.org/usbtest/"&gt;gadgetfs&lt;/a&gt;的時機。按下Ctrl-Alt-2組合鍵切入Qemu Monitor，我們可監控與管理Qemu的狀態，當我們打入"info usbslave"指令時，應該有如下的輸出：&lt;blockquote&gt;&lt;pre&gt;USB2.2 device 1457:5122:&lt;br /&gt;Manufacturer: Linux 2.6.20.7-moko8/s3c2410_udc&lt;br /&gt;Product: RNDIS/Ethernet Gadget&lt;br /&gt;Configuration 0: RNDIS&lt;br /&gt;Configuration 1: CDC Ethernet&lt;/pre&gt;&lt;/blockquote&gt;因為&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;在啟動X的時候會順便將USB network帶起，這時候我們就可透過&lt;a href="http://www.linux-usb.org/usbtest/"&gt;gadgetfs&lt;/a&gt;去讓Host與(emulated) target互動。同樣在Qemu Monitor畫面，打入 "usb_add gadget:1" 指令，若無錯誤訊息，表示已成功。在Host上的終端機檢查USB gadgetfs的狀態：&lt;br /&gt;&lt;blockquote&gt;$ lsusb -v | grep -A10 -B12 s3c2410&lt;/blockquote&gt;應該會有以下輸出：&lt;br /&gt;&lt;pre&gt;Bus 004 Device 003: ID 1457:5122&lt;br /&gt;Device Descriptor:&lt;br /&gt;bLength                18&lt;br /&gt;bDescriptorType         1&lt;br /&gt;bcdUSB               2.00&lt;br /&gt;bDeviceClass            2 Communications&lt;br /&gt;bDeviceSubClass         0&lt;br /&gt;bDeviceProtocol         0&lt;br /&gt;bMaxPacketSize0        64&lt;br /&gt;idVendor           0x1457&lt;br /&gt;idProduct          0x5122&lt;br /&gt;bcdDevice            2.12&lt;br /&gt;iManufacturer           1 Linux 2.6.21.1-moko8/s3c2410_udc&lt;br /&gt;iProduct                2 RNDIS/Ethernet Gadget&lt;br /&gt;iSerial                 0&lt;br /&gt;bNumConfigurations      1&lt;br /&gt;Configuration Descriptor:&lt;br /&gt;bLength                 9&lt;br /&gt;bDescriptorType         2&lt;br /&gt;wTotalLength           80&lt;br /&gt;bNumInterfaces          2&lt;br /&gt;bConfigurationValue     1&lt;br /&gt;iConfiguration          7 CDC Ethernet&lt;br /&gt;&lt;/pre&gt;這時候就可透過CDC Ethernet操作USB network，&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;在啟動該裝置時就設定IP與route，所以我們只要在Host設定必要的網路組態，即可連線到模擬的裝置：&lt;br /&gt;&lt;blockquote&gt;$ ifconfig usb0 inet 192.168.0.200 netmask 255.255.255.0&lt;br /&gt;$ ssh root@192.168.0.202&lt;/blockquote&gt;順利的話就會看到命令提示畫面：&lt;br /&gt;&lt;pre&gt;root@fic-gta01:~$&lt;/pre&gt;當然，拿到shell後，什麼事情都可以作。&lt;br /&gt;&lt;br /&gt;注意，在關閉openmoko-emulator前，請切換到Qemu Monitor，並打入"usb_del gadget"的指令，要求將&lt;a href="http://www.linux-usb.org/usbtest/"&gt;gadgetfs&lt;/a&gt;的存取關閉，否則很可能會kernel panic。這時候Host的dmesg輸出應該類似以下：&lt;br /&gt;&lt;pre&gt;[ 4751.700000] dummy_udc dummy_udc: unregister gadget driver 'gadgetfs'&lt;br /&gt;[ 4751.700000] gadgetfs: disconnected&lt;br /&gt;[ 4751.700000] dummy_hcd dummy_hcd: port status 0x00010100 has changes&lt;br /&gt;[ 4751.700000] dummy_hcd dummy_hcd: port status 0x00010100 has changes&lt;br /&gt;[ 4751.700000] usb 4-1: USB disconnect, address 3&lt;br /&gt;[ 4751.700000] usb0: unregister 'cdc_ether' usb-dummy_hcd-1, CDC Ethernet Device&lt;br /&gt;[ 4753.856000] usb usb4: dummy_bus_suspend&lt;br /&gt;&lt;/pre&gt;另外，Win32的USB redirection實做我也開始進行，希望不久後也可在Win32進行&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;的模擬與開發工作。本文內容僅供參考與進度展示，後續的更新會發佈於&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;官方的wiki: &lt;a href="http://wiki.openmoko.org/wiki/OpenMoko_under_QEMU"&gt;OpenMoko_under_QEMU&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-5510750474468652304?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/5510750474468652304/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=5510750474468652304' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5510750474468652304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5510750474468652304'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/usbopenmoko.html' title='透過USB連線與OpenMoko模擬裝置互動'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6597271511845855665</id><published>2007-05-14T15:48:00.000+08:00</published><updated>2007-05-14T23:35:12.788+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openembedded'/><category scheme='http://www.blogger.com/atom/ns#' term='poky'/><title type='text'>Install Poky from scratch</title><content type='html'>&lt;a href="http://pokylinux.org/"&gt;Poky&lt;/a&gt;是一套建立於&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;上的Embedded Linux build system, distribution and developer environment，與專注於GNOME Embedded type platforms (X11/Matchbox/GTK+)。我們可直接使用官方已編好的Image與Kernel，但在此我們將自已動手做 :)&lt;br /&gt;&lt;br /&gt;實作過程：&lt;br /&gt;1. 下載原始程式碼：&lt;br /&gt;&lt;blockquote&gt;$ svn co http://svn.o-hand.com/repos/poky/trunk poky&lt;/blockquote&gt;2. 安裝必要之套件&lt;br /&gt;&lt;blockquote&gt;$ apt-get install patch diffstat texi2html cvs svn bzip2 tar gzip gawk makeinfo qemu&lt;br /&gt;&lt;/blockquote&gt;2.1. 如果你要自行編譯qemu for poky還須安裝&lt;br /&gt;&lt;blockquote&gt;$ apt-get install gcc-3.4 libsdl1.2-dev zlib1g-dev&lt;/blockquote&gt;3. 設定環境&lt;br /&gt;&lt;blockquote&gt;$ source poky-init-build-env&lt;br /&gt;確定/bin/sh指向bash，如果為dash則在編譯perl-native時會有問題&lt;br /&gt;&lt;/blockquote&gt;4. 編譯 Image&lt;br /&gt;&lt;blockquote&gt;$ bitbake oh-image-pda&lt;/blockquote&gt;5. Try it :)&lt;br /&gt;&lt;blockquote&gt;$ cd $OEROOT/build/tmp/deploy/images&lt;br /&gt;$ poky-qemu zImage-qemuarm.bin oh-image-pda-qemuarm.ext2&lt;/blockquote&gt;6. 編譯qemu&lt;br /&gt;&lt;blockquote&gt;$ bitbake -c build qemu&lt;br /&gt;PS:如需移除套件可使用 bitbake -c clean $packname&lt;br /&gt;&lt;/blockquote&gt;7. 編譯完qemu之後，會放在 $OEROOT/build/tmp/work/armv5te-poky-linux-gnueabi內，使用自行編譯的qemu執行poky&lt;br /&gt;&lt;blockquote&gt;$ sudo &lt;span style="color: rgb(255, 0, 0);"&gt;$OEROOT/build/tmp/work/armv5te-poky-linux-gnueabi/qemu-0.8.2+cvs20060723-r4/install/qemu/usr/bin/qemu-system-arm&lt;/span&gt; -kernel &lt;span style="color: rgb(204, 51, 204);"&gt;zImage-qemuarm.bin&lt;/span&gt; -append "root=/dev/sda console=ttyAMA0 console=tty0 mem=64M" -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/home/blue119/poky/scripts/poky-qemu-ifup -M versatilepb -hda &lt;span style="color: rgb(204, 102, 204);"&gt;oh-image-pda-qemuarm.ext2&lt;/span&gt; -usb -usbdevice wacom-tablet&lt;br /&gt;&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vwWicVXotx0/Rkc4vmBjlCI/AAAAAAAAAEk/SZxVfFrfqpE/s1600-h/Screenshot-QEmu+%28ctrl%2Bshift+releases+mouse+and+keyboard+%29.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_vwWicVXotx0/Rkc4vmBjlCI/AAAAAAAAAEk/SZxVfFrfqpE/s320/Screenshot-QEmu+%28ctrl%2Bshift+releases+mouse+and+keyboard+%29.png" alt="" id="BLOGGER_PHOTO_ID_5064078696313492514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vwWicVXotx0/Rkc4m2Bjk_I/AAAAAAAAAEM/u5jNu6Yhbik/s1600-h/Screenshot-QEmu+%28ctrl%2Bshift+grabs+mouse+and+keyboard+%29-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_vwWicVXotx0/Rkc4m2Bjk_I/AAAAAAAAAEM/u5jNu6Yhbik/s320/Screenshot-QEmu+%28ctrl%2Bshift+grabs+mouse+and+keyboard+%29-1.png" alt="" id="BLOGGER_PHOTO_ID_5064078545989637106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vwWicVXotx0/Rkc4vWBjlAI/AAAAAAAAAEU/ISUV1AQEXpQ/s1600-h/Screenshot-QEmu+%28ctrl%2Bshift+grabs+mouse+and+keyboard+%29-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_vwWicVXotx0/Rkc4vWBjlAI/AAAAAAAAAEU/ISUV1AQEXpQ/s320/Screenshot-QEmu+%28ctrl%2Bshift+grabs+mouse+and+keyboard+%29-2.png" alt="" id="BLOGGER_PHOTO_ID_5064078692018525186" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-6597271511845855665?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6597271511845855665/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=6597271511845855665' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6597271511845855665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6597271511845855665'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/install-poky-from-scratch.html' title='Install Poky from scratch'/><author><name>Yao-Po Wang</name><uri>http://www.blogger.com/profile/00542696056381844190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh6.google.com/image/blue119/RdQIQdp8QrI/AAAAAAAAABI/zRBE2Wbs7RA/%E5%9C%96%E7%89%871.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vwWicVXotx0/Rkc4vmBjlCI/AAAAAAAAAEk/SZxVfFrfqpE/s72-c/Screenshot-QEmu+%28ctrl%2Bshift+releases+mouse+and+keyboard+%29.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4119851825581094316</id><published>2007-05-14T15:44:00.000+08:00</published><updated>2007-05-14T23:33:38.647+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='openembedded'/><category scheme='http://www.blogger.com/atom/ns#' term='mokomakefile'/><title type='text'>Install OpenMoKo from MokoMakefile</title><content type='html'>如果你想安裝&lt;a href="http://www.openmoko.org/"&gt;OpenMoKo&lt;/a&gt; from scratch有二種方法，除了直接下載SVN來編譯之後，我們還可使用 &lt;a href="http://wiki.openmoko.org/wiki/User:RodWhitby" title="User:RodWhitby"&gt;Rod Whitby&lt;/a&gt; 所編寫的&lt;a href="http://wiki.openmoko.org/wiki/MokoMakefile" title="MokoMakefile"&gt; MokoMakefile&lt;/a&gt; Makefile，好處是我們可以利用簡單的make指令取代一些煩雜的指令 。以下為我的安裝過程：&lt;br /&gt;&lt;br /&gt;1. 確認建構主機安裝必要的套件：&lt;br /&gt;&lt;blockquote&gt;$ apt-get install python patch m4 make python-psyco ccache perl diffstat \&lt;br /&gt;wget curl ftp cvs subversion git&lt;/blockquote&gt;2. 於建構系統安裝&lt;a href="http://www.openembedded.org/"&gt;Openembedded&lt;/a&gt;：&lt;br /&gt;i. 在apt檔案庫追加&lt;a href="http://www.openembedded.org/"&gt;Openembedded&lt;/a&gt;所需的套件：&lt;br /&gt;&lt;blockquote&gt;$ echo "deb http://www.openembedded.org/dl/ packages/" &gt;&gt; /etc/apt/sources.list&lt;/blockquote&gt;ii. 安裝&lt;a href="http://monotone.ca/"&gt;monotone&lt;/a&gt; 0.32&lt;br /&gt;&lt;blockquote&gt;$ wget http://monotone.ca/downloads/0.32/monotone_0.32-0.1_i386.deb&lt;br /&gt;#版本若不一樣可能會造成問題，此版本是我使用過沒問題的&lt;br /&gt;&lt;br /&gt;$ update-alternatives --config git&lt;br /&gt;＃選擇 /usr/bin/git-scm來提供git的實做，而非用/usr/bin/git.transition&lt;/blockquote&gt;3. 安裝輔助性的套件：&lt;br /&gt;&lt;blockquote&gt;$ apt-get install libxml2-utils xmlto passivetex&lt;br /&gt;$ apt-get install docbook&lt;/blockquote&gt;4. 建立專屬的$OMDIR目錄：&lt;br /&gt;&lt;blockquote&gt;$ export OMDIR=$HOME/moko ; mkdir $OMDIR ; cd $OMDIR&lt;/blockquote&gt;5. 取得MokoMakefile:&lt;br /&gt;&lt;blockquote&gt;$ wget http://www.rwhitby.net/files/openmoko/Makefile&lt;/blockquote&gt;6. 設定環境&lt;br /&gt;&lt;blockquote&gt;$ make setup&lt;br /&gt;PS: 請確定/bin/sh指向bash，如為dash則編譯perl-native時會有問題&lt;br /&gt;&lt;/blockquote&gt;7. 開始建構：&lt;br /&gt;&lt;blockquote&gt;$ make openmoko-devel-image&lt;/blockquote&gt;8. 以模擬環境來執行：&lt;br /&gt;&lt;blockquote&gt;$ make build-qemu&lt;br /&gt;$ make flash-qemu-local&lt;br /&gt;$ make run-qemu&lt;/blockquote&gt;以下是參考的執行畫面：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vwWicVXotx0/RkSXSmBjk5I/AAAAAAAAADc/Lvpk4NImoJE/s1600-h/Screenshot-QEMU.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_vwWicVXotx0/RkSXSmBjk5I/AAAAAAAAADc/Lvpk4NImoJE/s320/Screenshot-QEMU.png" alt="" id="BLOGGER_PHOTO_ID_5063338226771792786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vwWicVXotx0/RkSXS2Bjk6I/AAAAAAAAADk/PoK1VUvZ4SQ/s1600-h/Screenshot-QEMU-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_vwWicVXotx0/RkSXS2Bjk6I/AAAAAAAAADk/PoK1VUvZ4SQ/s320/Screenshot-QEMU-1.png" alt="" id="BLOGGER_PHOTO_ID_5063338231066760098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vwWicVXotx0/RkSXS2Bjk7I/AAAAAAAAADs/CM-d2BWmapY/s1600-h/Screenshot-QEMU-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_vwWicVXotx0/RkSXS2Bjk7I/AAAAAAAAADs/CM-d2BWmapY/s320/Screenshot-QEMU-2.png" alt="" id="BLOGGER_PHOTO_ID_5063338231066760114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vwWicVXotx0/RkSXTGBjk8I/AAAAAAAAAD0/0WgDemolfZ0/s1600-h/Screenshot-QEMU-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_vwWicVXotx0/RkSXTGBjk8I/AAAAAAAAAD0/0WgDemolfZ0/s320/Screenshot-QEMU-3.png" alt="" id="BLOGGER_PHOTO_ID_5063338235361727426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vwWicVXotx0/RkSXTGBjk9I/AAAAAAAAAD8/LKV76R2iZHc/s1600-h/Screenshot-QEMU-4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_vwWicVXotx0/RkSXTGBjk9I/AAAAAAAAAD8/LKV76R2iZHc/s320/Screenshot-QEMU-4.png" alt="" id="BLOGGER_PHOTO_ID_5063338235361727442" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4119851825581094316?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4119851825581094316/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4119851825581094316' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4119851825581094316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4119851825581094316'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/install-openmoko-from-mokomakefile.html' title='Install OpenMoKo from MokoMakefile'/><author><name>Yao-Po Wang</name><uri>http://www.blogger.com/profile/00542696056381844190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://lh6.google.com/image/blue119/RdQIQdp8QrI/AAAAAAAAABI/zRBE2Wbs7RA/%E5%9C%96%E7%89%871.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vwWicVXotx0/RkSXSmBjk5I/AAAAAAAAADc/Lvpk4NImoJE/s72-c/Screenshot-QEMU.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2524306201548488033</id><published>2007-05-14T08:51:00.000+08:00</published><updated>2007-05-14T09:20:37.512+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monotone'/><category scheme='http://www.blogger.com/atom/ns#' term='openembedded'/><category scheme='http://www.blogger.com/atom/ns#' term='svk'/><title type='text'>轉換OpenEmbedded的repository為Subversion系統</title><content type='html'>Marcin Juszkiewicz日前在blog "&lt;a href="http://blog.haerwu.biz/2007/04/04/3-years-of-openembedded-and-me/" rel="bookmark" title="Permanent Link to 3 years of OpenEmbedded and me"&gt;3 years of OpenEmbedded and me&lt;/a&gt;" 提到&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;這個專案計畫已有超過三年的開發歷程，也廣泛的被自由軟體專案甚至是商業公司所採用，知名的&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;即採用此系統提供所需的套件與基礎建設。&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;採用的版本控制系統是具有分散式開發的&lt;a href="http://monotone.ca/"&gt;monotone&lt;/a&gt;，這是一套很優秀的系統，也得以藉此處理眾多套件與硬體組態的維護，但其難度不算低，所以開發者又要學一套新系統。&lt;br /&gt;&lt;br /&gt;之前的文章「&lt;a href="http://orzlab.blogspot.com/2007/05/svk.html"&gt;SVK與嵌入式系統開發&lt;/a&gt;」提及我正在做的 "openmoko-builder"，透過&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;來管理多方的版本控制系統檔案庫 (repository)，目標是建立最小&lt;span style="text-decoration: underline;"&gt;的&lt;/span&gt;&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;建構系統。&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;已經替我們處理很多問題，但目前沒辦法操作&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://monotone.ca/"&gt;monotone&lt;/a&gt;系統，這讓我的進度遲滯不前。還好Lele Gaifax撰寫了一個好用的工具&lt;a href="http://darcs.net/DarcsWiki/Tailor"&gt;Tailor&lt;/a&gt;，提供多種版本控制系統互轉的能力，這也讓我一舉克服維護與同步處理的議題。&lt;br /&gt;&lt;br /&gt;在使用&lt;a href="http://darcs.net/DarcsWiki/Tailor"&gt;Tailor&lt;/a&gt;之前，請確認依據&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;的文件 "&lt;a href="http://www.openembedded.org/wiki/GettingStarted"&gt;Getting Started&lt;/a&gt;"，取得並更新 "/stuff/OE.mtn" 這個資料庫檔案。接著我們需要安裝&lt;a href="http://darcs.net/DarcsWiki/Tailor"&gt;Tailor&lt;/a&gt;最新的開發版本，其使用&lt;a href="http://darcs.net/"&gt;darcs&lt;/a&gt;系統，所以請用apt-get一類的工具安裝套件，以下是取得程式碼的操作：&lt;br /&gt;&lt;blockquote&gt;darcs get http://darcs.arstecnica.it/tailor/&lt;/blockquote&gt;&lt;a href="http://darcs.net/DarcsWiki/Tailor"&gt;Tailor&lt;/a&gt;使用Python開發，安裝也很簡單：&lt;br /&gt;&lt;blockquote&gt;cd tailor ; sudo setup.py install&lt;/blockquote&gt;我們需要編輯一份&lt;a href="http://darcs.net/DarcsWiki/Tailor"&gt;Tailor&lt;/a&gt;所需的專案檔案，描述&lt;a href="http://monotone.ca/"&gt;monotone&lt;/a&gt;轉換到Subversion的細節，舉例來說我們建立一個名為 "task.project" 的檔案，以下是其內容：&lt;br /&gt;&lt;pre&gt;[DEFAULT]&lt;br /&gt;verbose = True&lt;br /&gt;debug = True&lt;br /&gt;&lt;br /&gt;[project]&lt;br /&gt;target = svn:target&lt;br /&gt;start-revision = HEAD&lt;br /&gt;root-directory = /src/repos&lt;br /&gt;state-file = tailor.state&lt;br /&gt;source = monotone:source&lt;br /&gt;subdir = .&lt;br /&gt;&lt;br /&gt;[monotone:source]&lt;br /&gt;repository = /stuff/OE.mtn&lt;br /&gt;module = org.openembedded.dev&lt;br /&gt;&lt;br /&gt;[svn:target]&lt;br /&gt;module = /openembedded&lt;br /&gt;repository = file:///src/repos&lt;br /&gt;&lt;/pre&gt;SVN的檔案庫 "file:///src/repos" 自然就是存放轉換後的版本系統所用，我們應該事先建立，操作程序如下：&lt;br /&gt;&lt;blockquote&gt;$ mkdir -p /src/repos&lt;br /&gt;$ svnadmin create --fs-type fsfs /src/repos&lt;/blockquote&gt;注意，建立時必須選擇FSFS的型態，否則&lt;a href="http://darcs.net/DarcsWiki/Tailor"&gt;Tailor&lt;/a&gt;處理可能會遇到問題。最後就是執行&lt;a href="http://darcs.net/DarcsWiki/Tailor"&gt;Tailor&lt;/a&gt;的操作，使用方式如下：&lt;br /&gt;&lt;blockquote&gt;$ tailor task.project&lt;/blockquote&gt;沒意外的話，我們就可以看到這之間的轉換過程，最後會轉換輸出於檔案庫 "file:///src/repos/openembedded" 之中，這時候可以用SVN自己的merge工具或&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;的smerge進行套件的更新維護，畢竟我們感興趣的套件就那幾個而已。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2524306201548488033?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2524306201548488033/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2524306201548488033' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2524306201548488033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2524306201548488033'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/openembeddedrepositorysubversion.html' title='轉換OpenEmbedded的repository為Subversion系統'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2843583400173796258</id><published>2007-05-10T12:59:00.000+08:00</published><updated>2007-05-10T13:29:33.946+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='revision control'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='svk'/><title type='text'>SVK與嵌入式系統開發</title><content type='html'>為什麼我們考慮要採用Linux與一系列自由軟體？姑且不論軟體品質，保持更新與強大的QA就是其中關鍵因素，但就個人的經驗來說，過去看到太多公司僅知曉自由軟體的「自由下載與使用」，卻不清楚其體用或本質，於是，仍以過去封閉的方式開發，也就是說，只是把自由軟體當作書本的「範例程式」，當然，這樣的確可行，但在這個 "Programming 2.0" 的新紀元，我們有必要改變思維。&lt;br /&gt;&lt;br /&gt;首先，所謂「流水不腐」，這就是自由軟體的精神其中一個面向，蓬勃發展的計畫如Linux kernel，隨時都引入新的技術與硬體支援，我們當然該緊密跟上這些脈動，但開發產品不是兒戲，往往得先挑選一個堪用的軟硬體設計，然後依據功能需求，進行調整與改寫，這是我們相當清楚的。但過去的問題就是，這樣的軟體設計往往無法再銜接到日新月異的社群發展，也就難以跟新的開發版本銜接，於是乎，我們得認真的思考分散式版本控制系統 (Distributed Version Control System)，對過去集中式的系統做了反撲。在多方的評估與實驗下，我們的建議是採用&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;，大幅降低許多嵌入式系統開發的維護難度。&lt;br /&gt;&lt;br /&gt;2004年在&lt;a href="http://asiabsdcon.org/"&gt;Asia BSD Conference&lt;/a&gt;就聽過clkao (高嘉良) 前輩介紹&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;，也在一些專案用過，不過後來都不了了之，總是卡在技術問題上。今年二月份為了維護 &lt;a href="http://sourceforge.net/projects/pxa27x-linux"&gt;PXA27x Linux&lt;/a&gt;計畫，又使用了&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;。在之前的blog "&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001841.html"&gt;Qemu patches&lt;/a&gt;" 可看到系統模擬所做了修改，但事實上那還是一部分，更別考慮到qemu的活躍發展所導致頻繁的API changes，還好，我們有&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;參考 "&lt;a href="http://svk.elixus.org/view/UsingSVKAsARepositoryMirroringSystem"&gt;Using SVK As A Repository Mirroring System&lt;/a&gt;" 一文提供了簡要的&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;用法，可輕鬆的維護發展分支，&lt;a href="http://sourceforge.net/projects/pxa27x-linux"&gt;PXA27x Linux&lt;/a&gt;計畫的子項目PXAemu就是以qemu為基礎的設計，要保持跟upstream (Qemu官方) 同步發展，可以很簡單，以下是運作的輸出畫面：&lt;pre class="code" style="margin: 6px;"&gt;jserv@work:~/virt/pxaemu$ svk pull&lt;br /&gt;svk: $ cvs login   # for 'anonymous'&lt;br /&gt;CVS password:&lt;br /&gt;svk: $ cvs ... checkout qemu   # establish local CVS workspace&lt;br /&gt;svk: appending required ChangeSets, StringEdit filters&lt;br /&gt;svk: running cvs log qemu&lt;br /&gt;svk: found 587 rev(s) with 1073 tag applications&lt;br /&gt;svk: no revisions to write&lt;br /&gt;svk: sorting by change_id&lt;br /&gt;svk: committed 0 revisions&lt;br /&gt;自動合併（2812, 2814）/mirrors/qemu/trunk 到 /projects/pxaemu（源頭為 /mirrors/qemu/trunk:2812）&lt;br /&gt;U   target-sparc/op.c&lt;br /&gt;U   target-sparc/cpu.h&lt;br /&gt;U   target-sparc/translate.c&lt;br /&gt;新的合併歷史紀錄：b2c12b54-451a-302e-ae34-065fcc141066:qemu/.../trunk:2814&lt;br /&gt;已送交編號 2815 的更動。&lt;br /&gt;同步化 //projects/pxaemu（/projects/pxaemu）於 /home/jserv/virt/pxaemu 到第 2815 版。&lt;br /&gt; target-sparc - 略過&lt;br /&gt; target-sparc/op.c - 略過&lt;br /&gt; target-sparc/cpu.h - 略過&lt;br /&gt; target-sparc/translate.c - 略過&lt;br /&gt;&lt;/pre&gt; 在 Debian 中需要安裝兩個套件：&lt;a href="http://packages.debian.org/stable/perl/svk"&gt;svk&lt;/a&gt;與&lt;a href="http://packages.debian.org/stable/perl/libvcp-dest-svk-perl"&gt;libvcp-dest-svk-perl&lt;/a&gt;。如上所示，這就是智慧型的 merge，因為PXAemu本身已移除ARM以外的target，所以即便upstream的qemu有其他架構的更新，也會自動忽略。如此一來，建立特定需求的版本分支可以相當輕鬆，卻可擁有強大的離線版本控制能力，對於許多Embedded Linux專案來說，其Know-How其實就是「如何基於原本的原始程式碼，針對需求去調整」，那麼，我們就可以善用&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;，當然，上面只展示一部分特性，事實上，在&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt; 2.0又提出一堆強大的功能。&lt;br /&gt;&lt;br /&gt;最近我也利用&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;來管理Build system，我們都知道OpenEmbedded有豐富的支援，但入門不容易，又常常無法順利建構套件或系統，OpenedHand則建立&lt;a href="http://pokylinux.org/"&gt;Poky&lt;/a&gt;這個特製的系統，試圖去降低OpenEmbedded的難度，於是，我有個簡單的想法：&lt;br /&gt;&lt;blockquote&gt;「能否把原本依賴OpenEmbedded的OpenMoko建構系統，改成&lt;a href="http://pokylinux.org/"&gt;Poky&lt;/a&gt;為基礎的形式？」&lt;/blockquote&gt;想法很單純，但實現有很大的難度，這相當跨越了OpenEmbedded、&lt;a href="http://pokylinux.org/"&gt;Poky&lt;/a&gt;，以及OpenMoko這三個repository。過去我們往往得訴諸大量人工介入，但有了&lt;a href="http://svk.bestpractical.com/"&gt;SVK&lt;/a&gt;，一切都改觀了，以下是操作畫面：&lt;br /&gt;&lt;pre&gt;~/openmoko-builder$ svk mirror --list&lt;br /&gt;Path                 Source&lt;br /&gt;============================================================&lt;br /&gt;//mirror/openmoko    http://svn.openmoko.org/trunk&lt;br /&gt;//mirror/poky        http://svn.o-hand.com/repos/poky/trunk&lt;br /&gt;~/openmoko-builder$ svk pull&lt;br /&gt;Syncing http://svn.o-hand.com/repos/poky/trunk&lt;br /&gt;Auto-merging (3059, 3149) /mirror/poky to /project/openmoko-builder (base /mirror/poky:3059).&lt;br /&gt;U   meta/conf/distro/include/preferred-xorg-versions.inc&lt;br /&gt;  meta/conf/distro/poky.conf - skipped&lt;br /&gt;U   meta/classes/cpan.bbclass&lt;br /&gt;U   meta/packages/avahi/avahi_0.6.15.bb&lt;br /&gt;...&lt;br /&gt;A   meta/packages/xorg-xserver/xserver-kdrive-common.inc&lt;br /&gt;  meta/packages/mozilla - skipped&lt;br /&gt;  meta/packages/mozilla/minimo_0.016+cvs.bb - skipped&lt;br /&gt;New merge ticket: 311d38ba-8fff-0310-9ca6-ca027cbcb966:/trunk:1691&lt;br /&gt;Committed revision 3151.&lt;br /&gt;Syncing //mirror/openmoko in /home1/jserv/openmoko-builder to 3151.&lt;br /&gt;U   meta/conf/distro/include/preferred-xorg-versions.inc&lt;br /&gt;U   meta/classes/cpan.bbclass&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;上述的動作，僅有svk pull，就輕易的把&lt;a href="http://pokylinux.org/"&gt;Poky&lt;/a&gt;與OpenMoko的SVN repository的更動「拉」下來，並自動與本地端 (openmoko-builder) 整合進去，不再有無謂的人為介入，當然，最重要的是開發者與功能需求，但良好的工具讓工作變得輕鬆，也得以專注於處理問題本身。&lt;br /&gt;&lt;br /&gt;未來如果有機會，或許也可以分享這方面的經驗，並導入既有的系統開發中。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2843583400173796258?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2843583400173796258/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2843583400173796258' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2843583400173796258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2843583400173796258'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/svk.html' title='SVK與嵌入式系統開發'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8115914171890079618</id><published>2007-05-10T11:27:00.000+08:00</published><updated>2007-05-10T12:36:06.901+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='cldc'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='opengl'/><title type='text'>OpenMoko的OpenGL/ES實做</title><content type='html'>兩年前我建立名為&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001015.html"&gt;PicoGL&lt;/a&gt;的專案計畫，目標是建立高可攜性、高彈性，且輕量級的OpenGL實做，日前展開&lt;a href="http://www.khronos.org/opengles/"&gt;OpenGL ES&lt;/a&gt;的初步支援，現在已可在&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;/GTA01上順暢的執行。週二晚上的活動「&lt;a href="http://tossug.blogspot.com/2007/05/58-tossug-sean-laforge-free-your-phone.html"&gt;【5/8 TOSSUG 心得分享】 Sean, LaForge: Free your phone! OpenMoko&lt;/a&gt;」，我展示這些進展給&lt;a href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt;與&lt;a href="http://gnumonks.org/%7Elaforge/weblog/"&gt;Harald Welte&lt;/a&gt;看過，結果&lt;a href="http://gnumonks.org/%7Elaforge/weblog/"&gt;Harald Welte&lt;/a&gt;還一眼就認出這是&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001015.html"&gt;PicoGL&lt;/a&gt;。以下是執行的畫面：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RkKY7lIeIWI/AAAAAAAAAFU/CagCjd-abDQ/s1600-h/picogl-gears.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/RkKY7lIeIWI/AAAAAAAAAFU/CagCjd-abDQ/s320/picogl-gears.png" alt="" id="BLOGGER_PHOTO_ID_5062777080465203554" border="0" /&gt;&lt;/a&gt;這是OpenGL知名的齒輪展示程式，原本由&lt;a href="http://www.mesa3d.org/"&gt;Mesa 3D Graphics&lt;/a&gt;的老大Brian Paul撰寫，現在移植到&lt;a href="http://www.khronos.org/opengles/"&gt;OpenGL ES&lt;/a&gt; API，另外一張：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RkKZelIeIXI/AAAAAAAAAFc/e-wQx_F7YNM/s1600-h/picogl-textobj.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/RkKZelIeIXI/AAAAAAAAAFc/e-wQx_F7YNM/s320/picogl-textobj.png" alt="" id="BLOGGER_PHOTO_ID_5062777681760625010" border="0" /&gt;&lt;/a&gt;展示OpenGL ES的Texture Objects (EGL_TEXTURE_2D)，等做了些performance tuning後，應該就可以準備新的釋出版本。此外，之前的文章「&lt;a href="http://orzlab.blogspot.com/2007/04/javaopenmoko.html"&gt;當Java遇到OpenMoko&lt;/a&gt;」提過我正在進行的&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;的&lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt;/CLDC移植，現在也有新進展，這是展示畫面：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RkKbb1IeIYI/AAAAAAAAAFk/xdz-KKI1awg/s1600-h/gfx-flash.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RkKbb1IeIYI/AAAAAAAAAFk/xdz-KKI1awg/s320/gfx-flash.png" alt="" id="BLOGGER_PHOTO_ID_5062779833539240322" border="0" /&gt;&lt;/a&gt;我的途徑是直接跳過X Window System，直接在Linux framebuffer上作影像輸出，現在Java ME/CLDC的效能已經可接受，但細部的處理如Graphics renderer則還有很大的進步空間，而我也正在與&lt;a href="http://midpath.thenesis.org/"&gt;MIDPath&lt;/a&gt;專案開發者合作。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8115914171890079618?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8115914171890079618/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8115914171890079618' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8115914171890079618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8115914171890079618'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/openmokoopengles.html' title='OpenMoko的OpenGL/ES實做'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XYo3WYqTnPk/RkKY7lIeIWI/AAAAAAAAAFU/CagCjd-abDQ/s72-c/picogl-gears.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6954995692991098551</id><published>2007-05-09T20:22:00.000+08:00</published><updated>2007-05-09T21:00:40.604+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='culture'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>TOSSUG心得分享：Free your phone! OpenMoko</title><content type='html'>&lt;a href="http://magicdesign.blogspot.com/"&gt;魔法設計師&lt;/a&gt;是位對&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;很有興趣的朋友，日前他耳聞TOSSUG的新聞「&lt;a href="http://tossug.blogspot.com/2007/05/58-tossug-sean-laforge-free-your-phone.html"&gt;【5/8 TOSSUG 心得分享】 Sean, LaForge: Free your phone! OpenMoko&lt;/a&gt;」，興致高昂的參與，隨後他則做了一份簡要的&lt;a href="http://magicdesign.blogspot.com/2007/05/free-your-phoneopenmoko.html"&gt;紀錄與感想&lt;/a&gt;，取得同意轉貼如下：&lt;br /&gt;&lt;hr /&gt;昨天，跟阿江、yap一起去土虱社群的&lt;a href="http://wiki.tossug.org/SignUp:2007-05"&gt;第五場心得分享&lt;/a&gt;聚會活動，這次是加開的分享場次，是openmoko計劃的兩員大將：&lt;a class="external" href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt;（任職於大眾電腦）、&lt;a class="external" href="http://gnumonks.org/%7Elaforge/weblog/"&gt;Harald Welte&lt;/a&gt;（是個hacker，也是&lt;a href="http://www.linux.org/"&gt;linux&lt;/a&gt; &lt;a href="http://www.kernel.org/"&gt;kernel&lt;/a&gt;的iptable維護人）分享，這麼難得的機會，當然要去的囉。&lt;br /&gt;&lt;br /&gt;Sean 的娓娓道來&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;計劃，透過開放系統與封閉系統的過去發展，當是開放的體制時，像internet，本來的設計，是國防科技的用途，但在開放以 後，一飛沖天，衍生出許許都多當初原始設計所無的應用，個人電腦更是不用說了，在1983年，IBM推出的Personal Computer開放架構，結束了之前個人電腦數個封閉系統各自稱王的時代。然而手機呢，從發明的那一天開始到現在，想要一支使用者有完整掌控力的手機根 本是緣木求魚，因為他們都是封閉式系統。&lt;br /&gt;&lt;br /&gt;想要有完整掌控力？別說笑了，不要說手機發展了那麼多年，到了近年，已經有手機的硬體能力已經逼 近Desktop，Desktop軟體理論上可以毫無困難的在手機上使用，但這幾年最主要的給使用者控制手機權力，不談基本的電話、簡訊、電話簿等機能， 其實沒什麼進步，ok給你變變桌布、變變鈴音的權力，再多一點，給了你java執行環境、或是讓你可以安裝一些原生程式，但是我的手機實際上能取得哪些軟 體？能讓我的手機有什麼新的機能？很遺憾的，幾乎是手機商不然就是系統商給你定義好的，這對發展手機軟體的人與廠商也很苦手，想發展一個軟體，且推到終端 消費者手上，只有電信系統商下載、手機隨機bundle，幾乎沒什麼獨立通路。更甚，近幾年也有很多廠家在特種的Linux核心上做出了號稱的Linux 手機，最近幾年Linux手機發光發亮，光是在中國大陸的智慧手機市場，Linux手機有30%的佔有率（symbian居首，微軟平台居末），只可惜雖 然系統核心是Linux，可是Linux上面堆出來的不同層次系統服務，一點也不open，而那個特種Linux核心呢？很抱歉，原廠只會給你那舊舊他們 覺得夠用的系統核心，新核心？想都別想，手機公司要維護那麼多的手機產品線，怎麼可能光顧你那麼一個「特定」需要呢？反正手機用久大家都會換的嘛，我做手 機公司的，只要顧著把手機賣出去就好啦，再來就是推出新手機勸你換更好的一台，幹嘛一台一台去幫你維護手機系統軟體的更新呢？&lt;br /&gt;&lt;br /&gt;然 而今天openmoko這個新平台完全打破了這個封閉性，openmoko手機從最底層一直到最表面的應用層，完全都是opensource，而且還不是 普通的opensource，而是對應PC桌面軟體的應用！openmoko軟體stack大致是linux kernel-glibc-X11-GTK+-matchbox桌面，簡而言之，PC的GTK系的應用程式，只要開發者重新拉拉介面調成適合手機的版面， 然後編譯成arm的cpu平台，就可以放到openmoko手機上跑，簡單說Desktop的Gnome系有什麼可以跑的程式，就可以很容易放到 openmoko上去（這個大家可能還沒什麼感覺，但要是說到即時通超級瑞士刀：gaim，msn/yahoo messenger/icq/msn/jabber/gtalk/irc 就因此可以在手機上....、用手機做簡報....），甚至更新系統核心等等，而怎麼安裝程式、更新程式呢？就是Debian、Ubuntu使用者耳熟能 詳的apt-get，使用者要怎麼用手機、要用什麼軟體、甚至說自己有能力寫寫命令稿語言，要做量身而定的運用時，完全是使用者的自由，對軟體開發者而 言，不用經過系統業者、手機廠商，也能有自己自由的發佈通路！這讓人很有想像空間，例如說自己把手機外接usb的智慧卡讀卡機，用手機就可以查帳、自動打 電話給指定名單公告特定事情、手機照完相後相片自動上傳到特定網路相簿、密文簡訊、也許還可以做自製電話答錄系統（按1聽我的個人介紹、按2直接跟我說） 呢，這讓人有許多想像空間，從硬體到軟體都可以hack。從某種角度而言，openmoko其實應該也算是一種Linux distribution，只不過是給手機這種迷你電腦用的。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;待續&lt;/span&gt;                       &lt;span class="post-author"&gt;                    張貼者： 魔法設計師                &lt;/span&gt; &lt;span class="post-timestamp"&gt;                    at                    &lt;a class="timestamp-link" href="http://magicdesign.blogspot.com/2007/05/free-your-phoneopenmoko.html" title="permanent link"&gt;上午 5:40&lt;/a&gt;                         &lt;/span&gt; &lt;span class="post-comment-link"&gt;                &lt;/span&gt; &lt;span class="post-icons"&gt;                             &lt;span class="item-action"&gt;           &lt;a href="http://www.blogger.com/email-post.g?blogID=17008358&amp;postID=7512868779246647385" title="電子郵件發佈"&gt;             &lt;/a&gt;&lt;a href="http://www.blogger.com/email-post.g?blogID=17008358&amp;amp;postID=7512868779246647385" title="電子郵件發佈"&gt;&lt;span class="email-post-icon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-6954995692991098551?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6954995692991098551/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=6954995692991098551' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6954995692991098551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6954995692991098551'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/tossugfree-your-phone-openmoko.html' title='TOSSUG心得分享：Free your phone! OpenMoko'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1739973616129803221</id><published>2007-05-07T21:41:00.000+08:00</published><updated>2007-05-09T21:46:48.723+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><title type='text'>DIET-PC的ARM移植</title><content type='html'>注意&lt;a href="http://diet-pc.sourceforge.net/"&gt;DIET-PC&lt;/a&gt;專案有一段時間了，當我還在老東家作Linux thin-client時就耳聞此專案，不過因為某種原因，一直沒有嘗試。以下是&lt;a href="http://diet-pc.sourceforge.net/"&gt;DIET-PC&lt;/a&gt;  網頁上提供的簡介：&lt;br /&gt;&lt;blockquote&gt;DIET-PC (DIskless Embedded Technology Personal Computer) is a Do-It-Yourself open source thin client software kitset, allowing IT professionals to construct generic- or special-purpose thin clients, or other network appliances, using commodity x86 PC or PowerPC Mac hardware. Experimental support is also available for ARM hardware.&lt;br /&gt;&lt;/blockquote&gt;雖然是單人計畫，但規模也日益增加，現在也提供ARM與PowerPC的移植。與其他Thin client或嵌入式計畫不同之處是，儘管「小而美」是重要訴求，但&lt;a href="http://diet-pc.sourceforge.net/"&gt;DIET-PC&lt;/a&gt;並沒有因此改用&lt;a href="http://www.uclibc.org/"&gt;uClibc&lt;/a&gt;或&lt;a href="http://www.fefe.de/dietlibc/"&gt;dietlibc&lt;/a&gt;，而是採用GNU C Library與Xorg，保持PC上的相容性。&lt;a href="http://diet-pc.sourceforge.net/"&gt;DIET-PC&lt;/a&gt;的&lt;a href="http://diet-pc.sourceforge.net/arm/"&gt;ARM移植版本&lt;/a&gt;所採用的參考硬體是&lt;a href="http://www.thinlinx.com/hardwarecurrent2.html"&gt;Hot-e HL200&lt;/a&gt;，這是ARMv4t/ARM920T的架構，也可以透過qemu去模擬執行。取得相關的檔案後，透過以下方式去啟動系統：&lt;pre&gt;qemu-system-arm \&lt;br /&gt;-M integratorcp926 \&lt;br /&gt;-kernel zImage.integrator \&lt;br /&gt;-initrd initrd.img \&lt;br /&gt;-append "ramdisk_size=20480 root=/dev/ram0 rw ip=dhcp" \&lt;br /&gt;-redir tcp:2222::22 -redir tcp:5910::5910&lt;br /&gt;&lt;/pre&gt;以qemu提供的user mode network stack轉向功能，將模擬環境的port 22 (SSH)對應到host的port 2222、port 5910則是VNC port。root帳號與VNC密碼都是"foobar"，系統啟動後，會執行Xvnc，於是可透過VNC client去操作&lt;a href="http://diet-pc.sourceforge.net/"&gt;DIET-PC&lt;/a&gt;，以下是執行畫面：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rj8ynlIeIVI/AAAAAAAAAFM/E6Ivq6vd59w/s1600-h/diet-pc-arm.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rj8ynlIeIVI/AAAAAAAAAFM/E6Ivq6vd59w/s320/diet-pc-arm.png" alt="" id="BLOGGER_PHOTO_ID_5061820161751654738" border="0" /&gt;&lt;/a&gt;視窗管理程式與桌面是我熟悉的&lt;a href="http://sourceforge.net/projects/qvwm/"&gt;Qvwm&lt;/a&gt;，執行中的應用程式是RDP (Windows Terminal Service)程式&lt;a href="http://www.rdesktop.org/"&gt;rdesktop&lt;/a&gt;，整體來說，這是個很精巧的系統。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1739973616129803221?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1739973616129803221/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1739973616129803221' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1739973616129803221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1739973616129803221'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/diet-pcarm.html' title='DIET-PC的ARM移植'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XYo3WYqTnPk/Rj8ynlIeIVI/AAAAAAAAAFM/E6Ivq6vd59w/s72-c/diet-pc-arm.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3194343737876842014</id><published>2007-05-06T22:06:00.000+08:00</published><updated>2007-05-07T23:17:39.185+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disassembly'/><category scheme='http://www.blogger.com/atom/ns#' term='s3c2410'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>反組譯 OpenMoko Steppingstone Code</title><content type='html'>在正式的內文之前，先來說個小故事。前一陣子在&lt;a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=2983"&gt;Atmel AT91RM9200&lt;/a&gt;這顆ARM9微處理器的實驗板上寫了一個簡單又迷你的kernel，後來想想認識的人裡面都沒人玩這顆，不免有點孤單。於是打算把它移植到比較多人玩並且有模擬器可用的平台，剛好jserv推薦&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;，OpenMoko 的第一支手機&lt;a href="http://wiki.openmoko.org/wiki/Neo1973"&gt;Neo1973&lt;/a&gt;/GTA01所使用的微處理器是&lt;a href="http://www.samsung.com/Products/Semiconductor/MobileSoC/ApplicationProcessor/ARM9Series/S3C2410/S3C2410.htm"&gt;Samsung S3C2410&lt;/a&gt;也是 ARM9，我想應該不難移植，還有jserv掛保證的模擬器可用，所以就決定來玩OpenMoko/S3C2410啦！&lt;br /&gt;&lt;br /&gt;既然我的出發點是要開發kernel，那麼對於處理器的啟動程序就不可不知。S3C2410啟動時，會從NAND flash的開頭複製4KB 內容到內部的SRAM，然後跳到SRAM開始執行，這4KB SRAM就稱為Steppingstone。這段小程式就是處理器最先執行的程式，但4KB空間當然放不下U-Boot，於是我們只把這段小程式當作踏腳石(steppingstone)，由它來幫忙載入完整的U-Boot bootloader。&lt;br /&gt;&lt;br /&gt;在好奇心作祟之下，想來看看這段steppingstone code寫些什麼(其實也沒什麼，真的很無聊吧 XD)。在 &lt;a href="http://buildhost.openmoko.org/tmp/deploy/images/"&gt;http://buildhost.openmoko.org/tmp/deploy/images/&lt;/a&gt; 抓了lowlevel_foo開頭檔名的".bin" 檔，問題是我只知道可以用arm-linux-objdump來反組譯 ELF 格式的程式，那麼binary檔怎麼反組譯呢？上網Google了一下沒有找到ARM反組譯器(其實是前幾個連結沒有就懶得繼續找了)，網友說IDA Pro這套軟體可以反組譯ARM程式，但我懶得安裝這麼龐大的東西。只好換個關鍵字繼續 Google 看看，結果找到了這個網頁：&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://islsm.org/wiki/doku.php?id=re:firmware_reverse_engeneering_methodology"&gt;firmware_reverse_engeneering_methodology&lt;/a&gt;&lt;/blockquote&gt;&lt;a href="http://islsm.org/wiki/doku.php?id=re:firmware_reverse_engeneering_methodology"&gt;&lt;/a&gt;原來可以把binary檔轉成ELF檔再進行反組譯，方法如下：&lt;br /&gt;&lt;br /&gt;先把binary轉成ELF格式：&lt;br /&gt;&lt;blockquote&gt;$ arm-linux-objcopy -I binary -O elf32-littlearm foo.bin foo.elf&lt;/blockquote&gt;再進行反組譯：&lt;br /&gt;&lt;blockquote&gt;$ arm-linux-objdump -marm9 -D foo.elf &gt; foo.asm&lt;/blockquote&gt;輸出結果foo.asm是個純文字檔，內容就是反組譯出來的組合語言。簡單吧？不需要安裝其它軟體，只要利用toolchain就能辦到。學會這招後，手邊如果有實驗板沒開放bootloader原始碼，或者想hack PDA bootloader，都不是問題啦(當然得有耐心去trace組合語言程式碼)！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-3194343737876842014?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/3194343737876842014/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=3194343737876842014' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3194343737876842014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3194343737876842014'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/openmoko-steppingstone-code.html' title='反組譯 OpenMoko Steppingstone Code'/><author><name>hardwalker</name><uri>http://www.blogger.com/profile/03118946956782442797</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8831552657273127481</id><published>2007-05-06T19:50:00.000+08:00</published><updated>2007-05-06T21:37:07.883+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='okl4'/><category scheme='http://www.blogger.com/atom/ns#' term='l4'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>OKL4在gumstix的測試結果</title><content type='html'>之前的文章「&lt;a href="http://orzlab.blogspot.com/2007/04/open-kernel-labsl4.html"&gt;Open Kernel Labs公司成立，強化L4與虛擬技術應用&lt;/a&gt;」提過新成立公司的 "&lt;a href="http://www.ok-labs.com/"&gt;Open Kernel Labs&lt;/a&gt;" 提供一系列以L4 microkernel為基礎的embedded與virtualization技術，而即使在邁入商業應用的今日，仍以BSD License (3-clauses)釋出成果，態度相當可取。"&lt;a href="http://www.ok-labs.com/"&gt;Open Kernel Labs&lt;/a&gt;" 提供一個針對開發者的Portal site：&lt;a href="http://portal.ok-labs.com/"&gt;portal.ok-labs.com&lt;/a&gt;，目前開放下載的版本為okl4 release-1.4.1.1，支援IA32與ARM (arm926ejs, xscale, arm1136js, arm1176js)等架構，若以平台來看的話，通用IA32架構，也就是PC99，以及&lt;a href="http://www.gumstix.com/"&gt;gumstix&lt;/a&gt; (based on PXA255)兩項有支援。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gumstix.com/"&gt;gumstix&lt;/a&gt;的應用很廣，許多機器人與控制系統都可見其蹤跡，同時也是採用我比較熟悉的Xscale架構，去年也開始&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001841.html"&gt;相關的qemu模擬工作&lt;/a&gt;，自然引起我的高度關注。okl4 release-1.4.1.1相較於&lt;a href="http://www.nicta.com.au/"&gt;NICTA&lt;/a&gt;的版本，實在簡單許多。首先，得準備好工具，python2.4、&lt;a href="http://www.skyeye.org/"&gt;Skyeye&lt;/a&gt; (用以模擬與偵錯&lt;a href="http://www.gumstix.com/"&gt;gumstix&lt;/a&gt;)，以及ARM toolchain，剛剛已在台大做了mirror如下：&lt;ul&gt;&lt;li&gt;&lt;a href="http://mdk.linux.org.tw/%7Ejserv/okl4/arm-linux.tar.bz2"&gt;arm-linux.tar.bz2&lt;/a&gt; (toolchain)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mdk.linux.org.tw/%7Ejserv/okl4/okl4_release_1.4.1.1.tar.bz2"&gt;okl4_release_1.4.1.1.tar.bz2&lt;/a&gt; (OKL4 release)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/Rj3O0VIeITI/AAAAAAAAAE8/TNfG5WhJwrA/s1600-h/esf.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/Rj3O0VIeITI/AAAAAAAAAE8/TNfG5WhJwrA/s320/esf.png" alt="" id="BLOGGER_PHOTO_ID_5061428954655498546" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;在進行之前，我們來複習&lt;a href="http://www.nicta.com.au/"&gt;NICTA&lt;/a&gt;規範的L4 Microkernel / Embedded &amp; Virtualization的架構，&lt;a href="http://www.ertos.nicta.com.au/software/kenge/iguana-project/latest/"&gt;Iguana&lt;/a&gt;是個運作於L4 microkernel的server，提供作業系統所需的系統服務，像是記憶體管理、權限控管，與驅動程式等等；&lt;a href="http://www.ertos.nicta.com.au/software/kenge/"&gt;Kenge&lt;/a&gt;概念上類似&lt;a href="http://www.inf.tu-dresden.de/index.php?node_id=1586"&gt;L4Env&lt;/a&gt;，也是提供虛擬執行環境所需的基礎建設；&lt;a href="http://www.ertos.nicta.com.au/software/kenge/wombat/latest/"&gt;Wombat&lt;/a&gt;就相當有意思，也是本架構的賣點，&lt;a href="http://www.ertos.nicta.com.au/software/kenge/wombat/latest/"&gt;Wombat&lt;/a&gt;是個修改過的Linux kernel (目前版本 2.6.10)，運作於L4 Microkernel與&lt;a href="http://www.ertos.nicta.com.au/software/kenge/iguana-project/latest/"&gt;Iguana&lt;/a&gt;之上，如此一來，既可透過&lt;a href="http://www.ertos.nicta.com.au/software/kenge/wombat/latest/"&gt;Wombat&lt;/a&gt;來達成原本Linux應用程式的相容性，又可在L4 Microkernel達到Realtime最佳的效能。OKL4 release提供以上元件的實做，附加具體而微的Linux系統，基本上，只要設定toolchain與&lt;a href="http://www.skyeye.org/"&gt;Skyeye&lt;/a&gt;的路徑後，直接執行以下指令即可建構：&lt;br /&gt;&lt;blockquote&gt;./tools/build.py machine=gumstix project=iguana wombat=True simulate&lt;/blockquote&gt;需注意的是，預設的安裝script忽略了libgcc_s.so.1，所以記得自ARM toolchain複製一份到 build/linux/install/lib/ 目錄。&lt;br /&gt;&lt;br /&gt;透過模擬環境的執行畫面如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/Rj3VrVIeIUI/AAAAAAAAAFE/gNt0d2YXgOk/s1600-h/okl4-sim-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/Rj3VrVIeIUI/AAAAAAAAAFE/gNt0d2YXgOk/s320/okl4-sim-1.png" alt="" id="BLOGGER_PHOTO_ID_5061436496618070338" border="0" /&gt;&lt;/a&gt;我在圖中以紅色箭頭標注了此virtualization環境的變化。首先是L4 Microkernel，再來是&lt;a href="http://www.ertos.nicta.com.au/software/kenge/iguana-project/latest/"&gt;Iguana&lt;/a&gt;與&lt;a href="http://www.ertos.nicta.com.au/software/kenge/"&gt;Kenge&lt;/a&gt;，最後就是&lt;a href="http://www.ertos.nicta.com.au/software/kenge/wombat/latest/"&gt;Wombat&lt;/a&gt;，最後會跑完Linux booting flow，切入Linux user-space。對了，剛剛也試著用qemu去執行，但似乎會卡在igms0的處理。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8831552657273127481?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8831552657273127481/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8831552657273127481' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8831552657273127481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8831552657273127481'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/okl4gumstix.html' title='OKL4在gumstix的測試結果'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XYo3WYqTnPk/Rj3O0VIeITI/AAAAAAAAAE8/TNfG5WhJwrA/s72-c/esf.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1240625928677534064</id><published>2007-05-02T01:18:00.000+08:00</published><updated>2007-05-04T01:15:39.402+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Xorz/Embedded作為Phone UI</title><content type='html'>之前在「&lt;a href="http://orzlab.blogspot.com/2007/03/embedded.html"&gt;動態組字技術於Embedded領域&lt;/a&gt;」提過我們最近實做的動態組字技術基礎建設，與其適用的場合和思維方向，其中也提到Xorz/Embedded (&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001276.html"&gt;展示1&lt;/a&gt;/&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001823.html"&gt;展示2&lt;/a&gt;)。整合動態組字技術，對於原本即以向量繪圖為核心架構的Xorz/Embedded來說，是今年的規劃，可作為低階裝置的UI (User Interface) 或者是進行能源管理處理時的圖形操作，甚至可以植入kernel space或boot loader。&lt;br /&gt;&lt;br /&gt;最近又對Xorz/Embedded做了refactoring與改進，現在backend有&lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt;、&lt;a href="http://www.x.org/"&gt;X11&lt;/a&gt;，與&lt;a href="http://en.wikipedia.org/wiki/Linux_framebuffer"&gt;Linux framebuffer&lt;/a&gt;。在週二晚上與&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;的&lt;a href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt; &amp; &lt;a href="http://gnumonks.org/%7Elaforge/weblog/"&gt;Harald Welte&lt;/a&gt;、&lt;a href="http://www.jollen.org/blog/"&gt;Jollen&lt;/a&gt;、&lt;a href="http://people.debian.org.tw/%7Echihchun/"&gt;Chihchun&lt;/a&gt;等人聚會時，展示了最新的成果，以下是運作於Neo1973 GTA01的畫面：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RjeBk1IeISI/AAAAAAAAAE0/9jfvOcZl2vw/s1600-h/xorz-embeded-openmoko.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RjeBk1IeISI/AAAAAAAAAE0/9jfvOcZl2vw/s320/xorz-embeded-openmoko.png" alt="" id="BLOGGER_PHOTO_ID_5059655176111923490" border="0" /&gt;&lt;/a&gt;關鍵技術有：向量繪圖、快速座標轉換、半透明處理、動態字型描繪、輕量級視窗管理等，近期內會開放實做，允許創造更多應用。同時也與&lt;a href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt;談及Linux-based feature phone的可能性，就技術上本身來說是可行的，而且他也給予正面回應。我想，如果這些基礎建設都穩固後，自身對&lt;a href="http://www.trolltech.com/products/qtopia/greenphone"&gt;GreenPhone&lt;/a&gt;、 &lt;a href="http://gpephone.linuxtogo.org/"&gt;gpephon&lt;/a&gt;與&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;的設計有更好的掌握後，或許我可在&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;的基礎上建構以Xorz/Embedded為核心的Phone (UI) stack，或許可稱為"OpenMoko-Lite"。&lt;br /&gt;&lt;br /&gt;憶及之前閱讀的報導「&lt;a href="http://www.linuxdevices.com/news/NS7995159147.html"&gt;Linux well-positioned in feature phones, Trolltech founders say&lt;/a&gt;」，雖然已過一年，但其中有些觀點仍是值得思考的。我們不僅得思考BOM (Bill-Of-Materials) cost，&lt;a href="http://www.trolltech.com/"&gt;Trolltech&lt;/a&gt;的兩位創辦人Eirek Chambe-Eng與Havaard Nord&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;&lt;span style="font-family:georgia;"&gt;也提醒我們：&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;"The line between smartphones and feature phones will be totally blurred." &lt;/blockquote&gt;訪談也談及single-chip、virtualization，與系統複雜度等議題，所以在設計的同時，也得有清楚的思維與定位。&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1240625928677534064?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1240625928677534064/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1240625928677534064' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1240625928677534064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1240625928677534064'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/xorzembeddedphone-ui.html' title='Xorz/Embedded作為Phone UI'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XYo3WYqTnPk/RjeBk1IeISI/AAAAAAAAAE0/9jfvOcZl2vw/s72-c/xorz-embeded-openmoko.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2251184153492745580</id><published>2007-05-02T00:52:00.000+08:00</published><updated>2007-05-04T01:15:57.459+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><title type='text'>iThome電子報對於黑客鬆的報導</title><content type='html'>之前提過「&lt;a href="http://orzlab.blogspot.com/2007/04/orzlab_20.html"&gt;OrzLab::黑客鬆紀錄&lt;/a&gt;」，以輕鬆的口吻介紹了我們在「&lt;a href="http://hackathon.blogspot.com/"&gt;台灣黑客鬆&lt;/a&gt;」進行的Hacking，本週則收到&lt;a href="http://www.ithome.com.tw/"&gt;iThome&lt;/a&gt;所寄來的刊物，裡面有對此活動作詳盡的報導，當然也包含OrzLab。&lt;a href="http://hackathon.blogspot.com/"&gt;台灣黑客鬆&lt;/a&gt;有篇紀錄「&lt;a href="http://hackathon.blogspot.com/2007/05/ithome-292.html"&gt;iThome 電腦報 292 期的報導&lt;/a&gt;」可作為參考，取得同意轉載如下：&lt;br /&gt;&lt;hr /&gt;       謝謝&lt;a href="http://www.ithome.com.tw/"&gt;iThome&lt;/a&gt;及其所屬記者王宏仁先生。有趣的是，原先我們並未邀請任何媒體。:)&lt;br /&gt;&lt;br /&gt;另外，「首次」這樣的帽子有些沉重，頂多只能說是小小地在「跨社群」（也未必啦）上拋磚引玉罷了。最重要的是謝謝所有與會者的付出。m(_ _)m&lt;br /&gt;&lt;div class="post-body"&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/b6s/479636492/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/202/479636492_ce49de5d4c.jpg" alt="Taiwan Hackathon - iThome News, No. 292" height="500" width="317" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;跑新聞出雜誌總是很辛苦的，還請有興趣看內文的人花點小錢到書店買一本囉！&lt;/p&gt;             &lt;/div&gt;                 &lt;span class="post-author"&gt;                    張貼者： Mike Tian-Jian Jiang                &lt;/span&gt;        &lt;span class="post-timestamp"&gt;                    at                    &lt;a class="timestamp-link" href="http://hackathon.blogspot.com/2007/05/ithome-292.html" title="permanent link"&gt;下午 5:03&lt;/a&gt; &lt;/span&gt;&lt;span class="post-comment-link"&gt;&lt;/span&gt;&lt;span class="post-backlinks post-comment-link"&gt;&lt;/span&gt;&lt;span class="post-icons"&gt;&lt;span class="item-action"&gt;&lt;a href="http://www2.blogger.com/email-post.g?blogID=4874101596655274589&amp;amp;postID=5694572175146622838" title="電子郵件發佈"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;週二下午跟&lt;a href="http://www.ithome.com.tw/"&gt;iThome&lt;/a&gt;的編輯小談片刻，看來他們的報導很用心，雖然版面不大，但基本意思都點到了，或許待日後OrzLab有更多成果時，也來分享一些經驗與想法。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2251184153492745580?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2251184153492745580/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2251184153492745580' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2251184153492745580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2251184153492745580'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/05/ithome.html' title='iThome電子報對於黑客鬆的報導'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/202/479636492_ce49de5d4c_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4426684787297606582</id><published>2007-04-30T16:25:00.000+08:00</published><updated>2007-05-04T01:16:17.183+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='cacao'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>當Java遇到OpenMoko</title><content type='html'>對許多人來說，&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;真是個令人驚奇的平台，這不僅是個開放系統，而且也引入許多原生於桌面環境的技術，甫成立的&lt;a href="http://www.gnome.org/press/releases/gmae.html"&gt;GMAE&lt;/a&gt; (GNOME Mobile &amp; Embedded Initiative) 就是個極佳的切入點。作為一個Free Java (VM) hacker，最大的樂趣就是廣泛讓Java技術散佈到世界上不同的角落，當然，也包含了openmoko，考量到&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;的行為模式比較類似桌面系統，而非傳統的&lt;a href="http://java.sun.com/products/cdc/"&gt;CDC&lt;/a&gt;/&lt;a href="http://java.sun.com/products/cldc/"&gt;CLDC&lt;/a&gt;執行環境，所以我選擇了&lt;a href="http://www.kaffe.org/"&gt;Kaffe&lt;/a&gt;與&lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt;這兩個以GNU GPL發佈的Java Virtual Machine實做，這兩者都以&lt;a href="http://www.gnu.org/software/classpath/"&gt;GNU Classpath&lt;/a&gt;作為Class Library實做，所以有不錯的相容度。&lt;br /&gt;&lt;br /&gt;經過一番努力，&lt;a href="http://www.kaffe.org/"&gt;Kaffe&lt;/a&gt;與&lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt;這兩個Free JVM都可在&lt;a href="http://www.openmoko.org/"&gt;openmoko&lt;/a&gt;上運作，而我則對後者予以很大的關注，因為其ARM jit engine日前已經以GPL釋出，而且&lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt;這兩年內的效能提昇幅度相當不錯。我在&lt;a href="http://planet.classpath.org/"&gt;Planet Classpath&lt;/a&gt;寫了一篇紀錄「&lt;a href="http://www.advogato.org/person/jserv/diary.html?start=6"&gt;Cacao VM running on openmoko&lt;/a&gt;」，節錄如下：&lt;br /&gt;&lt;hr /&gt;Then, back to Free Java world, I met several hackers around the world in #kaffe, #classpath, and #cacao IRC channel.  Since I had portd &lt;a href="http://www.kaffe.org/"&gt;Kaffe&lt;/a&gt; to Xscale-based mobile phones, I decide to take &lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt; for a try. After some slight modifications (with the help from twisti), &lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt; works on &lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt; GTA01, and here is the output for typical "Hello World" application in Java:&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;root@fic-gta01:/var/tmp/cacao$ ls *.class&lt;br /&gt;fp.class     hello.class&lt;br /&gt;root@fic-gta01:/var/tmp/cacao$ cd bin&lt;br /&gt;root@fic-gta01:/var/tmp/cacao/bin$ ./cacao -cp .. hello&lt;br /&gt;Hello world&lt;br /&gt;root@fic-gta01:/var/tmp/cacao/bin$ uname -a&lt;br /&gt;Linux fic-gta01 2.6.20.7-moko8 #1 PREEMPT Sat Apr 14&lt;br /&gt;07:40:05 UTC 2007 armv4tl unknown&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;It is based on &lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt; SVN (along with GPL'd ARM jit engine) + &lt;a href="http://www.gnu.org/software/classpath/"&gt;GNU Classpath&lt;/a&gt; version 0.95.  However, I still manage to let gtk-peer work on &lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt; 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 (&lt;a href="http://www.gnu.org/software/classpath/"&gt;GNU Classpath&lt;/a&gt;, &lt;a href="http://www.cacaojvm.org/"&gt;Cacao&lt;/a&gt;,&lt;a href="http://www.kaffe.org/"&gt; Kaffe&lt;/a&gt;, etc.), &lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;, and Embedded Linux.&lt;br /&gt;&lt;br /&gt;Also, I met guillaum1 in #cacao, who is the developer of &lt;a href="http://midpath.thenesis.org/"&gt;MIDPath&lt;/a&gt;, and he suggested me to try the combination of cacao-cldc (cacao without GNU Classpath) + &lt;a href="http://midpath.thenesis.org/"&gt;MIDPath&lt;/a&gt;.  The design of &lt;a href="http://midpath.thenesis.org/"&gt;MIDPath&lt;/a&gt; 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.&lt;br /&gt;&lt;hr /&gt;很快收到許多回應：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://gnu.wildebeest.org/diary" title="Mark J. Wielaard"&gt; Mark Wielaard&lt;/a&gt;的blog「&lt;a href="http://gnu.wildebeest.org/diary/2007/04/24/openmoko-free-java-support-with-gnu-classpath-cacao/"&gt;OpenMoko free java support with GNU Classpath &amp;amp; Cacao&lt;/a&gt;」&lt;/li&gt;&lt;li&gt;&lt;a href="http://robilad.livejournal.com/" title="burek for breakfast"&gt; Dalibor Topic&lt;/a&gt;的blog「&lt;a href="http://robilad.livejournal.com/11492.html"&gt;All in a day's work&lt;/a&gt;」&lt;/li&gt;&lt;li&gt;openmoko-app討論群組「&lt;a href="http://lists.openmoko.org/pipermail/openmoko-devel/2007-April/thread.html#865"&gt;Cacao jvm on openmoko&lt;/a&gt;&lt;a name="865"&gt;」&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;當然，這只是個出發點，可說是銜接桌面技術到&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;這類裝置的概念驗證，我仍在評估Sun的&lt;a href="http://java.sun.com/javame/"&gt;PhoneME&lt;/a&gt; (逐漸以GNU GPL釋出) 的整合性，同時也希望AWT/Swing仍可「有限度」使用。&lt;a name="865"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4426684787297606582?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4426684787297606582/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4426684787297606582' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4426684787297606582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4426684787297606582'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/javaopenmoko.html' title='當Java遇到OpenMoko'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6675576656985439235</id><published>2007-04-30T16:02:00.000+08:00</published><updated>2007-05-04T01:16:54.846+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Have fun with OpenMoko/Neo1973</title><content type='html'>&lt;a href="http://people.debian.org.tw/%7Echihchun/"&gt;chihchun&lt;/a&gt;今天早上寫了一篇關於OpenMoko/Neo1973的blog文章「&lt;a href="http://people.debian.org.tw/%7Echihchun/2007/04/30/have-fun-with-openmokoneo1973/" rel="bookmark"&gt;Have fun with OpenMoko/Neo1973&lt;/a&gt;」，取得同意轉載如下：&lt;br /&gt;&lt;hr /&gt;自從我寫了「&lt;a href="http://people.debian.org.tw/%7Echihchun/2006/03/04/i-want-a-personalized-phone/"&gt;I Want A Personalized Phone&lt;/a&gt;」後，就持續注意&lt;a href="http://www.opencellphone.org/"&gt;TuxPhone&lt;/a&gt;、&lt;a href="http://www.trolltech.com/products/qtopia/greenphone"&gt;GreenPhone&lt;/a&gt;、&lt;a href="http://www.openezx.org/"&gt;OpenEZX&lt;/a&gt;、 &lt;a href="http://gpephone.linuxtogo.org/"&gt;gpephon&lt;/a&gt;的消息。當然還包含了&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;，OpenMoko是真的令人興奮的計畫，因為除了此計畫是真實使用自由軟體的開發平台，而非採用多授權或非商業授權的平台產品外：也完全採用有GPL驅動程式的硬體元件，如「&lt;a href="http://wiki.openmoko.org/wiki/WiFi_support_in_OpenMoko"&gt;挑選 WiFi 模組&lt;/a&gt;」。而且OpenMoko與&lt;a href="http://www.fic.com.tw/"&gt;FIC&lt;/a&gt;的合作模式使量產上市變成可能，你不需要逐一的「&lt;a href="http://www.opencellphone.org/index.php?title=Build_Your_Own_Mobile_Phone"&gt;自行 DIY&lt;/a&gt;」，大幅降低自訂軟體的門檻。&lt;br /&gt;&lt;br /&gt;話說&lt;a href="http://blog.linux.org.tw/%7Ejserv/"&gt;Jserv&lt;/a&gt;是周遭朋友第一個拿到&lt;a href="http://wiki.openmoko.org/wiki/Neo1973"&gt;Neo1973&lt;/a&gt;的人，當然要跟他凹來把玩一番，於是就在4/14 &lt;a href="http://osdc.tw/"&gt;OSDC&lt;/a&gt;結束後的晚上，把Jserv拉到&lt;a href="http://wiki.tossug.org/MixCoffee&amp;Tea"&gt;Mix coffee &amp;amp; tee&lt;/a&gt;進行了一場小型的 &lt;abbr title="Birds Of a Feather"&gt;BoF&lt;/abbr&gt;。&lt;br /&gt;&lt;br /&gt;目前FIC/Neo1973的硬體功能是：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;120.7 x 62 x 18.5 (mm)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2.8" VGA (480×640) TFT Screen&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Samsung s3c2410 SoC @ 266 MHz&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Global Locate AGPS chip&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ti GPRS (2.5G not EDGE)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unpowered USB 1.1&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Touchscreen&lt;br /&gt;&lt;/li&gt;&lt;li&gt;micro-sd slot&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2.5mm audio jack&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2 additional buttons&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1200 mAh battery (charged over USB)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;128 MB SDRAM&lt;br /&gt;&lt;/li&gt;&lt;li&gt;64 MB NAND Flash&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bluetooth (2.0)&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;a href="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/04/openmoko-running.jpg" title="Neo1973 running OpenMoko" rel="lightbox"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/04/openmoko-running.thumbnail.jpg" alt="Neo1973 running OpenMoko" /&gt;&lt;/a&gt;&lt;/p&gt;OpenMoko的&lt;a href="http://wiki.openmoko.org/wiki/Main_Page"&gt;wiki&lt;/a&gt;網站上有著驚人豐富的資訊，甚至連如何&lt;a href="http://wiki.openmoko.org/wiki/Disassembling_Neo1973"&gt;拆解機器&lt;/a&gt;的步驟都詳實記載，依照站上的資訊逐一進行，很快的就一步一步的把機器拆開，順道也reflash一下最新版的kernel與rootfs，感興趣的話請參考我倒出來的一些資訊： &lt;a href="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/04/ipkg.txt" title="ipkg list of neo1973"&gt;ipkg list&lt;/a&gt;,&lt;a href="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/04/dmesg.txt" title="dmesg of neo1973"&gt;dmesg&lt;/a&gt;,&lt;a href="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/04/cpuinfo.txt" title="cpuinfo of neo1973"&gt;cpuinfo&lt;/a&gt;。但顯然硬體與應用軟體尚有許多項目待完成，急需開發者的參與。&lt;br /&gt;&lt;p align="center"&gt; &lt;a href="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/04/openmoko-unboxed.jpg" title="Neo1973 unboxed" rel="lightbox"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/04/openmoko-unboxed.thumbnail.jpg" alt="Neo1973 unboxed" /&gt;&lt;/a&gt;&lt;/p&gt;有意思的是 Gnome 基金會在幾天前於&lt;a href="http://www.celinux.org/elc2007/"&gt;Embedded Linux Conference&lt;/a&gt;上&lt;a href="http://www.gnome.org/press/releases/gmae.html"&gt;宣佈 &lt;abbr title="GNOME Mobile &amp;amp;amp; Embedded Initiative"&gt;GMAE&lt;/abbr&gt; 計畫&lt;/a&gt; (&lt;a href="http://www.gnome.org/mobile/"&gt;Gnome Mobile &amp; Embedded Initiative&lt;/a&gt;)，引起產業與社群的&lt;a href="http://www.gnome.org/press/releases/gmae-quotesheet.html"&gt;極大迴響&lt;/a&gt;。忠實希望與期待可以在此平台上，建立一個共用的開放嵌入式系統應用軟體架構。&lt;br /&gt;&lt;p style="text-align: center;" align="left"&gt;&lt;img src="http://people.debian.org.tw/%7Echihchun/wp-content/uploads/2007/04/jserv.jpg" alt="jserv with a nameless girl" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.gnome.org/press/releases/gmae.html"&gt; &lt;/a&gt;&lt;/p&gt;在此感謝Jserv借玩手機 (照片男方是Jserv，女方為不知名，但Jserv很願意主動搭訕認識的女生。&lt;strike&gt;其實我也很願意認識，啊！只要是女生我都願意認識&lt;/strike&gt;)。週末很榮幸的與&lt;a href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt;、 &lt;a href="http://gnumonks.org/%7Elaforge/weblog/"&gt;Harald Welte&lt;/a&gt;、Jserv、&lt;a href="http://www.jollen.org/blog/"&gt;Jollen&lt;/a&gt;與大眾電腦的幾位長輩/前輩們聚餐，收穫甚多。Jollen在自己的的 &lt;a href="http://www.jollen.org/blog/"&gt;blog&lt;/a&gt;上撰寫了相當深入的OpenMoko報導與嵌入式系統的開發知識，值得一讀。現在只希望我能夠拿到下一波&lt;a href="http://lists.openmoko.org/pipermail/announce/2007-April/000012.html"&gt;生產&lt;/a&gt;的手機，這樣才有機會 happy hacking。&lt;br /&gt;&lt;br /&gt;BTW，我正在安排Sean與Harald於&lt;a href="http://wiki.tossug.org/"&gt;Tossug&lt;/a&gt;聚會上提供演講，Sean Moss-Pultz是OpenMoko的產品經理，而Harald Welte是OpenMoko首席軟體架構師，也是Netfilter/iptables的開發者，同時也是&lt;a href="http://gpl-violations.org/"&gt;gpl-violations.org&lt;/a&gt;的創辦人。如對此聚會感興趣，請告知我吧。:-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-6675576656985439235?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6675576656985439235/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=6675576656985439235' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6675576656985439235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6675576656985439235'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/have-fun-with-openmokoneo1973.html' title='Have fun with OpenMoko/Neo1973'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8663818465766062719</id><published>2007-04-20T02:56:00.000+08:00</published><updated>2007-05-04T01:17:17.491+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mascot'/><category scheme='http://www.blogger.com/atom/ns#' term='orzlab'/><title type='text'>OrzLab的吉祥物</title><content type='html'>OrzLab很多資源都仰賴於社群，不僅軟硬體建設，連同美工亦然。之前已有眾多「&lt;a href="http://orzlab.blogspot.com/2007/04/orzlab_07.html"&gt;OrzLab的圖示&lt;/a&gt;」，作為應用程式的logo或開機的圖片使用，算是相當充分了，但缺少吉祥物。在「&lt;a href="http://orzlab.blogspot.com/2007/04/embedded-linux-mozilla.html" name="5956503597426844073"&gt;&lt;/a&gt;&lt;a href="http://orzlab.blogspot.com/2007/04/embedded-linux-mozilla.html"&gt;構想：Embedded Linux + Mozilla&lt;/a&gt;」一文提到與&lt;a href="http://www.moztw.org/"&gt;Mozilla Taiwan&lt;/a&gt;的朋友互動，會談當日，&lt;a href="http://kkfox.in2000.us/"&gt;KKFox&lt;/a&gt;作者&lt;a href="http://www.chweng.idv.tw/"&gt;C.H.Weng&lt;/a&gt;的女友LitGrass就在聚會討論中，悄悄繪製出一系列可愛的造型，爾後lzy將手繪版本透過&lt;a href="http://www.inkscape.org/"&gt;inkscape&lt;/a&gt;轉換為向量圖，現在我們的吉祥物大致如下圖：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rie-BZEr_aI/AAAAAAAAAEk/XHmdkzTKZps/s1600-h/OrzLab-mascot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rie-BZEr_aI/AAAAAAAAAEk/XHmdkzTKZps/s320/OrzLab-mascot.png" alt="" id="BLOGGER_PHOTO_ID_5055218037866364322" border="0" /&gt;&lt;/a&gt;維基百科的&lt;a href="http://zh.wikipedia.org/wiki/Orz"&gt;Orz條目&lt;/a&gt;給予許多精闢的說明，那麼，姑且稱這個由Grass貢獻的這個可愛的吉祥物為「囧囧」(讀音：「炯炯」)。雖然OrzLab是探討軟硬體整合與系統設計的實驗室，但真正的標的環境是生活化的種種資訊裝置，如PDA、手機、Home Gateway、... 等，上圖可看出"Orz"走出電腦，試圖朝向更多元的領域發展，很不錯 :-)&lt;br /&gt;&lt;br /&gt;參考資訊：ckhung - 「&lt;a href="http://people.ofset.org/%7Eckhung/b/svg/inkscape.php"&gt;向量繪圖軟體 inkscape 簡介&lt;/a&gt;」&lt;h3 class="post-title"&gt;                      &lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8663818465766062719?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8663818465766062719/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8663818465766062719' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8663818465766062719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8663818465766062719'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/orzlab_4287.html' title='OrzLab的吉祥物'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XYo3WYqTnPk/Rie-BZEr_aI/AAAAAAAAAEk/XHmdkzTKZps/s72-c/OrzLab-mascot.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6981997794293508953</id><published>2007-04-20T00:19:00.000+08:00</published><updated>2007-05-04T01:17:44.202+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='fon'/><title type='text'>OrzLab::黑客鬆紀錄</title><content type='html'>以下轉錄自&lt;a href="http://cclien.net/"&gt;cclien&lt;/a&gt;的紀錄「&lt;a href="http://cclien.net/archives/000308.html"&gt;台北行: 台灣黑客鬆&lt;/a&gt;」，以輕鬆的口吻介紹OrzLab成員4/12-4/13兩日於&lt;a href="http://hackathon.blogspot.com/"&gt;黑客鬆&lt;/a&gt;的參與活動內容：&lt;br /&gt;&lt;p&gt;&lt;b&gt;亂入&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在 &lt;a href="http://hackathon.blogspot.com/"&gt;hackathon&lt;/a&gt; 舉辦的前兩天，意外知道 &lt;a href="http://jserv.sayya.org/"&gt;Jserv&lt;/a&gt; 將在這次 hackathon 活動中以 La Fonera 當作 ajax/embedded 的平台。由於&lt;a href="http://cclien.net/archives/000299.html"&gt;之前拆 La Fonera&lt;/a&gt; 拆到有興趣，於是狗膽請 Jserv 邀請我一起參加 Hackathon。就在這樣的臨時決定下，趕緊把行李打包上台北。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;迷路&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;搭上十一點從台中出發往台北的巴士，如預期的一點整到達台北市。坐上捷運，到了會場附近，肚子咕嚕咕嚕的叫，只好先隨便找了一間 Mos 坐進去，填飽肚子先。剛好我忘記把地圖存檔，靠著漢堡店附近的好鄰居無線網路上了網查地圖，吃飽後直接往南海藝廊移動。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;南海藝廊&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;到了活動網頁所示的地址-&lt;a href="http://r6.ntue.edu.tw/"&gt;南海藝廊&lt;/a&gt;，是一間看起來像古早平房的建築物，一度還以為是走錯地方。後來看到二樓陽台上有穿著白色短T的阿宅(?!)，才確定我沒走錯路阿。到了會場，已經有很多長輩到了，擺滿貼滿貼紙 laptop 的桌子充滿了 hacker 的味道。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;認親&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;因為不太熟悉與會的長輩，所以在放下行李之後，就在活動地點亂晃。晃來晃去，終於等到了四元大大 (雖然也是素未謀面，但至少有在網路上聊過天)，聽完 mikimoto 爆料 talk 之後, ajax/embedded team 的成員: Jserv 大牛、Mat 紛紛到齊。&lt;/p&gt;&lt;p&gt;&lt;a title="orzlabv 的大大們" href="http://www.flickr.com/photos/cclien/461748106/"&gt;&lt;img alt="Orzlab" src="http://farm1.static.flickr.com/215/461748106_6451d5e3aa_m.jpg" height="160" width="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;開工&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在成員到期之後，變馬上開始動工，先把 La Fonera 大卸八塊準備連接 serial console，結果馬上中招。我帶了一條傳輸線，但是只有 RS232 接頭，大家的 laptop 都太新了，沒有人的機器上面有 rs232 的接頭，後來 fourdollar 大大終於生了一條 USB to RS232 出來。打開了 sshd 之後，便把 Fonera 接到一台 hub 上，此 Lan 就當作 hacking Fonera 專用的 Lan 啦。&lt;/p&gt;&lt;p&gt;&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/cclien/461746635/"&gt;&lt;img alt="Orzlab 的桌子" src="http://farm1.static.flickr.com/208/461746635_fff43f6e73_m.jpg" height="160" width="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;又中招&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Jserv 事前準備了一份 toolchain，編了一隻小程式之後馬上丟到 Fonera 試試看，怎麼跑都跑不起來，突然想到這個招我之前也中過。利用 file 工具看一下生出來的 binary，啊哈!果然是 LSB 的問題。大部分 openwrt 的硬體都是 mipsel (MIPS, Little Endian) 的架構，使用 Atheros chip 的 Fonera 就是跟人家不太一樣，是使用 MSB。再來就是 build 程式 build 到死,不過等待時也不會閒著，因為旁邊有 opcafe 提供的美味餐點。&lt;/p&gt;&lt;p&gt;&lt;a title="Hard working orz" href="http://www.flickr.com/photos/cclien/461746915/"&gt;&lt;img alt="Working hard orz" src="http://farm1.static.flickr.com/224/461746915_8b4851f828_m.jpg" height="160" width="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;氣氛&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;正當我還在跟 toolchain 奮鬥時，隔壁桌 RoR 組的劉燈突然興奮的大喊了一聲 "works!"，哈，突然回憶起以前跟砲王、朱立三個人關在一起趕專題的時光阿，原來數年前我們就進行過一個小小 Hackathon 了！Working hard 的時間總是過的特別快，不知不覺就到了七點多，一行人到建中附近吃了還蠻實惠的晚餐後，繼續回南海藝廊奮戰。&lt;/p&gt;&lt;p&gt;&lt;a title="RoR 組的大大們" href="http://www.flickr.com/photos/cclien/461746801/"&gt;&lt;img alt="RoR 組的討論非常熱烈" src="http://farm1.static.flickr.com/219/461746801_9e59373ee7_m.jpg" height="160" width="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;效率&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;光 build 一個 lighttpd 到 mips 平台上就花了我不少時間，lighttpd 雖然對 server 來說是 light，但是在 embedded 系統上仍屬於大噸位的程式，後來大家討論之後的結論是把 lighttpd 把整個 ajax/embedded 中抽離，推翻舊架構只在幾小時之中，Hackathon 的效率果然驚人！原本預定九點半就結束的活動，一直拖到十點大家才心甘情願的離開。&lt;/p&gt;&lt;p&gt;結束活動之後，馬上搭上捷運往小強的宿舍奔去，原來政大有單人房的宿舍耶，真高級。&lt;/p&gt;&lt;p&gt;&lt;b&gt;Day2: working working working&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;我真的忘了第二天我在幹嘛，就是一直改 code、bulild、查資料、中招.. blahblah，表示真的有融入，所以啥都忘了？所幸有帶了相機，所以我還記得我中午吃了牛排 XD；背包裡的 google 紀念品，提醒我我留了 E-mail address 給 google 的 HR 大嬸。&lt;/p&gt;&lt;p&gt;&lt;a title="午餐的牛排" href="http://www.flickr.com/photos/cclien/461748434/"&gt;&lt;img alt="午餐: 百里香牛排" src="http://farm1.static.flickr.com/199/461748434_7cb7b0c75e_m.jpg" height="160" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;就這樣，不知不覺就到了活動結束的時間，移往師大附近的 morelax 吃晚餐，由於一次湧入的鄉民太多，對吧台造成了 DOS ，所以在我吃完了我覺得等很久的晚餐之後，四元大大還在那邊餓肚子，哈。吃飯時跟 &lt;a href="http://search.cpan.org/%7Eingy/"&gt;Ingy&lt;/a&gt; 聊了一下天，原來他也喜歡騎機車，在美國有一台 Ducati Monster。&lt;/p&gt;&lt;p&gt;&lt;a title="Ingy and me" href="http://www.flickr.com/photos/cclien/461754643/"&gt;&lt;img alt="Ingy and me" src="http://farm1.static.flickr.com/188/461754643_f9696e5a42_m.jpg" height="160" width="240" /&gt;&lt;/a&gt;&lt;a title="Morelax 一角" href="http://www.flickr.com/photos/cclien/461747826/"&gt;&lt;img alt="Day 2 結束後續攤" src="http://farm1.static.flickr.com/172/461747826_ca96dbd424_m.jpg" height="160" width="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;總結&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;感謝辛苦主辦 Hackathon 的大大們，讓我有這次機會跟高手們一起窩在一個小房間，為了同一個目標一起 hacking，好久沒有這麼熱血了，真爽。希望之後還能有這種活動，如果時間更長就最好了(希望到時候我還有空參加)。&lt;br /&gt;&lt;br /&gt;Link: &lt;a href="http://www.flickr.com/photos/cclien/tags/hackathon/"&gt;活動時拍的照片&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-6981997794293508953?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6981997794293508953/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=6981997794293508953' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6981997794293508953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6981997794293508953'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/orzlab_20.html' title='OrzLab::黑客鬆紀錄'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/215/461748106_6451d5e3aa_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-7700792543547564731</id><published>2007-04-19T11:48:00.000+08:00</published><updated>2007-05-04T01:18:29.712+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ucimf. orzlab'/><category scheme='http://www.blogger.com/atom/ns#' term='osdc.tw'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='rt nanokernel'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>OSDC.TW 二三事</title><content type='html'>&lt;p&gt;4/14-4/15兩天的OSDC.TW活動終於結束了。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://osdc.tw/"&gt;OSDC.TW 2007&lt;/a&gt; 終於結束了，這幾天陸續看了&lt;a href="http://magicdesign.blogspot.com/2007/04/osdctw.html"&gt;魔法設計師&lt;/a&gt;、&lt;a href="http://bluecat.csie.net/2007/04/15/601/"&gt;BlueCat&lt;/a&gt;、&lt;a href="http://vision.twbbs.org/%7Eletoh/blog/?p=194"&gt;leoth&lt;/a&gt;、&lt;a href="http://yurinfore.blogspot.com/2007/03/osdc-open-source-osdc-shawn-snowwolf.html"&gt;Yuren&lt;/a&gt;和一些相關的部落格後，覺得自己也該寫篇心得和大家分享一下這次的活動心得。&lt;br /&gt;&lt;br /&gt;今年是第一次參加這麼大型的活動，個人感覺是相當新鮮的回憶。 相較以往參加的活動，OSDC.TW所聚集的人氣相當旺。這次活動還吸引了許多國外知名的Developer遠道前來共襄勝舉。 演講內容的深度和廣度都很棒。&lt;br /&gt;&lt;br /&gt;這兩天聽到的講席有： &lt;/p&gt;&lt;ul&gt;&lt;li&gt;jserv - RT Nanokernel for Embedded Linux&lt;/li&gt;&lt;li&gt;Audrey Tang - Jifty&lt;/li&gt;&lt;li&gt;clkao - svk: version control without the headaches then pushmi&lt;/li&gt;&lt;li&gt;Shu-Chun Weng - The Value of Everything But the Cost of Nothing -- a Tutorial to Haskell&lt;/li&gt;&lt;li&gt;Marek Lindner - Wireless Meshing - the future of infrastructuring&lt;/li&gt;&lt;li&gt;Macpaul Lin - Porta2030&lt;/li&gt;&lt;li&gt;MGdesigner - 2D fonts generator&lt;/li&gt;&lt;li&gt;Lightening talk &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;一個議程約莫是80分鐘左右，所以講者所準備的題材大多是以介紹概念和展示為主。 最大的收獲無非就是能一睹傳說中的Developer的風采，甚至有機會能和長輩面對面聊天。&lt;br /&gt;&lt;br /&gt;RT nanokernel這個場當然一定要先捧一下。每次聽jserv的演講都有幾個不錯的地方，除了都會有令人XD的笑話，另外就是一定會有Orz的Demo。 jserv戰鬥力真驚人，前一天還在CodeJam衝鋒陷陣，隔天還能馬上就準備好質量俱佳的報告。&lt;br /&gt;&lt;br /&gt;生平第一次見到傳說中，被喻為「台灣電腦十大高手」的AudreyT，台風穩健，人看起來也非常有氣質。 整個Talk的內容非常流暢，一個步驟接一個步驟的解說如何用Jifty來作出&lt;a href="http://doxory.com/"&gt;doxory&lt;/a&gt;這樣的網站。 能用程式碼為主的內容作投影片，作簡短扼要的解說，還能保持內容的趣味，真的非常厲害。&lt;br /&gt;&lt;br /&gt;第一次見到clkao是前一天在多鬆和參加&lt;a href="http://hackathon.blogspot.com/"&gt;CodeJam&lt;/a&gt;的人吃飯時看到的，他比我想像中的還要親切許多。 在當天的議程，他即介紹他著手寫SVK的源點和過程，還有一些設計理念。 svk我用得不久，大約才一個月的光景，然而svk所帶來的便利，已經成為「日常生活」中不可或缺的一部分。 而clkao他可以為了寫一個程式，空出整整一年的時間去Cook它 (而且也只花一年)，真是令人佩服不已。&lt;br /&gt;&lt;br /&gt;Shu-Chun Weng的Talk是介紹&lt;a href="http://www.haskell.org/"&gt;Haskell&lt;/a&gt;，一個我完全沒有聽過的程式語言。 短時間內要接受新的語言概念，對我來說還是太難。 聽到一半我就聽不懂了，感覺這東西用來作計算的功能似乎不錯。&lt;br /&gt;&lt;br /&gt;Marek Lindner和Macpaul Lin則是介紹行動Wireless的概念。也就是利用AP和AP互聯，以建立網路通訊。 Marek用簡單的觀念來介紹這個架構的原理，而這個領域其實很難，應用非常廣。我們國內前陣子TOSSUG社群發起像&lt;a href="http://porta2030.tossug.org/"&gt;Porta2030&lt;/a&gt;這樣的Project來玩這些東西。 最有趣的是Marek所秀出的他們在柏林市Wireless AP之間連線圖，感覺真的非常棒。 而Macpaul就是接著介紹和展示一些Porta2030的一些成果，還帶了很炫的&lt;a href="http://porta2030.tossug.org/"&gt;Porta2030&lt;/a&gt;的衣服，相當有趣。&lt;br /&gt;&lt;br /&gt;MGdesigner的Talk是關於漢字顯示的最新技術，在此之前就聽過他的演講，印象相當深刻。用組字的方式來顯示漢字，每一個人多多少少都想過。然而這個想法一直沒辦法落實到整個資訊系統上。 今天這個成果被開發出來，而且能開放專利並用自由軟體的來發展。對整個文字文化的影響非常深遠。 連閩南語暨客家語輸入法的開發者Arne Goetje(高盛華) 也自百忙中抽空來聆聽，可見得其重要性。&lt;br /&gt;&lt;br /&gt;Lightening Talk大概這次大會裡最活潑的節目了，自由報名，每個表演限時七分鐘。 每個上台的人得在這個時間內把要講的內容講完，否則就會被主持人殘酷的搶走麥克風了。很酷炫的東西像是可以計算筆電傾斜度來操縱玩具大炮，虛擬的Flicker框架。jserv用C/C++實做Ajax/embedded，還可以用gdb來debug，此外，還有高橋征義 (也就是高橋流簡報法的創始者) 本人的簡報，最後再加上MGdesigner的組字Demo。Lightening Talk不論是效果或是笑果都非常棒，真的是一個特別的節目。&lt;br /&gt;&lt;br /&gt;第一天晚上後來有跟Ping他們去古亭那裡吃飯。去了好幾個人，像是jserv、chihchun、yurenju、fourdollars、Marek等等。可惜我掛心於第二天的Talk，沒能好好放鬆心情的跟大家一起聊天。 不過後來還是跟Marek的朋友聊起來了。他的朋友的英文不是很好，就用德文找我聊天。 結果就是不斷的查線上字典伸單字。不過有趣的事後來他Demo了很炫的3D桌面程式給我們看，才知道他們就是&lt;a href="http://www.s3dconnector.net/screens/screenshots.php"&gt;s3d&lt;/a&gt;的&lt;a href="http://developer.berlios.de/project/memberlist.php?group_id=5908"&gt;Developers&lt;/a&gt; 。平常是很少有機會看到3D的程式師的，而且還是Developer。沒想到在這裡遇到了，真是相當驚奇。&lt;br /&gt;&lt;br /&gt;第二天晚上則是跟一群講師還有工作人員吃個飯。大家都很high，因為這次活動辦得真的不錯。hcchien找的餐廳很不錯，吃飯前psilotum還是一直拿相機猛拍。不過我覺得晚餐吃得好快啊，原來後來我累得睡著了。&lt;br /&gt;&lt;br /&gt;除了這些聽講的心得外，最大的好處就是能和傳說中的Developer面對面聊天。這幾天我除了講師之外，還遇到jesse、yurenuc、Tsung、descent...等一些來自各方的愛好自由軟體朋友，聊聊最近在作什麼，交換心得。&lt;/p&gt;&lt;p&gt;今年活動辦得真的很好，希望OSDC.TW明年還能繼續再接再厲。&lt;/p&gt;&lt;p&gt;相關連結：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Yuren Ju - &lt;a href="http://yurinfore.blogspot.com/2007/04/osdctw-2007.html"&gt;OSDC.tw 2007&lt;/a&gt;&lt;/li&gt;&lt;li&gt;c9s - &lt;a href="http://c9s.blogspot.com/2007/04/blog-post.html"&gt;最近&lt;/a&gt;&lt;/li&gt;&lt;li&gt;RichLiu - &lt;a title="'Permanent" href="http://blog.richliu.com/2007/04/15/466/" rel="bookmark"&gt;ODSC.TW 2007 第一天照片&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-7700792543547564731?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/7700792543547564731/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=7700792543547564731' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7700792543547564731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7700792543547564731'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/osdctw.html' title='OSDC.TW 二三事'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1095863749472596622</id><published>2007-04-18T19:21:00.000+08:00</published><updated>2007-05-04T01:18:59.188+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='l4'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='rt nanokernel'/><title type='text'>Open Kernel Labs公司成立，強化L4與虛擬技術應用</title><content type='html'>今天閱讀LinuxDevices.com時瞥見一則新聞「&lt;a href="http://www.linuxdevices.com/news/NS2277402289.html"&gt;Startup touts virtualizing microkernel&lt;/a&gt;」，提及原本&lt;a href="http://www.nicta.com.au/"&gt;NICTA&lt;/a&gt;(澳洲的產學合作機構) 中專注於&lt;a href="http://www.ertos.nicta.com.au/research/virtualisation/"&gt;L4 microkernel為基礎的虛擬化 (virtualization)  技術&lt;/a&gt;的研究單位，正式成立公司 "&lt;a href="http://www.ok-labs.com/"&gt;Open Kernel Labs&lt;/a&gt;"，看來即將在2008年為資訊產業帶來新的震撼。雖然L4 microkernel之父Jochen Liedtke已於2001年六月10日去世，但L4 microkernel設計與我們同在，並深深影響這個世紀的作業系統。&lt;br /&gt;&lt;br /&gt;L4採用第二的micro-kernel設計，在kernel本身只提供十來個system call，相較於第一代的micro-kernel的Mach有一百多個而言，L4的設計相當精簡，有文獻指出，適當的規劃micro-kernel system call可提升系統效率，L4正是基於此一理念的實作。德國&lt;a href="http://tu-dresden.de/"&gt;Dresden科技大學&lt;/a&gt;基於L4 microkernel提出&lt;a href="http://os.inf.tu-dresden.de/L4/LinuxOnL4/"&gt;L4Linux&lt;/a&gt;的設計，那是運作於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運作。幾乎在同一時間，德國&lt;a href="http://www.uni-karlsruhe.de/"&gt;Karlsruhe大學&lt;/a&gt;也成立&lt;a href="http://l4ka.org/"&gt;L4Ka&lt;/a&gt;小組，與澳洲的&lt;a href="http://www.unsw.edu.au/"&gt;New South Wales&lt;/a&gt;大學合作開發針對嵌入式系統的L4最佳化實做，後來也不約而同切入虛擬化技術的領域。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nicta.com.au/"&gt;NICTA&lt;/a&gt;在澳洲扮演產學合作的角色，早在兩年前即與通訊大廠Qualcomm合作開發&lt;a href="http://linuxdevices.com/news/NS4897933970.html"&gt;基於L4與虛擬化技術的3G手機設計&lt;/a&gt;，&lt;span style=";font-family:Arial,Helvetica;font-size:100%;"  &gt;在MSM6550晶片組的硬體上，提供虛擬化執行平台，&lt;/span&gt;允許Linux (在其上運作豐富的應用程式) 與BREW RTOS (進行資訊處理與操作3G Modem之用) 並行存在，這是個相當成功的展示。不僅如此，&lt;a href="http://www.nicta.com.au/"&gt;NICTA&lt;/a&gt;也跟澳洲當地的&lt;a href="http://fluffyspider.com.au/"&gt;FancyPaints&lt;/a&gt;合作開發&lt;a href="http://linuxdevices.com/news/NS4095436375.html"&gt;提供給Qualcomm 3G CDMA平台的絢麗手機人機介面&lt;/a&gt;。今日，這些成果將由專業商業公司進行維護與開創新價值，"&lt;a href="http://www.ok-labs.com/"&gt;Open Kernel Labs&lt;/a&gt;"也表示將繼續原本開放原始碼的實做(以BSD License釋出)，相當值得關注。&lt;br /&gt;&lt;br /&gt;在今年&lt;a href="http://osdc.tw/"&gt;OSDC.tw&lt;/a&gt;研討會上，OrzLab揭露了&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001897.html"&gt;RT nanokernel for Embedded Linux&lt;/a&gt;的設計，儘管途徑與L4 microkernel不同，但許多資源是可以共享的，同時我們也提出LOVER的口號，也就是 "Linux Optimized for Virtualization, Embedded, and Realtime" 這個概念的落實。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1095863749472596622?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1095863749472596622/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1095863749472596622' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1095863749472596622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1095863749472596622'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/open-kernel-labsl4.html' title='Open Kernel Labs公司成立，強化L4與虛擬技術應用'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4741972735279841939</id><published>2007-04-16T14:30:00.000+08:00</published><updated>2007-05-04T01:19:42.307+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='win32'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>OpenMoko/Neo1973硬體模擬::Win32平台</title><content type='html'>紀錄「&lt;a href="http://orzlab.blogspot.com/2007/04/openmokoneo1973.html"&gt;OpenMoko/Neo1973硬體模擬&lt;/a&gt;」後，收到許多迴響，&lt;a href="http://cclien.net/"&gt;cclien&lt;/a&gt;兄還因此徹夜未眠、提交patch，Jollen兄也寫了一篇「&lt;a href="http://www.jollen.org/blog/2007/04/qemu_neo1973_openmoko_jk2410.html"&gt;qemu-neo1973 / openmoko-emulator / jk2410-emulator&lt;/a&gt;&lt;input id="hdn_reply_to_subj" value="openmoko on winxp" type="hidden"&gt;」，分享Jollen-Pro Kit! (based on S3C2410)的硬體模擬，而前幾天則在通信論壇看到更紗的post「&lt;a href="http://groups.google.com/group/orzlab/browse_thread/thread/79b9bac433d2e442"&gt;openmoko on winxp&lt;/a&gt;」，讓我也對Win32的移植感興趣。趁&lt;a href="http://osdc.tw/"&gt;OSDC.tw&lt;/a&gt;結束的空檔，也來改看看，似乎沒遇到什麼問題，於是打包一個執行檔：&lt;a href="http://mdk.linux.org.tw/%7Ejserv/openmoko/openmoko-emulator-win32-bin-20070416.zip"&gt; openmoko-emulator-win32-bin-20070416.zip&lt;/a&gt;&lt;br /&gt;已將昨天建構的u-boot、Linux kernel，以及rootfs等image置入，以下是執行畫面：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RiMdnCmQJvI/AAAAAAAAAEc/zBdmKk_XIR0/s1600-h/openmoko-emulator-winxp.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RiMdnCmQJvI/AAAAAAAAAEc/zBdmKk_XIR0/s320/openmoko-emulator-winxp.png" alt="" id="BLOGGER_PHOTO_ID_5053915763389245170" border="0" /&gt;&lt;/a&gt;基本上解開Zip壓縮檔案後，直接跑qemu-system-arm.exe即可，模擬器外觀的支援還沒整合進去，但仍可從附帶的command window看到LCD Panel與GSM的資訊，同樣是按Enter鍵切換選單項目，Space鍵選擇。&lt;br /&gt;&lt;br /&gt;附帶一提，OpenMoko/Neo1973的模擬器UI與GNU gdb整合的程式碼我已經作一段落，但現在遇到個非技術議題，因為該裝置是狹長型，而LCD Panel (VGA解析度)下上方都有頗大的空間，所以一旦模擬器的外觀載入後，就會超過螢幕解析度，勢必得作些裝置外觀的調整，所以可能需要美工專長的朋友協助。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4741972735279841939?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4741972735279841939/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4741972735279841939' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4741972735279841939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4741972735279841939'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/openmokoneo1973win32.html' title='OpenMoko/Neo1973硬體模擬::Win32平台'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XYo3WYqTnPk/RiMdnCmQJvI/AAAAAAAAAEc/zBdmKk_XIR0/s72-c/openmoko-emulator-winxp.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-6654935027442726292</id><published>2007-04-12T09:06:00.000+08:00</published><updated>2007-05-04T01:20:05.479+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='osdc.tw'/><category scheme='http://www.blogger.com/atom/ns#' term='ucimf'/><title type='text'>UCIMF 2.0預計時程</title><content type='html'>Mat日前在&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;的&lt;a href="http://groups.google.com/group/UCIMF"&gt;mailing-list&lt;/a&gt;上公告「&lt;a href="http://groups.google.com/group/ucimf/browse_thread/thread/1b6bc590ee4abb8e"&gt;UCIMF&lt;/a&gt;&lt;span id="thread_subject_site"&gt;&lt;a href="http://groups.google.com/group/ucimf/browse_thread/thread/1b6bc590ee4abb8e"&gt;預計時程&lt;/a&gt;」，宣告即將在&lt;a href="http://osdc.tw/"&gt;OSDC.tw&lt;/a&gt;上釋出&lt;/span&gt;&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt; stable release 2.0.0，以下是訊息摘錄：&lt;br /&gt;&lt;blockquote&gt;目前正在整理UCIMF的程式碼，同時準備4/15的OSDC.TW講稿。&lt;br /&gt;主要修改內容為，加強外觀的調整，和穩定度的提升。&lt;br /&gt;預計在4/15發佈2.0.0的tarball，並希望能邀請社群幫忙打包和開發。&lt;br /&gt;&lt;p&gt;目前希望的功能主要是：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;字型、顏色，能客製化。 &lt;/li&gt;&lt;li&gt;OpenVanilla、IIIMF的支援 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;sincerely, Mat. &lt;/p&gt;&lt;/blockquote&gt;這個計畫已經進行一段時間，很高興即將邁入新的里程碑，未來也是Embedded i18n (Internationalization) / L10n (Localization)的解決方案之一。嗯，預祝順利！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-6654935027442726292?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/6654935027442726292/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=6654935027442726292' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6654935027442726292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/6654935027442726292'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/ucimf-20.html' title='UCIMF 2.0預計時程'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-5956503597426844073</id><published>2007-04-11T14:13:00.000+08:00</published><updated>2007-05-04T01:20:44.789+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xul'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='moztw'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>構想：Embedded Linux + Mozilla</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhykHimQJuI/AAAAAAAAAEU/hkFub7UdFWM/s1600-h/email_w_newmessage_flat.gif"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhydKSmQJpI/AAAAAAAAADs/q_4PnXsGftE/s1600-h/figure1.1.jpg"&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;多年前曾在LinuxDevices.com&lt;/span&gt;&lt;span style="font-size:100%;"&gt;閱讀&lt;/span&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:85%;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://linuxdevices.com/articles/AT8918758707.html"&gt;The Embedded Java+Linux Quick Reference Guide&lt;/a&gt;系列文章，正值研究Java Virtual Machine最熱衷的時期，那時候深信此&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhykHimQJuI/AAAAAAAAAEU/hkFub7UdFWM/s1600-h/email_w_newmessage_flat.gif"&gt;&lt;/a&gt;&lt;span style=";font-family:Arial,Helvetica;font-size:85%;"  &gt;&lt;span style="font-size:100%;"&gt;概念不移，而在後網路時代的今日，我開始思考不同的觀點。就跟Forth一般，VM只是一種途徑，重點是資訊技術能解決什麼問題、得以帶來什麼新的想法，是此，我又回頭思索過去投入的Web Browser設計項目。&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rhyi_imQJqI/AAAAAAAAAD0/Nv0z40lD-tA/s1600-h/browser.jpg"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhykASmQJtI/AAAAAAAAAEM/jErNeYS3th8/s1600-h/addressbook.jpg"&gt;&lt;/a&gt;&lt;br /&gt;週日(Apr 8)約了來自&lt;a href="http://www.moztw.org/"&gt;Mozilla Taiwan&lt;/a&gt;的朋友出來討論OrzLab的計畫，其中包含結合Embedded Linux與&lt;a href="http://www.mozilla.org/"&gt;Mozilla&lt;/a&gt; runtime的整合執行環境，簡單來說，就是系統簡&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhyjjCmQJsI/AAAAAAAAAEE/2wJEPPUMplg/s1600-h/browser.jpg"&gt;&lt;/a&gt;約到Linux與Mozilla兩部份，後者可取代傳統的應用程式。這樣的概念不算新，在《&lt;a href="http://mb.eschew.org/"&gt;Rapid Application Development with Mozilla&lt;/a&gt;》一書第一章〈&lt;a href="http://mb.eschew.org/1.php"&gt;Fundamental Concepts&lt;/a&gt;〉可看到許多實例，其中有個來自OEone Corporation的HomeBase desktop，其展示畫面如下：&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhykHimQJuI/AAAAAAAAAEU/hkFub7UdFWM/s1600-h/email_w_newmessage_flat.gif"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhyjRimQJrI/AAAAAAAAAD8/GXKOHhSGBBU/s1600-h/browser.jpg"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhydKSmQJpI/AAAAAAAAADs/q_4PnXsGftE/s1600-h/figure1.1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhydKSmQJpI/AAAAAAAAADs/q_4PnXsGftE/s320/figure1.1.jpg" alt="" id="BLOGGER_PHOTO_ID_5052085682119386770" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhykHimQJuI/AAAAAAAAAEU/hkFub7UdFWM/s1600-h/email_w_newmessage_flat.gif"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhykASmQJtI/AAAAAAAAAEM/jErNeYS3th8/s1600-h/addressbook.jpg"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhyjjCmQJsI/AAAAAAAAAEE/2wJEPPUMplg/s1600-h/browser.jpg"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rhyi_imQJqI/AAAAAAAAAD0/Nv0z40lD-tA/s1600-h/browser.jpg"&gt;&lt;/a&gt;&lt;div style="direction: ltr;"&gt;OEone HomeBase desktop是個很優秀的Linux桌面環境，整合許多應用程式與軟體元件到Mozilla的Framework中，諸如文書處理工具、多媒體程式、線上通訊、TV瀏覽等等，並以 XML interface (&lt;a href="http://www.mozilla.org/projects/xul/"&gt;XUL&lt;/a&gt; + Javascript + XBL) 作為顯示與輸入的基礎，與使用者互動，詳細的報導可參考：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.desktoplinux.com/articles/AT4572551019.html"&gt;Desktop Linux Computing Solutions for the Home&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhyjjCmQJsI/AAAAAAAAAEE/2wJEPPUMplg/s1600-h/browser.jpg"&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.desktoplinux.com/articles/AT4572551019.html" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://trends.newsforge.com/print.pl?sid=02/08/11/2231241"&gt;OEone's Linux desktop experiment enters a new phase&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhykASmQJtI/AAAAAAAAAEM/jErNeYS3th8/s1600-h/addressbook.jpg"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://trends.newsforge.com/print.pl?sid=02/08/11/2231241" target="_blank"&gt;&lt;/a&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://pendesktop.sourceforge.net/images/screenshots/" target="_blank"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhykHimQJuI/AAAAAAAAAEU/hkFub7UdFWM/s1600-h/email_w_newmessage_flat.gif"&gt;&lt;/a&gt;以下是個別元件執行的畫面：&lt;br /&gt;(主瀏覽畫面)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhyjjCmQJsI/AAAAAAAAAEE/2wJEPPUMplg/s1600-h/browser.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhyjjCmQJsI/AAAAAAAAAEE/2wJEPPUMplg/s320/browser.jpg" alt="" id="BLOGGER_PHOTO_ID_5052092704390915778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(通訊錄)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhykASmQJtI/AAAAAAAAAEM/jErNeYS3th8/s1600-h/addressbook.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhykASmQJtI/AAAAAAAAAEM/jErNeYS3th8/s320/addressbook.jpg" alt="" id="BLOGGER_PHOTO_ID_5052093206902089426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(郵件程式)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhyjjCmQJsI/AAAAAAAAAEE/2wJEPPUMplg/s1600-h/browser.jpg"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhykHimQJuI/AAAAAAAAAEU/hkFub7UdFWM/s1600-h/email_w_newmessage_flat.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhykHimQJuI/AAAAAAAAAEU/hkFub7UdFWM/s320/email_w_newmessage_flat.gif" alt="" id="BLOGGER_PHOTO_ID_5052093331456141026" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rhyi_imQJqI/AAAAAAAAAD0/Nv0z40lD-tA/s1600-h/browser.jpg"&gt;&lt;/a&gt;這些都是以&lt;a href="http://www.mozilla.org/projects/xul/"&gt;XUL&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhyjjCmQJsI/AAAAAAAAAEE/2wJEPPUMplg/s1600-h/browser.jpg"&gt;&lt;/a&gt;去描繪的，相當令人驚艷。OEone HomeBase的Application Framework稱為 Penzilla，雖然立意不錯，但推出的時間點不佳。在當時&lt;wbr&gt;，Linux下文書處理與多媒體都不甚良好，可想而知，直接挑戰桌面應用會是&lt;wbr&gt;充滿無數困難，所以，OEone不幸於2003年停止發展並售出其產品線。&lt;br /&gt;&lt;br /&gt;然而，如果我們從嵌入式系統的角度來看Penzilla，這反而是個新機會，特別在Web 2.0的時代，許多服務強調高度整合，許多針對特定需求的裝置也被提出&lt;wbr&gt;，如 PMP (Portable Media Player) 或Web tablet一類。同時我們也可看到過去我們使用 PC 建構的裝置，如Kiosk (擺放於捷運站的導覽系統或提款機一類) 與遠距教學系統，其裝置往往用Windows 2000加上VB或Delphi開發的前端介面，不僅缺乏彈性，也造成維護的困難。&lt;br /&gt;&lt;br /&gt;是此，OrzLab 成立的本意就是希望藉由「平台導向」的開發，將open source與既有的資源整合起來，並且以更好的軟硬體整合，創造新的價值&lt;wbr&gt;，所以今年會試著用ARM或MIPS一類的低價硬體裝置作為開發驗證之硬體，將Embedded Linux與Mozilla整合起來，並建立一系列XPCOM/XUL 為基礎的元件。&lt;br /&gt;&lt;br /&gt;相當幸運的，OEone雖然已結束產品線，其原始程式碼仍被保留，存放於SourceForge.net，其專案名稱為&lt;a href="http://sourceforge.net/projects/pendesktop"&gt;Penzilla Desktop&lt;/a&gt;，&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://jserv.sayya.org/tmp/penzilla-cvs.tar.bz2" target="_blank"&gt;&lt;/a&gt;最近著手將這些舊的軟體建設移植到Firefox 2.x上，當然，沒有必要全部移植，只要將我們感興趣的部份&lt;wbr&gt;，也是真正有需求的項目即可。&lt;span style=";font-family:Arial,Helvetica;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-5956503597426844073?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/5956503597426844073/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=5956503597426844073' title='7 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5956503597426844073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5956503597426844073'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/embedded-linux-mozilla.html' title='構想：Embedded Linux + Mozilla'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XYo3WYqTnPk/RhydKSmQJpI/AAAAAAAAADs/q_4PnXsGftE/s72-c/figure1.1.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1752433362713782650</id><published>2007-04-07T12:19:00.000+08:00</published><updated>2007-05-04T01:10:01.903+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orzlab'/><title type='text'>OrzLab的圖示</title><content type='html'>因為本實驗室陸續開發若干嵌入式系統軟體與韌體，諸如硬體模擬器與視覺化介面等，總需要一些logo、Linux/BSD boot screen，或者Application splash screen等，所以在「&lt;a href="http://orzlab.blogspot.com/2007/04/orzlab.html"&gt;OrzLab正式公開&lt;/a&gt;」一文也特別提到歡迎對美工擅長的朋友貢獻。非常感謝&lt;a href="http://yurenju.blogspot.com/"&gt;Yuren Ju&lt;/a&gt;、&lt;a href="http://penk.wordpress.com/"&gt;penk&lt;/a&gt;的學妹ramihaha、阿怪(aguai) 與其朋友，及ct等人貢獻了許多精美的圖示，整理如下：(某些圖示因尺寸考量，先行刪除，待日後wiki上線再補)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rhcip1rk_nI/AAAAAAAAAC0/fLeCJbwj-ns/s1600-h/orzlab_487x163.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rhcip1rk_nI/AAAAAAAAAC0/fLeCJbwj-ns/s200/orzlab_487x163.png" alt="" id="BLOGGER_PHOTO_ID_5050543609299140210" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhcjnVrk_sI/AAAAAAAAADc/Ik3b5c_uE3g/s1600-h/orzlab-copy.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhcjnVrk_sI/AAAAAAAAADc/Ik3b5c_uE3g/s200/orzlab-copy.gif" alt="" id="BLOGGER_PHOTO_ID_5050544665861095106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhchZ1rk_hI/AAAAAAAAACE/kvueumv-Q7Q/s1600-h/orzlab_246x236.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/RhchZ1rk_hI/AAAAAAAAACE/kvueumv-Q7Q/s200/orzlab_246x236.png" alt="" id="BLOGGER_PHOTO_ID_5050542234909605394" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhciDVrk_lI/AAAAAAAAACk/UnuVmnMyB-M/s1600-h/orzlab_472x368.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhciDVrk_lI/AAAAAAAAACk/UnuVmnMyB-M/s200/orzlab_472x368.jpg" alt="" id="BLOGGER_PHOTO_ID_5050542947874176594" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhcjYlrk_rI/AAAAAAAAADU/qd9pLKqRFyA/s1600-h/orzlab_754x539.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/RhcjYlrk_rI/AAAAAAAAADU/qd9pLKqRFyA/s200/orzlab_754x539.jpg" alt="" id="BLOGGER_PHOTO_ID_5050544412458024626" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XYo3WYqTnPk/Rhch4lrk_kI/AAAAAAAAACc/0wZh4CmPpok/s1600-h/orzlab_407x117.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XYo3WYqTnPk/Rhch4lrk_kI/AAAAAAAAACc/0wZh4CmPpok/s200/orzlab_407x117.png" alt="" id="BLOGGER_PHOTO_ID_5050542763190582850" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhclYVrk_tI/AAAAAAAAADk/AXN6zZvpRcY/s1600-h/promote-orzlab.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhclYVrk_tI/AAAAAAAAADk/AXN6zZvpRcY/s200/promote-orzlab.png" alt="" id="BLOGGER_PHOTO_ID_5050546607186312914" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RhcjIFrk_qI/AAAAAAAAADM/Z1xfEkQy5mY/s1600-h/orzlab_600x600.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RhcjIFrk_qI/AAAAAAAAADM/Z1xfEkQy5mY/s200/orzlab_600x600.jpg" alt="" id="BLOGGER_PHOTO_ID_5050544128990183074" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rhciz1rk_oI/AAAAAAAAAC8/J_Ofw3FzMNM/s1600-h/orzlab_563x608.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/Rhciz1rk_oI/AAAAAAAAAC8/J_Ofw3FzMNM/s200/orzlab_563x608.jpg" alt="" id="BLOGGER_PHOTO_ID_5050543781097832066" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RhchmFrk_iI/AAAAAAAAACM/qIej2v0Mn9k/s1600-h/orzlab_337x320.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RhchmFrk_iI/AAAAAAAAACM/qIej2v0Mn9k/s200/orzlab_337x320.jpg" alt="" id="BLOGGER_PHOTO_ID_5050542445363002914" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RhchvFrk_jI/AAAAAAAAACU/TG3zCt8ZIQo/s1600-h/orzlab_404x242.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RhchvFrk_jI/AAAAAAAAACU/TG3zCt8ZIQo/s200/orzlab_404x242.png" alt="" id="BLOGGER_PHOTO_ID_5050542599981825586" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1752433362713782650?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1752433362713782650/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1752433362713782650' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1752433362713782650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1752433362713782650'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/orzlab_07.html' title='OrzLab的圖示'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XYo3WYqTnPk/Rhcip1rk_nI/AAAAAAAAAC0/fLeCJbwj-ns/s72-c/orzlab_487x163.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-5642968281368175707</id><published>2007-04-05T01:24:00.000+08:00</published><updated>2007-05-04T01:21:18.983+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>OpenMoko/Neo1973硬體模擬</title><content type='html'>上個月底有幸能與OpenMoko團隊互動，做了簡要的紀錄「&lt;a href="http://orzlab.blogspot.com/2007/03/openmoko.html"&gt;遇上OpenMoko&lt;/a&gt;」，雖然語焉不詳，但心中的感動實在是很難一語道盡的。週二去竹科替某單位進行教育訓練後，技術交流的過程讓我有種感觸，為數眾多的開發工具往往給予我們頗大的挫折感，就如以前聽過的一句話：「現代人的問題不在於沒有工具、缺乏資源，相反地，資源五花八門、工具也多到令人無所適從」，我想，針對嵌入式系統開發與整合的OrzLab，應該提出一些解決方案，就如之前提過的「&lt;a href="http://orzlab.blogspot.com/2007/03/blog-post_15.html"&gt;視覺化系統模擬與偵錯&lt;/a&gt;」一般，我們可善用既有的工具，進一步延伸為更直覺且多元的開發模式。&lt;br /&gt;&lt;br /&gt;之前主要在PXA27x的硬體平台進行開發，最近則因為Jollen兄提供其最新的「&lt;a href="http://www.jollen.org/kit/"&gt;Jollen-Kit! 開發板&lt;/a&gt;」與OpenMoko/FIC提供「&lt;a href="http://wiki.openmoko.org/wiki/Neo1973_Hardware" title="Neo1973 Hardware"&gt;Neo1973 Hardware&lt;/a&gt;」，讓我對這兩款同是S3C2410為基礎的平台有高度興趣。除了「&lt;a href="http://orzlab.blogspot.com/2007/03/intelmarwell-pxa27x.html"&gt;Intel/Marvell PXA27x的系統模擬&lt;/a&gt;」外，Neo1973 (目前硬體為GTA01) 的硬體模擬也進行中，openmoko採用的bootloader是U-Boot，wiki的 "&lt;a href="http://wiki.openmoko.org/wiki/Bootloader"&gt;Bootloader&lt;/a&gt;" 做了很詳盡的解說，系統模擬器的畫面如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhPl1Vrk_dI/AAAAAAAAABk/m_i_SCY6U3k/s1600-h/neo-emu-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhPl1Vrk_dI/AAAAAAAAABk/m_i_SCY6U3k/s400/neo-emu-1.png" alt="" id="BLOGGER_PHOTO_ID_5049632311728209362" border="0" /&gt;&lt;/a&gt;U-Boot允許自訂選單，在我們這個以&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;為基礎的模擬器中，選單項目可按下Enter鍵作切換，當按下Space鍵時就執行指令，當然，還等什麼，咱們就boot系統，模擬器的畫面如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhPmyVrk_eI/AAAAAAAAABs/RWWGAWF0ttI/s1600-h/neo-emu-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhPmyVrk_eI/AAAAAAAAABs/RWWGAWF0ttI/s400/neo-emu-2.png" alt="" id="BLOGGER_PHOTO_ID_5049633359700229602" border="0" /&gt;&lt;/a&gt;熟悉的小企鵝就現身，當Linux走出PC，進入移動裝置如手機時，給予我們相當大的揮灑空間。OpenMoko的軟體架構採用X Window System，並使用OpenedHand維護的應用程式套件，以下是進行觸碰螢幕校正的模擬器畫面：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhPn3Vrk_fI/AAAAAAAAAB0/xGzbwr23LzI/s1600-h/neo-emu-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XYo3WYqTnPk/RhPn3Vrk_fI/AAAAAAAAAB0/xGzbwr23LzI/s400/neo-emu-3.png" alt="" id="BLOGGER_PHOTO_ID_5049634545111203314" border="0" /&gt;&lt;/a&gt;為了要符合觸碰螢幕的運作行為，這個以&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;為基礎的模擬器做了些許的修改，避免被grab，最後我們終於看到openmoko的軟體環境：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RhPosFrk_gI/AAAAAAAAAB8/QV5zjVJIv-8/s1600-h/neo-emu-4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RhPosFrk_gI/AAAAAAAAAB8/QV5zjVJIv-8/s400/neo-emu-4.png" alt="" id="BLOGGER_PHOTO_ID_5049635451349302786" border="0" /&gt;&lt;/a&gt;透過&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;，我們可以快速建構整個system image，OpenMoko官方也有個&lt;a href="http://buildhost.openmoko.org/"&gt;build host&lt;/a&gt;，提供最新的image與ipkg feed。這個模擬環境暫時命名為 "openmoko-emulator"，原始程式碼與相關資源可在此取得：&lt;a href="http://mdk.linux.org.tw/%7Ejserv/openmoko/"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="text-decoration: underline;"&gt;http://mdk.linux.org.tw/~jserv/openmoko/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;。以下是 "openmoko-emulator" 的README內容：&lt;blockquote&gt;== Introduction ==&lt;br /&gt;&lt;br /&gt;The package includes the modified qemu for emulating Neo1973 phone aka FIC GTA01 aka OpenMoko based on S3C2410A.&lt;br /&gt;&lt;br /&gt;== Requirements ==&lt;br /&gt;&lt;br /&gt;Software:&lt;br /&gt;1. Linux distribution. Tested in Debian Sarge and Ubuntu 6.06/7.04&lt;br /&gt;2. Packages: gcc-3.4, lynx, libsdl1.2-dev, python, perl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;== Usage ==&lt;br /&gt;&lt;br /&gt;After extracting the snapshot of this emulator, change to source directory. Then, perfom the following instructions:&lt;br /&gt;&lt;br /&gt;(1) Build from source&lt;br /&gt;# ./configure&lt;br /&gt;# make&lt;br /&gt;(2) Download OpenMoko images from nightly build                                               &lt;br /&gt;# ./openmoko/download.sh&lt;br /&gt;(3) Install OpenMoko to NAND Flash&lt;br /&gt;# ./openmoko/flash.sh&lt;br /&gt;(4) Run the emulator&lt;br /&gt;# ./openmoko/run.sh&lt;/blockquote&gt;週邊的部份，GSM modem與AGPS會紀錄其enable/disable狀態，其餘則算是堪用，這當然只是個起點。未來或許會比照「深入淺出Hello World」系列演講的模式，對這類在Embedded Linux開發過程中，引入硬體模擬器的突破，探討如何更深入掌握系統與加速開發流程，同時這也彰顯整合開發工具的需求，所以最近會繼續尋求合作的機會。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-5642968281368175707?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/5642968281368175707/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=5642968281368175707' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5642968281368175707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5642968281368175707'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/openmokoneo1973.html' title='OpenMoko/Neo1973硬體模擬'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XYo3WYqTnPk/RhPl1Vrk_dI/AAAAAAAAABk/m_i_SCY6U3k/s72-c/neo-emu-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8260329654846331169</id><published>2007-04-01T23:16:00.000+08:00</published><updated>2007-05-04T01:11:13.552+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orzlab'/><title type='text'>2007年四月上旬行程</title><content type='html'>應該採用社群行事曆的機制，不過先紀錄一下今年四月上旬的暫定行程：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Apr 3 (二) - 教育訓練與TOSSUG社群聚會&lt;/li&gt;&lt;li&gt;Apr 12-13 (四、五) - &lt;a href="http://taipedia.selfip.info/mediawiki/index.php/TaiwanCodeJam"&gt;TaiwanCodeJam&lt;/a&gt; (即Code Jam 2007，詳情可見「&lt;a href="http://lukhnos.org/blog/zh/archives/474"&gt;Coding Jam 2007的宣傳開個頭&lt;/a&gt;」)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;以Ajax/Embedded為提案參與，詳情可見「&lt;a href="http://orzlab.blogspot.com/2007/03/ajaxembedded.html"&gt;Ajax/Embedded&lt;/a&gt;」與「&lt;a href="http://orzlab.blogspot.com/2007/03/lwkhttpd-lightweight-khttpd-for-linux.html"&gt;lwkhttpd : Lightweight kHTTPd for Linux Kernel&lt;/a&gt;」&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Apr 14 - 15 (六、日) - &lt;a href="http://osdc.tw/"&gt;OSDC.tw&lt;/a&gt;，本實驗室的議程：&lt;/li&gt;&lt;ul&gt;&lt;li&gt;jserv -&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001877.html"&gt;RT nanokernel for Embedded Linux&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Mat - Unicode Console InputMethod Framework&lt;/li&gt;&lt;li&gt;具體提案內容可見「&lt;a href="http://orzlab.blogspot.com/2007/01/osdctw-2-007-is-coming.html"&gt;OSDC.tw 2007 is coming&lt;/a&gt;」&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;OrzLab已正式公開，硬體設備可望陸續到位，現在就是展現我們「自由」與「創意」的時機 :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8260329654846331169?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8260329654846331169/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8260329654846331169' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8260329654846331169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8260329654846331169'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/2007.html' title='2007年四月上旬行程'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-3122163385783432796</id><published>2007-04-01T00:52:00.000+08:00</published><updated>2007-05-04T01:21:53.134+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='community'/><category scheme='http://www.blogger.com/atom/ns#' term='orzlab'/><title type='text'>OrzLab正式公開</title><content type='html'>OrzLab是什麼？即便參考其全名"&lt;span&gt;Open RazzmatazZ Laboratory"也很難令人聯想到這樣的實驗室到底是為了什麼目標成立。身處於台灣，每年都可看到為數可觀的電子產品出貨，這絕對是台灣的驕傲，同時在質與量都有傲人的表現，然而，當自己實地參與PDA、SmartPhone、數位電視、Wireless router，及儀控系統的設計後，才發現不少工程成本是耗費於那些重複的工作中，又因為缺乏產品特色，就陷入惡質的成本價格戰中，原本產品的特色與創意早已不知去處，更慘的是工程人員終日處理無趣的技術問題中度過，逐漸喪失熱情與創意，這絕對不是我們樂見的。&lt;br /&gt;&lt;br /&gt;OrzLab作為一個非營利的組織，沒辦法改變上述的情況，但我們有能力可為硬體帶來新的生命，並且重現那份熱情與創意，其出發點就是善用自由軟體 (Free software / Open source software)。&lt;/span&gt;於是乎，這個實驗室的基本想法是能讓更多創意透過自由軟體，落實於嵌入式裝置或者特定的硬體中，具體來說，就是避免重複的專案開發，並針對嵌入式系統或系統整合廠商需求，提出有價值的解決方案，建構一系列自由軟體為基礎的系統架構。&lt;br /&gt;&lt;span&gt;&lt;br /&gt;上述的文字乍看似乎很難抓到重點，但回頭過來思索：何以電子裝置生產如此蓬勃的地方，人們常苦於缺乏可用以驗證想法的裝置？原因很單純，不是沒有硬體，是缺乏開放的軟體與韌體。就如我們所知，軟體賦予硬體新的生命，倘若裝置中的軟體趨於封閉，這也意味著其生命週期有著天生的障礙，這也是我們往往得退而求其次，用相對高價、高功耗的個人電腦來驗證自己的想法，有時候我們的要求就是單純到「能否把MP3 Player軟體放到硬體裝置中，當作床頭音響使用？」技術上絕對可行，而且可能根本不需更動任何一行程式碼，這之中沒有什麼魔法，但我們往往不得其門而入，更別說只是滿足 "Orz" 這類無釐頭文化的呈現。&lt;br /&gt;&lt;br /&gt;這是取名為"OrzLab"的主因：只要我們能讓裝置中的軟體獲得「解放」，轉化為自由軟體，再如何奇特無比、只能訴諸 "Orz" 形容的嘗試 (即OrzLab裡面的"&lt;/span&gt;&lt;span&gt;RazzmatazZ") &lt;/span&gt;&lt;span&gt;都是可行，是的，我們絕對可以做到，而且享有台灣低廉的硬體成本優勢，當然，要創造潛在的嶄新產品更是大有機會。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Linux/BSD以及大量的自由軟體廣泛被移植到不同的硬體架構，激發出我們的熱情與使命感，驅使這個「創作型」實驗室產生，其中「自由」與「創意」可說是最大的精髓。現有的專案計畫都是針對嵌入式系統的應用，伴隨著關鍵性的技術議題，我們可透過開放的網路資源與協同合作，在一定程度上克服既有議題，提出可累積的自由軟體解決方案。&lt;br /&gt;&lt;br /&gt;所以，換言之，OrzLab就是個創作平臺，允許任何創意化為具體的專案項目，最終可落實於硬體裝置中，目前OrzLab 成員來自台灣的自由軟體貢獻者，以 Linux/BSD 為主要的開發環境，對嵌入式系統開發、多國語文處理、Web 應用程式，或者是低階系統控制皆有一定的掌握度。 相當感謝&lt;a href="http://blog.yam.com/twfon"&gt;FON Taiwan&lt;/a&gt;與&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;在本實驗室初期作了最具體的資助：提供可修改的硬體裝置，並具備開放規格，這意味著，我們立刻即可將「自由」與「創意」這兩大精神注入原本死板的硬體。想像一下，我們可把Ajax引擎移植到FON WiFi Access Point裡面，然後&lt;span&gt;死板的設定介面就瞬間變成變化多端的Web Application，我們當然可直接連線到FON中寫blog或編修wiki，而且享受最直觀的介面，為什麼不作呢？&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;請查閱OrzLab開發者日誌，以取得最新開發動向：&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://orzlab.blogspot.com/"&gt;http://orzlab.blogspot.com/&lt;/a&gt;  &lt;p&gt;現階段的開發方向有：&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Realtime Linux/BSD&lt;/li&gt;&lt;li&gt;Embedded i18n&lt;/li&gt;&lt;li&gt;Embedded Web/Ajax framework&lt;br /&gt;&lt;/li&gt;&lt;li&gt;System emulation &amp;amp; Optimization &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;基於既定的開發方向，OrzLab希望能取得硬體廠商的支持，提供硬體與技術支援，當然最終成果也會是以自由軟體的形式釋出。選擇在四月一日公開，一方面是基於對"Orz"的戲謔，另一方面來說，&lt;span&gt;企盼在台灣透過自由軟體，為硬體帶來新的生命，如此的行為&lt;/span&gt;可能會被視為愚人之舉，所以就待時間來考驗我們。我們歡迎各方面的朋友加入，不見得要對技術領域有深入掌握者，事實上，對於美工 (logo / icon / splash screen)、文字素描、溝通協商 (OrzLab常有與硬體製造商洽談的機會) 有能力者，也相當歡迎。至於學生族群，如能與OrzLab合作，可說是兼具學習技術、培養技能，並學以致用的好機會。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;聯絡資訊：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;協調人暨聯絡人：Jim Huang (黃敬群 / jserv)，透過email取得聯繫：jserv.tw (at) gmail (dot) com&lt;/li&gt;&lt;li&gt;討論群組：&lt;a href="http://groups.google.com/group/orzlab"&gt;http://groups.google.com/group/orzlab&lt;/a&gt;&lt;/li&gt;&lt;li&gt;IRC線上討論：#orzlab (FreeNode.net)，採用UTF-8編碼&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-3122163385783432796?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/3122163385783432796/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=3122163385783432796' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3122163385783432796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/3122163385783432796'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/04/orzlab.html' title='OrzLab正式公開'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-5985868426038218587</id><published>2007-03-31T23:31:00.000+08:00</published><updated>2007-05-04T01:22:23.848+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>遇上OpenMoko</title><content type='html'>週五晚上當我正在tune某個裝置時，收到一則訊息，提及與&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;創辦人&lt;a href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt;聚餐的機會，於是週六就邀約Jollen、Mat，以及FourDollars一同前往。關於OpenMoko的報導不少，不過寫得最生動的大概就是Jollen兄的blog：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.jollen.org/blog/2006/11/mobile_20_openmoko_linux_smart.html"&gt;「Mobile 2.0 的思考」與第一隻採用 OpenMoko 的 Linux Smartphone&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jollen.org/blog/2007/01/openmoko_announce.html"&gt;OpenMoko 準備舉旗進攻了&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jollen.org/blog/2007/02/openmoko_announce.html"&gt;OpenMoko 釋出原始碼了&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;同時也是FIC (大眾電腦集團) Product Manager的&lt;a href="http://moss-pultz.com/"&gt;Sean Moss-Pultz&lt;/a&gt;，得與同仁面對內外不同的意見，對於這個略有年紀的企業來說，實在是種挑戰。而我有幸在這面對面的對話中，讓原本在我心中的疑惑，透過詳盡的闡述與互動，逐漸獲得解答。其實可參閱mailing-list上的討論"&lt;a href="http://lists.openmoko.org/pipermail/community/2007-February/003885.html"&gt;New site about open mobiles: ideas and suggestions&lt;/a&gt;"，這可搭配&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;於FOSDEM 2007的演講："&lt;a href="http://www.fosdem.org/2007/schedule/events/embedded_openmoko"&gt;OpenMoko&lt;/a&gt;"，在台灣大學做了一份錄影存檔："&lt;a href="http://mdk.linux.org.tw/%7Ejserv/openmoko/OpenMoko_speech_FOSDEM2007_video.avi"&gt;OpenMoko_speech_FOSDEM2007_video.avi&lt;/a&gt;" (342Mb)。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;作為開放原始碼的手機，有許多堅持，首先就是強調kernel-space的部份必須依據Linux kernel的授權方式，採用GPLv2，這無可避免會造成尋求硬體供應商的困難，但開發團隊正試圖克服。再來就是依據社群需求去制定產品規格，三月底的GTA001就是在初步雛型發表後，廣泛接受各方意見，逐步調整的設計，其SVN版本控制系統也可見到對應的軟體建設。依據wiki指出，主要的軟體項目有：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;boot loader - &lt;a href="http://wiki.openmoko.org/wiki/U-boot" title="U-boot"&gt;u-boot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;kernel - Linux &lt;a href="http://wiki.openmoko.org/wiki/Kernel" title="Kernel"&gt;kernel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.openmoko.org/wiki/Gsmd" title="Gsmd"&gt;gsmd&lt;/a&gt; - 管理GSM modem的GSM背景程式&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.openmoko.org/wiki/Gpsd" title="Gpsd"&gt;gpsd&lt;/a&gt; - AGPS (Assisted GPS) 背景程式&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.openmoko.org/wiki/OpenMoko" title="OpenMoko"&gt;OpenMoko&lt;/a&gt; - The OpenMoko distribution&lt;/li&gt;&lt;/ul&gt;其中&lt;a href="http://wiki.openmoko.org/wiki/OpenMoko" title="OpenMoko"&gt;OpenMoko&lt;/a&gt; distribution又分成若干application與library，而UI的架構部份主要&lt;a href="http://openedhand.com/"&gt;OpenedHand&lt;/a&gt;協助開發，後者協助Nokia成功推出Nokia 770系列的產品，而在&lt;a href="http://wiki.openmoko.org/wiki/OpenMoko" title="OpenMoko"&gt;OpenMoko&lt;/a&gt;現在的實做也看出高水準的表現，其LCD panel大膽採用VGA 640x480解析度，顯示頗為細緻，但這也衍生對於多國語文的技術挑戰：輸出與輸入法的支援。&lt;br /&gt;&lt;br /&gt;過去顯示的解析度小，所以可以直接用點陣字或者所謂的"pre-rendered font"，但是一旦解析度提昇時，就不可能只用兩三套固定尺寸的字體來滿足，勢必需要TrueType的向量字型，不過，這對於這類手持式裝置來說，不僅佔用大量的儲存空間，還需要複雜的運算，也得消耗寶貴的記憶體空間，長期來說，頻繁的儲存空間存取，將可能降低使用年限。稍早於「&lt;a href="http://orzlab.blogspot.com/2007/03/blog-post_20.html"&gt;紀錄：可攜式造字引擎專利釋放暨成果發表會&lt;/a&gt;」特別強調的技術困境，既然&lt;a href="http://www.ksana.tw/" class="external text" title="http://www.ksana.tw/" rel="nofollow"&gt;剎那搜尋工坊&lt;/a&gt; (前身為&lt;a href="http://www.eforth.com.tw/" class="external text" title="http://www.eforth.com.tw/" rel="nofollow"&gt;易符智慧科技&lt;/a&gt;)已相當有誠意地釋放專利，並提供社群相關的自由軟體實做與部件字庫，這就是一個極佳的契機，OrzLab的成員在參與自由軟體開發的過程中，奠定對於多國語文處理的能力，所以技術上的分析與實做也已經展開，&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;可說是極佳的技術展現平台，希望近期即可展現這部份的成果。&lt;br /&gt;&lt;br /&gt;當然，這次的會晤有尚有許多值得一書的討論，就留在日後詳談了，我也從這個困難度極高、周旋於理想與現實考驗的&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;計畫中，獲得莫大的鼓舞，也希望OrzLab能秉持這些精神，為台灣的硬體創造出更大的價值。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-5985868426038218587?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/5985868426038218587/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=5985868426038218587' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5985868426038218587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5985868426038218587'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/openmoko.html' title='遇上OpenMoko'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8544843542229162918</id><published>2007-03-20T18:58:00.000+08:00</published><updated>2007-05-04T01:22:45.473+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='ucimf'/><title type='text'>UCIMF正式成為OrzLab專案項目</title><content type='html'>日前&lt;a href="http://www.blogger.com/profile/07251024289001831997"&gt;Mat&lt;/a&gt;完成了OrzLab的paper work，自此，&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;正式成為OrzLab的專案項目之一。&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;是個創新的計畫，引入IIIMF與OpenVanilla輸入法架構 (未來會有SCIM) 的終端機輸入環境，但不受限於輸入法，事實上，在開發的過程中，已經補足Unicode輸出顯示能力、視窗管理，以及多種字型描繪機制。以下是&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;的授權宣告：&lt;br /&gt;&lt;blockquote&gt;/*                                                                                              &lt;br /&gt;* UCIMF - Unicode Console InputMethod Framework&lt;br /&gt;*&lt;br /&gt;* Copyright (c) 2006-2007 Open RazzmatazZ Laboratory (OrzLab)&lt;br /&gt;* Maintained by Chun-Yu Lee (Mat) &lt;matlinuxer2@gmail.com&gt;&lt;br /&gt;*&lt;br /&gt;* This program is free software; you can redistribute it and/or modify&lt;br /&gt;* it under the terms of the GNU General Public License as published by&lt;br /&gt;* the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;* (at your option) any later version.&lt;br /&gt;*/&lt;/matlinuxer2@gmail.com&gt;&lt;/blockquote&gt;隨著資訊交換的多元化，在我們的觀察，嵌入式系統的多國語文支援有提昇的趨勢，又因為嵌入系統不僅得考慮到效能，也得將成本與穩定性列入考量，所以往往受制於有限的軟體建設。&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;則帶來一個新的途徑，得以在低成本需求的Embedded Linux/BSD上，提供豐富的多國語文處理能力，涵蓋顯示、輸入法，未來也會有印表的支援，更重要的是，符合Unicode標準，所以可消除許多相容性議題。&lt;br /&gt;&lt;br /&gt;另外，考量到&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;應用的多元性，其IMF (Input Method Framework) 的介面部份採用BSD License釋出，這意謂著其上的輸入法引擎不僅可抽換，也可採用非GPL授權，去除商業應用的困擾。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8544843542229162918?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8544843542229162918/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8544843542229162918' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8544843542229162918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8544843542229162918'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/ucimforzlab.html' title='UCIMF正式成為OrzLab專案項目'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-7685921376579621294</id><published>2007-03-20T14:31:00.000+08:00</published><updated>2007-05-04T01:23:06.495+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='font'/><category scheme='http://www.blogger.com/atom/ns#' term='zhongwen'/><title type='text'>紀錄：可攜式造字引擎專利釋放暨成果發表會</title><content type='html'>稍早提及&lt;a href="http://orzlab.blogspot.com/2007/03/blog-post.html"&gt;可攜式造字引擎專利釋放暨成果發表會&lt;/a&gt;，日前已在中研院資訊所圓滿落幕，雖然許多技術性與實用性的議題尚待克服，但&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;a href="http://www.ksana.tw/" class="external text" title="http://www.ksana.tw/" rel="nofollow"&gt;剎那搜尋工坊&lt;/a&gt;這項釋放專利的創舉，可望驅使漢字與資訊的整合邁入新的契機。OrzLab也順利展示內建動態組字技術的Linux mobile phone概念機，未來將逐步釋出其原始程式碼。&lt;br /&gt;&lt;br /&gt;議程方面，自下午三點，由&lt;a href="http://www.ksana.tw/" class="external text" title="http://www.ksana.tw/" rel="nofollow"&gt;剎那搜尋工坊&lt;/a&gt; (前身為&lt;a href="http://www.eforth.com.tw/" class="external text" title="http://www.eforth.com.tw/" rel="nofollow"&gt;易符智慧科技&lt;/a&gt;) 的大家長陳昌江先生在「&lt;a href="http://zhongwen.tw/wiki/index.php/%E5%8F%AF%E6%94%9C%E5%BC%8F%E9%80%A0%E5%AD%97%E5%BC%95%E6%93%8E%E5%B0%88%E5%88%A9%E9%87%8B%E6%94%BE%E6%97%A2%E6%88%90%E6%9E%9C%E7%99%BC%E8%A1%A8%E6%9C%83/%E5%B0%88%E5%88%A9%E9%87%8B%E6%94%BE%E7%8F%BE%E5%A0%B4%E5%85%AC%E5%91%8A" title="可攜式造字引擎專利釋放既成果發表會/專利釋放現場公告"&gt;專利釋放現場公告&lt;/a&gt;」揭露「&lt;a href="http://announcement.zhongwen.tw/" class="external text" title="http://announcement.zhongwen.tw/" rel="nofollow"&gt;可攜式造字引擎專利公眾授權條款書&lt;/a&gt;」，並有存證信函與拍照留影，為漢字資訊處理界劃下新的一頁，自此，此類動態組字技術將不再受限於特定單位，而能以自由軟體之形式，廣泛流通於新的應用中，感謝與會的貴賓與我們見證這一刻。葉健欣先生 (yap，前朱邦復實驗室成員) 則在「&lt;a href="http://zhongwen.tw/wiki/index.php/%E5%8F%AF%E6%94%9C%E5%BC%8F%E9%80%A0%E5%AD%97%E5%BC%95%E6%93%8E%E5%B0%88%E5%88%A9%E9%87%8B%E6%94%BE%E6%97%A2%E6%88%90%E6%9E%9C%E7%99%BC%E8%A1%A8%E6%9C%83/%E7%B5%84%E5%AD%97%E7%A0%94%E7%A9%B6%E7%9A%84%E7%B0%A1%E5%8F%B2" title="可攜式造字引擎專利釋放既成果發表會/組字研究的簡史"&gt;組字研究的簡史&lt;/a&gt;」給予清晰的介紹，提及何以漢字系統會面臨窘境、古文訓詁的難題、過去幾十年內相關漢字技術的變遷，以及從&lt;a href="http://www.eforth.com.tw/" class="external text" title="http://www.eforth.com.tw/" rel="nofollow"&gt;易符智慧科技&lt;/a&gt;至&lt;a href="http://www.ksana.tw/" class="external text" title="http://www.ksana.tw/" rel="nofollow"&gt;剎那搜尋工坊&lt;/a&gt;所面臨的挑戰與技術應用的轉變。&lt;br /&gt;&lt;br /&gt;張正一 (魔法設計師) 隨後給予精彩的「&lt;a href="http://zhongwen.tw/wiki/index.php/%E5%8F%AF%E6%94%9C%E5%BC%8F%E9%80%A0%E5%AD%97%E5%BC%95%E6%93%8E%E5%B0%88%E5%88%A9%E9%87%8B%E6%94%BE%E6%97%A2%E6%88%90%E6%9E%9C%E7%99%BC%E8%A1%A8%E6%9C%83/%E7%B5%84%E5%AD%97%E6%A8%99%E6%BA%96%E8%88%87%E8%A7%80%E5%BF%B5%E8%A7%A3%E8%AA%AA" title="可攜式造字引擎專利釋放既成果發表會/組字標準與觀念解說"&gt;組字標準與觀念解說&lt;/a&gt;」議程，先由昔日「萬碼奔騰」的時代點題，雖然今日我們已清楚知曉Unicode標準的重要性，但實務應用上難免有所不足，其中以漢字缺字為最，為此，Unicode 3.0以降， 引入新的IDS與IDC機制 (&lt;span style=""&gt;Ideographic Description Sequence/Character)&lt;/span&gt;，&lt;a href="http://www.ksana.tw/" class="external text" title="http://www.ksana.tw/" rel="nofollow"&gt;剎那搜尋工坊&lt;/a&gt;則以此為基礎並整合以部件為基礎的動態組字技術，張正一先生則率先撰寫符合自由軟體規範的組字示範程式，在議程中發表與展示，藉此為與會的貴賓建立概念。&lt;br /&gt;&lt;br /&gt;由於專利釋放之舉也需要配套的自由軟體社群支援，才得以彰顯價值，所以本會也邀請到來自中研院資訊所的林誠夏與胡崇偉 (marr) 探討授權與專案開發的須知，詳見「&lt;a href="http://zhongwen.tw/wiki/index.php/%E5%8F%AF%E6%94%9C%E5%BC%8F%E9%80%A0%E5%AD%97%E5%BC%95%E6%93%8E%E5%B0%88%E5%88%A9%E9%87%8B%E6%94%BE%E6%97%A2%E6%88%90%E6%9E%9C%E7%99%BC%E8%A1%A8%E6%9C%83/%E5%85%AC%E7%9C%BE%E6%8E%88%E6%AC%8A%E6%A2%9D%E6%AC%BE%E7%B0%A1%E4%BB%8B" title="可攜式造字引擎專利釋放既成果發表會/公眾授權條款簡介"&gt;公眾授權條款簡介&lt;/a&gt;」與「&lt;a href="http://zhongwen.tw/wiki/index.php/%E5%8F%AF%E6%94%9C%E5%BC%8F%E9%80%A0%E5%AD%97%E5%BC%95%E6%93%8E%E5%B0%88%E5%88%A9%E9%87%8B%E6%94%BE%E6%97%A2%E6%88%90%E6%9E%9C%E7%99%BC%E8%A1%A8%E6%9C%83/%E9%96%8B%E6%BA%90%E8%A8%88%E7%95%AB%E8%A6%81%E5%A6%82%E4%BD%95%E5%8F%83%E8%88%87" title="可攜式造字引擎專利釋放既成果發表會/開源計畫要如何參與"&gt;開源計畫要如何參與&lt;/a&gt;」。最後是OrzLab的議程「&lt;a href="http://zhongwen.tw/wiki/index.php/%E5%8F%AF%E6%94%9C%E5%BC%8F%E9%80%A0%E5%AD%97%E5%BC%95%E6%93%8E%E5%B0%88%E5%88%A9%E9%87%8B%E6%94%BE%E6%97%A2%E6%88%90%E6%9E%9C%E7%99%BC%E8%A1%A8%E6%9C%83/%E6%87%89%E7%94%A8%E5%8B%95%E6%85%8B%E7%B5%84%E5%AD%97%E6%96%BC%E6%89%8B%E6%8C%81%E5%BC%8F%E8%A3%9D%E7%BD%AE" title="可攜式造字引擎專利釋放既成果發表會/應用動態組字於手持式裝置"&gt;應用動態組字於手持式裝置&lt;/a&gt;」，首先分析手機一類的移動裝置在成本與多國語文上面臨的難題，再者是來自裝置端與後端的訊息交換議題，再深入探究系統設計，可發現以往的點陣字系統是一大衝擊，不僅增加成本也造成潛在的裝置壽命問題，同時輸出與輸入系統彼此是獨立的。OrzLab引入全向量繪圖系統，試圖克服上述技術難題，目前已經有高效能且低儲存需求的ASCII字型引擎，正銜接Unicode IDS需求，在議程尾聲，展示了一款內建動態組字技術的Linux mobile phone概念機，得以在QCIF解析度 (176x220) 迅速呈現全螢幕漢字輸出。&lt;br /&gt;&lt;br /&gt;由於與會賢達來自古文研究、電子產業、出版業、佛經文化、文書處理等領域，所以議程後的討論時間中，激盪了深入的技術與人文性思考。首先是&lt;a href="http://www.stone.com.tw/"&gt;漢書軟體&lt;/a&gt;作者施得勝先生提問：「動態組字美觀度可否精進？」yap的回應是：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;組字七萬字約佔1MB ，而 TTF 要40~50MB 。美觀是用空間和時間來換取的&lt;/li&gt;&lt;li&gt;常用字只有兩三千字，這些字沒有必要動態組出來，使用既有的方式即可&lt;/li&gt;&lt;li&gt;動態組字使用的場合為呈現系統不存在的字，此時，組字再醜，也遠比空白或亂碼來得好&lt;/li&gt;&lt;/ul&gt;另一則是關於自由軟體授權的議題，這由中研院資訊所的葛冬梅小姐給予簡要的分析。&lt;span class="mw-headline"&gt;臺灣師範大學國文系亓婷婷教授則提出&lt;/span&gt;美觀度、手寫辨識與組字的整合等問題，就動態組字本質來說，形同一個可提供無窮字形的字型檔，與輸入法沒有關連，亦即可沿用任何既有的輸入法，來輸入構形部件，當然，對於手寫辨識來說，將會有潛在的優勢，因為已經預先作部件的分析。&lt;span class="mw-headline"&gt;&lt;br /&gt;&lt;br /&gt;東海大學資管系林正偉教授&lt;/span&gt;提出澄清專利涵蓋的議題，陳昌江先生則重申專利字號與適用範圍，以茲與眾多漢字學者研究區別，這也引發關於動態組字需要唯一或標準表示的討論，以「好」這個中文字為例，其部件為左邊的「女」與「子」，再行左右組合，但對複雜的字來說，構成方式不唯一，Unicode IDS只是探究其表示法，該如何確認有一致的交換性？多方討論的結果來看，&lt;a href="http://www.ksana.tw/" class="external text" title="http://www.ksana.tw/" rel="nofollow"&gt;剎那搜尋工坊&lt;/a&gt;表示會另行規範，但不在本研討會的議程中。最後是&lt;span class="mw-headline"&gt;Mat (&lt;a href="http://ucimf.csie.net/" class="external text" title="http://ucimf.csie.net/" rel="nofollow"&gt;UCIMF&lt;/a&gt;作者) 就實務上詢問&lt;/span&gt;動態組字能否與Unicode相容，基本上只要依據Unicode IDS作對應，即可符合相容性，這也意味著，OrzLab未來可能從Unicode console/terminal與FreeType整合的方式，切入動態組字技術的應用。&lt;br /&gt;&lt;br /&gt;會後就是BoF時間，也激盪了許多想法，相關的自由軟體實做與部件字庫也會在近日釋出，所以，儘管三十年前謝清俊教授等人就提出構字式的具體研究，但真正能夠讓成果累積並且跨入電腦以外的項目，這是個起點，但我們終於跨出了。&lt;br /&gt;&lt;br /&gt;相關資訊：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://zhongwen.tw/" class="external text" title="http://zhongwen.tw/" rel="nofollow"&gt;正體中文網&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ksana.tw/" class="external text" title="http://www.ksana.tw/" rel="nofollow"&gt;剎那搜尋工坊&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://magicdesign.blogspot.com/search/label/%E6%BC%A2%E5%AD%97%E7%A0%94%E7%A9%B6"&gt;漢字研究&lt;/a&gt; (魔法設計師)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-7685921376579621294?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/7685921376579621294/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=7685921376579621294' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7685921376579621294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7685921376579621294'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/blog-post_20.html' title='紀錄：可攜式造字引擎專利釋放暨成果發表會'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1396502755454385595</id><published>2007-03-15T20:09:00.000+08:00</published><updated>2007-05-04T01:23:25.968+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='tex'/><title type='text'>Unicode版のTeX</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A-c5PQfUpGQ/Rfk6ls27eKI/AAAAAAAAABE/rMQlwrVtInE/s1600-h/demo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_A-c5PQfUpGQ/Rfk6ls27eKI/AAAAAAAAABE/rMQlwrVtInE/s400/demo.jpg" alt="" id="BLOGGER_PHOTO_ID_5042125677189101730" border="0" /&gt;&lt;/a&gt;TeX 是一套重量級的排版軟體，目前在國際流通的論文，大半是以TeX 所製成，其文件品質有目共睹。XeTeX 是Unicode版的TeX，具有功能特色如下：&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;使用FreeType和Fontconfig的方式讀取系統字型&lt;/span&gt;，直接支援True Type和OpenType字型，不用再作繁複的設定。引入ImageMagick支援，可&lt;span style="font-weight: bold;"&gt;直接套用JPG、PNG、BMP的圖檔&lt;/span&gt;，大幅增加引圖的彈性。語法上，繼承TeX和LaTeX的語法，而&lt;span style="font-weight: bold;"&gt;不再用\usepackage形式上來處理CJK文字&lt;/span&gt;，文件相容性高。&lt;br /&gt;&lt;/blockquote&gt;目前XeTeX的使用環境以Mac為主，不過目前已有Linux和Windows的支援。圖上所顯示的正是在Gentoo Linux上所製成文件。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1396502755454385595?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1396502755454385595/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1396502755454385595' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1396502755454385595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1396502755454385595'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/unicodetex.html' title='Unicode版のTeX'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A-c5PQfUpGQ/Rfk6ls27eKI/AAAAAAAAABE/rMQlwrVtInE/s72-c/demo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-201390835980243619</id><published>2007-03-15T10:18:00.000+08:00</published><updated>2007-05-04T01:24:43.715+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='user-mode-linux'/><title type='text'>視覺化系統模擬與偵錯</title><content type='html'>稍早撰寫短文「透過 User-Mode-Linux 來學習核心設計」(&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001871.html"&gt;Part I&lt;/a&gt; / &lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001872.html"&gt;Part II&lt;/a&gt;)，隨後在「&lt;a href="http://orzlab.blogspot.com/2007/03/intelmarwell-pxa27x.html"&gt;Intel/Marvell PXA27x的系統模擬&lt;/a&gt;」提出OrzLab所實做系統層面的模擬環境 (以&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;計畫的qemu-system-arm為基礎)，暫定名稱為PXAemu，這些基礎建設對於嵌入式系統開發都有其價值，諸如system prototype、進階分析，以及快速軟體開發，未來我們會增加多種硬體平台的模擬。除了系統模擬器外，視覺化的呈現與偵錯能力也相當重要，在今年一月份，已經成功整合&lt;a href="http://user-mode-linux.sourceforge.net/"&gt;User-Mode Linux&lt;/a&gt;與&lt;a href="http://sources.redhat.com/insight/"&gt;Insight/GDB&lt;/a&gt;，大略的呈現如下圖：&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rg51jJqZggI/AAAAAAAAABc/zVkICJNXxKA/s1600-h/uml-insight.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/Rg51jJqZggI/AAAAAAAAABc/zVkICJNXxKA/s400/uml-insight.png" alt="" id="BLOGGER_PHOTO_ID_5048101479078527490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;當時開發的平台是IA32，引入&lt;a href="http://user-mode-linux.sourceforge.net/"&gt;User-Mode Linux&lt;/a&gt;的優點是可快速分析與平台無關的Linux kernel機制，諸如記憶體管理、排程，以及網路堆疊部份。另外，上週於台中一中舉辦的「深入淺出 Hello World 」系列演講第三場，已經公開展示PXAemu與gdb整合的操作，可相當便利的進行分析與偵錯，其運作畫面如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XYo3WYqTnPk/RfizjxA7M2I/AAAAAAAAABU/TmR0y6VgNxs/s1600-h/gdb-session-with-qemu.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_XYo3WYqTnPk/RfizjxA7M2I/AAAAAAAAABU/TmR0y6VgNxs/s400/gdb-session-with-qemu.png" alt="" id="BLOGGER_PHOTO_ID_5041977209875280738" border="0" /&gt;&lt;/a&gt;以上展示透過Remote GDB連線，設定中斷點於sys_execve函式，這將會觸發於首次由kernel-mode切入user-mode的時機，也就是/sbin/init程序執行之時，當然，gdb強大的命令與功能可以輔助來對kernel作更深入的追蹤，必要時也可改變其執行時期的行為，稍後我將會試著整合PXAemu與&lt;a href="http://sources.redhat.com/insight/"&gt;Insight/GDB&lt;/a&gt;。因為&lt;a href="http://sources.redhat.com/insight/"&gt;Insight/GDB&lt;/a&gt;內建的Tcl/Tk版本老舊，在Linux下對於字型處理不雅觀且不當的XIM處理也容易讓系統崩潰，所以我動手補強並加入Xft的支援，可自行&lt;a href="http://jserv.sayya.org/embedded/gdb/"&gt;取得patch&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;除了以上透過既有軟體組合的視覺化環境外，我正在進行一個全新的項目，以Qt4作為GUI library (盡可能減少Win32與Linux平台移植的技術議題)，為PXAemu開發frontend，也著手開發相容於GDB Machine Interface的GUI Debugger，如此一來，就可以輕易更換GNU Toolchain，即使是商業版本的MontaVista &lt;span style="color: rgb(0, 0, 0);"&gt;Consumer Electronics Edition&lt;/span&gt; (mvlcee) 也得以使用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-201390835980243619?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/201390835980243619/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=201390835980243619' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/201390835980243619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/201390835980243619'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/blog-post_15.html' title='視覺化系統模擬與偵錯'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XYo3WYqTnPk/Rg51jJqZggI/AAAAAAAAABc/zVkICJNXxKA/s72-c/uml-insight.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4599032862947654642</id><published>2007-03-14T00:20:00.000+08:00</published><updated>2007-05-04T01:25:03.834+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='font'/><category scheme='http://www.blogger.com/atom/ns#' term='zhongwen'/><title type='text'>可攜式造字引擎專利釋放暨成果發表會</title><content type='html'>本週二下午至中研院資訊所，參與「&lt;a href="http://www.zhongwen.tw/wiki/index.php/%E5%8F%AF%E6%94%9C%E5%BC%8F%E9%80%A0%E5%AD%97%E5%BC%95%E6%93%8E%E5%B0%88%E5%88%A9%E9%87%8B%E6%94%BE%E6%97%A2%E6%88%90%E6%9E%9C%E7%99%BC%E8%A1%A8%E6%9C%83"&gt;可攜式造字引擎專利釋放既成果發表會&lt;/a&gt;」的行前會，確立許多細節，新聞稿已出爐，摘錄如下：&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;3月17日剎那搜尋工坊將假中央研究院舉行可攜式造字引擎專利釋放暨成果發表會&lt;/b&gt; &lt;/p&gt;&lt;p&gt;對於出版、文史研究、教育、甚至科技行業，漢字重重的缺字問題始終是永遠的痛，在經歷30餘年產、官、學的努力下，終於萌生全面性解決方案－&lt;b&gt;部件組字&lt;/b&gt;。 &lt;/p&gt;&lt;p&gt;部件組字在邁向成熟實用化的道路上，剎那搜尋工坊扮演了相當的角色。過去專注於開發漢字搜尋技術，也鑽研缺字問題的全面解決之道，在吸納中央研究院謝清俊教授、朱邦復先生等等諸前人的成果後，研發出「可攜式造字引擎」。該技術內涵為基於&lt;b&gt;漢字字形本質&lt;/b&gt;的動態組字，使跳脫以往人為一字一碼的武斷，回復漢字本有的活性架構。不但解決了缺字困難，也同時相容於unicode標準，為一條無痛的漢字數位進化之路。 &lt;/p&gt;&lt;p&gt;剎那搜尋工坊鑑於此重大數位漢字基礎技術，乃「站在巨人肩膀上」的成果，為謀求對社會大眾的最大利益，遂藉此會公示將此專利技術無償開放公眾運用，歡迎各界使用與繼續發揚。 &lt;/p&gt;會中將說明本技術的沿革簡史、組字的觀念、以及如何參與發展的作法。&lt;/blockquote&gt;OrzLab也提供了十五分鐘的介紹「應用動態組字於手持式裝置」，延續之前blog「&lt;a href="http://orzlab.blogspot.com/2007/03/embedded.html"&gt;動態組字技術於Embedded領域&lt;/a&gt;」的觀點，將以實際的案例探討嵌入式系統領域如何由此受益，相當感謝剎那工作坊釋出專利，經過多次的討論後，也看到許多機會，作為華人的工程背景人員，我們有相當大的伸展舞台，同時開放的胸襟加上open source，所激盪出的變革更值得我們關注。&lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline"&gt;&lt;br /&gt;&lt;br /&gt;舉辦單位&lt;/span&gt;&lt;/span&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt; 主辦：&lt;a href="http://www.ksana.tw/" class="external text" title="http://www.ksana.tw/" rel="nofollow"&gt;剎那搜尋工坊&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt; 協辦：中央研究院&lt;a href="http://www.openfoundry.org/" class="external text" title="http://www.openfoundry.org/" rel="nofollow"&gt;自由軟體鑄造場&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt; 贊助：資訊工業策進會&lt;a href="http://www.itmag.org.tw/" class="external text" title="http://www.itmag.org.tw/" rel="nofollow"&gt;雜誌社&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt; &lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline"&gt;時間地點&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;3/17/2007 下午3:00~5:00 中央研究院資訊科學研究所 新館 101會議室&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4599032862947654642?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4599032862947654642/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4599032862947654642' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4599032862947654642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4599032862947654642'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/blog-post.html' title='可攜式造字引擎專利釋放暨成果發表會'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2631011413722241074</id><published>2007-03-13T23:28:00.000+08:00</published><updated>2007-05-04T01:25:48.628+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>lwkhttpd : Lightweight kHTTPd for Linux Kernel</title><content type='html'>昨天在SourceForge.net註冊了新專案&lt;a href="http://sourceforge.net/projects/ajaxembed"&gt;Ajax/Embedded&lt;/a&gt;，做了必要的設定後，開始將之前Proof-of-Concept的程式碼check-in到SVN中。今天開放的項目是子計畫：lwkhttpd，也就是 "Lightweight kHTTPd for Linux Kernel" 之意，以下是該子計畫簡介：&lt;br /&gt;&lt;blockquote&gt;lwkhttpd : Lightweight kHTTPd for Linux Kernel 2.6 series&lt;br /&gt;&lt;br /&gt;Copyright (c) 2007 Open RazzmatazZ Laboratory (OrzLab).&lt;br /&gt;Maintained by Jim Huang&lt;br /&gt;Development page: http://sourceforge.net/projects/ajaxembed&lt;br /&gt;&lt;br /&gt;[-] Overview&lt;br /&gt;&lt;br /&gt;Ajax/Embedded is an experimental design dedicated to perform Ajax applications on embedded systems, such as Wirelss routers. To fit the web traffic on these devices, lwkhttpd is developed as the full kernel-mode HTTP daemon for Linux kernel 2.6 series. Besides handling static requests, lwkhttpd redirects dynamic requests to the user-mode webserver (used for Ajax engine) for extensibility.&lt;/blockquote&gt;儘管Web 2.0並未帶來相當革命性的技術移轉，但我們可以看到Web engine卻有調整與最佳化的空間。在&lt;a href="http://www.lighttpd.net/"&gt;lighttpd&lt;/a&gt;開發者的blog有一篇名為 "&lt;a href="http://blog.lighttpd.net/articles/2006/12/19/faster-web-2-0"&gt;Faster Web 2.0&lt;/a&gt;" 的文章，提出三個方向對Web 2.0應用程式提供更好的效能：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Large Response content&lt;/li&gt;&lt;li&gt;Pre-generating content&lt;/li&gt;&lt;li&gt;Read Ahead&lt;/li&gt;&lt;/ul&gt;簡單來說，&lt;a href="http://www.fastcgi.com/"&gt;FastCGI&lt;/a&gt;的執行模型雖然對&lt;a href="http://www.openwebmail.org/"&gt;OpenWebMail&lt;/a&gt;一類的Perl-based Web application有相當程度的效能提昇，但對於Ajax導向的模式來說，還是沒有切中問題核心。&lt;a href="http://sourceforge.net/projects/ajaxembed"&gt;Ajax/Embedded&lt;/a&gt;底層提供如此一個kernel-mode HTTP daemon，以處理大量的static data，同時也提供 redirect to user-space的機制，讓動態網頁資料 (主要是XMLHttpRequest) 得以「轉包」到我們的Ajax engine，在這之上有豐富的C/C++ Web UI widget set可用。整體效益就如之前blog「&lt;a href="http://orzlab.blogspot.com/2007/03/ajaxembedded.html"&gt;Ajax/Embedded&lt;/a&gt;」所提，得以建構兼具效能、功能，以及安全性的native Web framework。&lt;br /&gt;&lt;br /&gt;對了，&lt;a href="http://sourceforge.net/projects/ajaxembed"&gt;Ajax/Embedded&lt;/a&gt;計畫項目會參加今年的Coding Jam 2007活動，已提交簡要的&lt;a href="http://taipedia.selfip.info/mediawiki/index.php/TaiwanCodeJam#Proposals"&gt;Proposal&lt;/a&gt;到&lt;a href="http://taipedia.selfip.info/mediawiki/index.php/TaiwanCodeJam"&gt;TaiwanCodeJam&lt;/a&gt;的wiki page中。希望能快點拿到我們的參考硬體，ARM-based的硬體已開始運作，現在要試試Wifi相關的部份，開發的過程中讓我發現很有趣的現象：現在的computing model逐漸「M化」，不僅是mobile化，也是朝向兩個極端的演化，就&lt;a href="http://sourceforge.net/projects/ajaxembed"&gt;Ajax/Embedded&lt;/a&gt;專案的適用範疇來看，事實上就是「client比server快上許多」的模式，同時server-side產生相對少量的資料，讓client-side盡情去描繪多采多姿的內容，也對使用者互動方面有了更多的需求。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2631011413722241074?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2631011413722241074/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2631011413722241074' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2631011413722241074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2631011413722241074'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/lwkhttpd-lightweight-khttpd-for-linux.html' title='lwkhttpd : Lightweight kHTTPd for Linux Kernel'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-376606462293308334</id><published>2007-03-13T00:57:00.000+08:00</published><updated>2007-05-04T01:26:18.980+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ports'/><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='ucimf'/><category scheme='http://www.blogger.com/atom/ns#' term='openvanilla'/><title type='text'>OpenVanilla套件打包二三事</title><content type='html'>在寫UCIMF的趨使下，對OpenVanilla的安裝方法並不陌生。雖然手動安裝不難，但總是希望能直接用套件的方式來安裝程式和模組。繼前陣子包了給Debian的實驗包之後，一直也很想試Gentoo的打包。經過幾天的嘗試，幸運的得到初步的成果。一開始的時候，煩惱要怎麼指定程式碼的位置，一般都是給一個tar.gz的URL然後下載解壓縮。不過OpenVanilla主要是用SVN作為存放的方式，所以行不通，於是就暫時寄望在Tarball出現上。這時候剛好遇到psilotum秀了FreeBSD上的OpenVanilla的Ports給我看，才發現Ports已經有人包好這些套件，我便想，Portage上也有類似的工具才對。有了靈感後，很快就找到Portage對於SVN這類的處理方式了。主要的作法是，先 &lt;span style="font-weight: bold;"&gt;inherit&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; subversion &lt;/span&gt;這個eclass, 然後再用&lt;span style="font-weight: bold;"&gt;ESVN_REPO_URI&lt;/span&gt;的參數來指定位置。遇到比較分散的檔案，則可以改寫&lt;span style="font-weight: bold;"&gt;src_unpack()&lt;/span&gt;以符合需求。不熟悉的地方則可以先參考已經寫好的ebuild，像是&lt;span style="font-weight: bold;"&gt;uim-svn&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;回顧這兩次作Debian和Gentoo的Package的經驗，發現製作原理有很多共同的地方。作Debian的包裝時，發現整個OpenVanilla Modules的目錄只要設好一個套件產生的規則，就能把整個目錄下所有的模組都打包成個別的套件。因此原本以為要作10幾個重複的工作，居然一次就作完了。這讓我印象非常非常的好。能在套件的維護者只需要維護一個Source Package的情況下，產生許多Sub Binary Package供使用者選擇，是極大的優點。而Gentoo特別的地方(也是FreeBSD Ports的特色)，則是直接抓源本的原始碼來編譯的風格。這個風格的好處是在我開始作UCIMF之後才慢慢有感覺的。因為我體會到，對許多還在發展中的專案，維護一份Tarball是一件很困擾的事。最主要的原因是，許多地方都還在增減修補，很難取捨出一個點作為一個穩定的釋出，而要等套件的製作，更是一個漫長的過程。這時候能夠透過CVS、SVN這一類的方式取得原始碼來編譯，對許多發展中的專案來說，真的是一個很棒的特色。&lt;br /&gt;&lt;br /&gt;從一開始的User，到寫專案後學了一些Developer東西，在今天作了這些東西之後，感覺又多了一個Packager的角色。對我來說，在這三者的使用情境中轉換，並不是那麼方便。是不是有個套件機制可以將這三者融合在一起呢? 像是我今天想改一個程式的功能，我能很方便的取得源本的原始碼，在本機修改後，能直接套用在套件裡作編譯和安裝，完成後並能輕易的釋出和分享。今天看來，相關的環境條件都蠻成熟了，說不定已經有這樣子的整合式套件系統架構存在也說不定。&lt;br /&gt;&lt;br /&gt;或許在可見的將來，這些開發平台的整合，也能像Wiki對文件發展所帶來2.0的影響一樣，提供開發者一個互動性更高、更流暢的開發環境。&lt;br /&gt;&lt;br /&gt;Package 2.0 ? 嗯...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-376606462293308334?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/376606462293308334/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=376606462293308334' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/376606462293308334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/376606462293308334'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/openvanilla.html' title='OpenVanilla套件打包二三事'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-5334355359618678957</id><published>2007-03-09T03:36:00.000+08:00</published><updated>2007-05-04T01:26:51.818+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xscale'/><category scheme='http://www.blogger.com/atom/ns#' term='pxa27x'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>Intel/Marvell PXA27x的系統模擬</title><content type='html'>上一篇blog「&lt;a href="http://orzlab.blogspot.com/2007/03/pxa27x-linux.html"&gt;PXA27x Linux計畫&lt;/a&gt;」提及在SourceForge.net建立名為&lt;a href="http://sourceforge.net/projects/pxa27x-linux/"&gt;PXA27x Linux&lt;/a&gt;的新專案，包含系統層面的模擬環境，現行實做以&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;計畫的qemu-system-arm為基礎，暫定此分支命名為PXAemu，主要的參考標的是市面上的PDA或者SmartPhone，當然也不排除開發中的硬體裝置，畢竟模擬環境的彈性較高，要作前期驗證或者針對特定需求的模擬分析 (如：能源變化、網路通訊的異常)，都是可行的。剛剛已經將kernel patches置入SVN (/kernel/linux-2.6.20)，以PXAemu作系統模擬的畫面如下：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/RfBtEF9zhZI/AAAAAAAAABI/GiirXliUuI0/s1600-h/pxa27x-on-qemu.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/RfBtEF9zhZI/AAAAAAAAABI/GiirXliUuI0/s400/pxa27x-on-qemu.png" alt="" id="BLOGGER_PHOTO_ID_5039647900115895698" border="0" /&gt;&lt;/a&gt;很令人振奮的畫面，稍後會補上一個PXAemu專屬的frontend，並改善LCD controller的處理。對了，RT nanokernel for Embedded Linux也可用PXAemu來進行多項實驗，這也是近期進行的項目。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-5334355359618678957?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/5334355359618678957/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=5334355359618678957' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5334355359618678957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/5334355359618678957'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/intelmarwell-pxa27x.html' title='Intel/Marvell PXA27x的系統模擬'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XYo3WYqTnPk/RfBtEF9zhZI/AAAAAAAAABI/GiirXliUuI0/s72-c/pxa27x-on-qemu.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1375318252178732886</id><published>2007-03-05T22:51:00.000+08:00</published><updated>2007-05-04T01:27:16.513+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xscale'/><category scheme='http://www.blogger.com/atom/ns#' term='pxa27x'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>PXA27x Linux計畫</title><content type='html'>使用Intel PXA27x (已於2006年七月售出予Marvell，相關產品線資訊可見Wikipedia - &lt;a href="http://zh.wikipedia.org/wiki/XScale"&gt;Xscale&lt;/a&gt;) 進行產品開發大約兩年，接觸了BSP、GNU Toolchain、Wireless MMX、Intel IPP、Graphical Overlays、NIC、... 等項目，也開發了無線網路裝置、GSM手機，以及多媒體系統。開發過程中遇到不少技術問題，雖能大致克服，但也有重複開發的遺憾，是此，建立RI (Reference Implementation) 就是相當重要的議題，於是我們在SourceForge.net建立名為&lt;a href="http://sourceforge.net/projects/pxa27x-linux/"&gt;PXA27x Linux&lt;/a&gt;的新專案。&lt;br /&gt;&lt;br /&gt;雖然Intel早在2004年即提供GNU/Linux (通稱，含binutils、gcc、glibc，與linux kernel) 的patch或相關的修正，但畢竟自由軟體界已經有很大的改觀，同時原本Intel的貢獻中其實有不少bug，所以&lt;a href="http://sourceforge.net/projects/pxa27x-linux/"&gt;PXA27x Linux&lt;/a&gt;匯集來自許多方的改進，提供除了BSP外，更新且效能、功能最佳化的軟體套件。又，考慮到系統層面的模擬環境，本計畫會提供以&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;為基礎的system emulator，不只模擬PXA27x指令集，還廣泛包含DMA、GPIO、LCD、MMC、PCMCIA、Timer、co-processor (CP0/CP1)、... 等，主要的參考標的是市面上的PDA或者SmartPhone，當然，現在還有很大的改進空間。&lt;br /&gt;&lt;br /&gt;今天已將pxa27x-oabi-crosstool子專案置入SVN，以下是其簡介 (取自README檔案)：&lt;br /&gt;&lt;blockquote&gt;pxa27x-oabi-crosstool : PXA27x OABI (old ABI) toolchain builder&lt;br /&gt;Copyright (c) 2007 Open RazzmatazZ Laboratory (OrzLab).&lt;br /&gt;Maintained by Jim Huang&lt;br /&gt;&lt;br /&gt;&lt;jserv.tw&gt;The goals of pxa27x-oabi-crosstool are as following:&lt;br /&gt;&lt;/jserv.tw&gt;&lt;ul&gt;&lt;li&gt;Bug-fixed toolchain for PXA27x&lt;/li&gt;&lt;li&gt;Binary compatibility for Intel Integrated Performance Primitives library (Intel IPP).&lt;/li&gt;&lt;li&gt;GCC 3.x-based system with enhancements.&lt;/li&gt;&lt;li&gt;Providing advanced features such as Application XIP, optimized memcpy, etc.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;這是software stack從Old ABI跨入&lt;a href="http://www.arm.com/products/DevTools/ABI.html"&gt;ARM EABI&lt;/a&gt;的過渡系統，考量到軟體相容性，諸如MontaVista &lt;span style="color: rgb(0, 0, 0);"&gt;Consumer Electronics Edition&lt;/span&gt; (mvlcee) 等，所以保持採用gcc-3.x與glibc-2.3.2，但陸續做了改良與backports，這些可參考patches目錄。&lt;br /&gt;&lt;br /&gt;稍後會釋出的項目是基於&lt;a href="http://www.openembedded.org/"&gt;OpenEmbedded&lt;/a&gt;的Linux kernel 2.6，以及基於&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;的system emulator，期待您的指教與參與，謝謝！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1375318252178732886?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1375318252178732886/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1375318252178732886' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1375318252178732886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1375318252178732886'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/pxa27x-linux.html' title='PXA27x Linux計畫'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2484474186401987321</id><published>2007-03-04T20:47:00.000+08:00</published><updated>2007-05-04T01:27:49.508+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='semaphore'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='mutex'/><title type='text'>Mutex與火車排班</title><content type='html'>&lt;span style="font-size:100%;"&gt;在我心中，一直有個小心願，能以自己微弱的力量為這個社會多作些事情，包含免費的技術訓練，然而時間、精力是投入了，但不見得有效果，為此，我常常在反省。拜讀對岸高手&lt;a style="font-weight: bold; color: rgb(0, 0, 0);" href="http://pczou.bokee.com/index.html"&gt;Pengcheng Zou&lt;/a&gt;的blog - 「&lt;a href="http://pczou.bokee.com/5947761.html"&gt;Linux地鐵&lt;/a&gt;」一文，我終於知道為什麼，畢竟技術或理論本身被提出，就是要克服現實問題，所以若能讓訓練本身更貼近現實，這樣才會發揮其價值。以下摘錄「&lt;a href="http://pczou.bokee.com/5947761.html"&gt;Linux地鐵&lt;/a&gt;」一文的部份內容：&lt;br /&gt;&lt;/span&gt;&lt;p&gt; &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;今天早上上班，快到地鐵就發現外面站了不少人，有做打車狀，有做打電話狀，隱約聽到有人說地鐵壞了。下到地鐵站台，果然看到兩列車停在那裡，站台上站滿了人。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;後來在&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a style="color: rgb(0, 0, 0);" target="_blank" href="http://www.bjsubway.com/" class="l"&gt;北京市地鐵運營有限公司&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;網站上看到了事故原因：&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;11&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;日早晨&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;7&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;點&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;55&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;分左右，地鐵&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;2&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;號線宣武門變電站瞬間過載跳閘，造成長椿街信號系統無法正常使用，列車運行方式被迫由&lt;span style="font-weight: bold;"&gt;自動閉塞&lt;/span&gt;改為&lt;span style="font-weight: bold;"&gt;電話閉塞&lt;/span&gt;，通過能力下降，運營間隔加大，造成長椿街臨近的復興門等重點站短時間乘客滯留。&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;8&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;點&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;19&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;分故障排除，地鐵運營方式隨後按自動閉塞方式運營，運營秩序逐步恢復正常。其間，&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;2&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;號線內外環西直門至宣武門早高峰列車間隔加大，列車最小間隔由原來&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;3&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;分半被迫延長到&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;8&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;至&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;10&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;分鐘，由於故障發生時正處於早高峰階段，客流本就較大，所以部分車站出現乘客短時滯留現象，地鐵&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;1&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;號線受此故影響有&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;6&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;列車在復興門站通過。&lt;/span&gt;&lt;span style=";font-family:'Times New Roman';font-size:100%;"  lang="EN-US" &gt;13&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;號線、八通線未受故障影響，運營正常。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;何謂「閉塞」？寶貝爹地是鐵路的，正好請教。講 了半天，不甚了了。只好再從網上查，得知由車站向區間發車時必須確定區間內無車，還要防止兩個車站在同一線路上向同區間發車。這種按照一定的方法組織列車 在區間內的運行，稱為行車閉塞，用來聯絡的設備稱為閉塞設備。常用的閉塞設備有自動閉塞、半自動閉塞及電氣路籤閉塞等。地鐵採用自動閉塞設備。&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;這 下懂了，地鐵就是作業系統，所謂區間就是臨界區，閉塞裝置是各種同步機制，自動閉塞相當於spinlock，電話閉塞相當於semaphore。今天早上 效率比較高的spinlock失靈了，只好用效率較低而且不能用於中斷上下文的semaphore。所以導致系統性能下降，進程吞吐量明顯降低，客戶滿意 度下降。不少用戶轉而使用其他&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;作業&lt;/span&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;系統。&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style=";font-family:宋体;font-size:100%;"  &gt;很多唸電腦科學的學生，往往在畢業後還不能理解那些同步理論的重要性，如今，火車排班就是最好的案例。Linux kernel中有兩種mutex (互斥)機制：&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;semaphore&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;spinlock&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="quote-content"&gt;&lt;span style="font-size:100%;"&gt;兩者主要區別是，semaphore在無法進入critical section (臨界區) 時，會引發context-switching，而若有硬體配合 (SMP) 的話，spinlock就沒有context-switching，這是許多教科書會提到的，但聽起來很奇怪吧？我們要思考的是本質，semaphore是process-level的操作，當有process要求進入critical section，好比在上面鐵路案例中，以電話要求區間的發車權，那麼，若critical section沒有被設置旗標，就可佔用並重設旗標，也就是我們可順利發車，但若不幸遇到該區間已經有車班呢？這時候該process就被迫「睡眠」，而本身也會被送入wait queue，這種枯等的經驗，想必很多通勤的朋友都能感受。我們也可以發現，這過程牽涉到process狀態的改變，因為勢必會有資源被釋放的時候 (但不保證)，屆時，被迫「睡眠」的項目也會因而被喚醒。&lt;br /&gt;&lt;br /&gt;spinlock的本質是busy-waiting，聽起來很沒效率，但為何說在SMP很重要呢？最主要的原因是，沒有context-switch的負擔，沒有牽涉到process的狀態變化，在多處理器的環境下，spinlock相當有效率，而在單處理器上，卻只是disable/enable isr一類的操作。換過來想火車的案例，似乎就簡單多了，用電話通知本身涉及人與人的通訊內容、線路使用量，以及現實因素，可視為單處理器狀態，但如果是自動化，個別單元的協調時間是相當短的，所以可想成SMP架構，自然這兩者的mutex機制也有使用上的落差了。&lt;br /&gt;&lt;br /&gt;當然，真的要探討Linux semaphore/spinlock的機制，其實複雜許多，特別在2.6 kernel還添入big kernel lock等新的機制，不過這些都出自典型作業系統理論 (命名可能有出入)，只要稍微變化一下，或許也能對應到現實。&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2484474186401987321?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2484474186401987321/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2484474186401987321' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2484474186401987321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2484474186401987321'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/mutex.html' title='Mutex與火車排班'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2284835245186293330</id><published>2007-03-02T17:49:00.000+08:00</published><updated>2007-05-04T01:28:40.159+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='font'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><category scheme='http://www.blogger.com/atom/ns#' term='zhongwen'/><title type='text'>動態組字技術於Embedded領域</title><content type='html'>在&lt;a href="http://magicdesign.blogspot.com/"&gt;魔法設計師&lt;/a&gt;與marr的引見下，去年於&lt;a href="http://coscup.tossug.org/"&gt;COSCUP&lt;/a&gt; 2006有幸認識&lt;a href="http://www.ksana.tw/"&gt;剎那工坊&lt;/a&gt;的陳昌江與yap前輩，談到中文組字技術與嵌入式系統的若干細節，給予我很大的鼓舞。本實驗室今年的計畫中，即有Embedded GUI Framework的項目，原本只是因應RT executive或virtualization需要 (如Linux subsystem尚在啟動或者非運作中的情況下，至少可有輕量級的人機介面與使用者互動)，所提出附加性設計，這也就是Xorz/Embedded (&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001276.html"&gt;展示1&lt;/a&gt;/&lt;a href="http://blog.linux.org.tw/%7Ejserv/archives/001823.html"&gt;展示2&lt;/a&gt;)。但如果能順利整合中文動態組字技術，對於原本即以向量繪圖為核心架構的Xorz/Embedded，是很好的契機，或許可作為低階裝置的UI，同時我們也可以看到，開發中國家如中國大陸，更是需要動態組字技術。&lt;br /&gt;&lt;br /&gt;為何我們要重視動態組字技術的原因，除了陳昌江前輩日前發表的大作「&lt;a href="http://docs.google.com/Doc.aspx?id=dgnqz2jv_2dg76zr"&gt;等待新漢碼&lt;/a&gt;」所提到種種根深蒂固的窘境以及文化傳承的需要，另一個現實的考量是，這類可攜式造字引擎可避免過度的Disk I/O存取，進而大幅提昇儲存裝置的壽命 (NAND/NOR Flash 皆有讀寫次數限制)，所以短期內我們應該要在Embedded平台作技術驗證，中期就是銜接現有mobile標準，克服缺字議題。&lt;br /&gt;&lt;div style="direction: ltr;"&gt;&lt;br /&gt;&lt;a href="http://magicdesign.blogspot.com/"&gt;魔法設計師&lt;/a&gt;貢獻了許多教學文件與參考實做，可參考其 blog 之&lt;a href="http://magicdesign.blogspot.com/search/label/%E6%BC%A2%E5%AD%97%E7%A0%94%E7%A9%B6"&gt;漢字研究&lt;/a&gt;的分類，日前張貼的「&lt;a href="http://magicdesign.blogspot.com/2007/02/blog-post_1088.html"&gt;組字示範程式釋出！&lt;/a&gt;」一文即提供了以Java撰寫的教學程式，內含中華民國發明專利號碼第I254863號「可攜式造字引擎」專利的技術與剎那工坊維護之剎那單線體字形檔，經專利權人陳昌江同意，預先提供執行檔與資料檔供測試評估使用，詳細規格可見&lt;a href="http://zhongwen.tw/"&gt;正體中文網&lt;/a&gt;，附帶一提，相關專利可望於近日釋放，成為公共財。&lt;br /&gt;&lt;br /&gt;OrzLab很自然就成為受益者，不過小弟目前仍在規劃階段，只有零星的測試程式碼，不過抽離Xorz/Embedded內部的向量描繪引擎就是相當重要的工作，目前已經有個具體而微的向量字型編輯程式，以下是其運作畫面：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/Ref8CNU4nAI/AAAAAAAAAA8/lmiC8IK2fkQ/s1600-h/sfeditor.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/Ref8CNU4nAI/AAAAAAAAAA8/lmiC8IK2fkQ/s400/sfeditor.png" alt="" id="BLOGGER_PHOTO_ID_5037271823104384002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;另外，也可試著與對岸許多Embedded GUI開發者打聲招呼，其實已經太多重複的工作了。今年真是刺激的一年 :-)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2284835245186293330?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2284835245186293330/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2284835245186293330' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2284835245186293330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2284835245186293330'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/embedded.html' title='動態組字技術於Embedded領域'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XYo3WYqTnPk/Ref8CNU4nAI/AAAAAAAAAA8/lmiC8IK2fkQ/s72-c/sfeditor.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-2355080439726917025</id><published>2007-03-02T09:59:00.000+08:00</published><updated>2007-05-04T01:29:12.486+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='fon'/><title type='text'>Ajax/Embedded</title><content type='html'>之前花了一些時間作個 lightweight kHTTPd for Linux Kernel 2.6，也可用作於 HTTP accelerator / redirect server，在kernel mode處理static web data與redirection。這幾天正在實做一個user mode應用程式集，規範一個 Framework，能用 C/C++ 開發 &lt;span id="st" name="st" class="st"&gt;AJAX&lt;/span&gt; Web Application，如此可確保footprint 與 performance都有不錯的表現。可應用於Router / Wireless AP / Embedded controller，參考硬體平台為ARM與MIPS，此專案暫定命名為Ajax/Embedded，中期的計畫就是能整合進FON (La Fonera)，以及銜接kHTTPd。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XYo3WYqTnPk/ReeWmNU4m-I/AAAAAAAAAAk/VyihVAtPr-M/s1600-h/ajax-embedded-demo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XYo3WYqTnPk/ReeWmNU4m-I/AAAAAAAAAAk/VyihVAtPr-M/s320/ajax-embedded-demo.png" alt="" id="BLOGGER_PHOTO_ID_5037160291393641442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;今天做了一個Preview / Proof-of-Concept的版本，展示一個GMail-like郵件撰寫與拼字檢查的Web application，連同Web server、Application Framework，以及Ajax engine，大約佔了2Mb的空間，雖然比其他Ajax解決方案來得省，不過很明顯有頗大的進步空間。&lt;br /&gt;&lt;br /&gt;對於Ajax/Embedded來說，不僅效能與空間可獲得最佳化，事實上還可避免常見的&lt;span id="o1454c"&gt;XSS (Cross-Site-Scripting) 安全性議題，更可沒有負擔地與底層整合，比方說Wireless router查詢硬體狀態的設計就能直接呼叫ioctl。為了避免程式開發者耗費過多時間在調整UI，Web UI Framework本身必須提供夠高階的event-driven model，目前已經有類似Gtk+/Qt的Signals-Slots機制。&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-2355080439726917025?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/2355080439726917025/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=2355080439726917025' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2355080439726917025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/2355080439726917025'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/03/ajaxembedded.html' title='Ajax/Embedded'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XYo3WYqTnPk/ReeWmNU4m-I/AAAAAAAAAAk/VyihVAtPr-M/s72-c/ajax-embedded-demo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8066295861558146415</id><published>2007-01-28T17:25:00.000+08:00</published><updated>2007-05-04T01:29:57.781+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><title type='text'>大於與小於50000的差異</title><content type='html'>在zhcon的basefont.cpp中看到這一段程式碼時， 心中突然有了些感觸。&lt;br /&gt;&lt;br /&gt;下面所記載的程式碼，主要的目的是判斷在字型檔大於50000Bytes時，就改採用memory mapped的方式來配置，因為CJK所用的字型大部分大於這個容量，所以得另外作一些處理。而這些細心的念頭, 是在FreeType的PCF部分，還有libXFont的PCF中找不到的。想當然爾，國外地區的Hackers只需要用到ASCII的字型，誰會去關心這樣的細節呢？&lt;br /&gt;&lt;br /&gt;因此，對於這些CJK的基礎建設，我們更應該主動去作才是。&lt;br /&gt;&lt;br /&gt;若我們不作，還有誰會來作？&lt;br /&gt;&lt;br /&gt; if (&lt;span style="font-weight: bold;"&gt;mBufSize &gt; 50000&lt;/span&gt;) {&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;//hzfont use mmap &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        mpBuf = (char *) mmap((caddr_t) 0, mBufSize, PROT_READ,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                    MAP_FILE | MAP_SHARED, mFd, (off_t) 0);&lt;/span&gt;&lt;br /&gt;    if (mpBuf == MAP_FAILED)&lt;br /&gt;        throw (runtime_error("error in mmap gbfont!"));&lt;br /&gt;} else {&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;//ascii font read to buffer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        mpBuf = (char *) new char[mBufSize];&lt;/span&gt;&lt;br /&gt;    unsigned nread = read(mFd, mpBuf, mBufSize);&lt;br /&gt;    if (nread != mBufSize)&lt;br /&gt;        throw (runtime_error("error in reading asciifont!"));&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8066295861558146415?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8066295861558146415/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8066295861558146415' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8066295861558146415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8066295861558146415'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/01/50000.html' title='大於與小於50000的差異'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-1445541500664204072</id><published>2007-01-24T00:15:00.000+08:00</published><updated>2007-05-04T01:30:29.664+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='culture'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><title type='text'>你要慢跑還是漫跑?</title><content type='html'>&lt;span style="font-size:100%;"&gt;剛退伍的我，常有一種很深的學習焦慮感，尤其在希望早點獨立自主的自我期望下，凡事都急求速成，什麼東西都沾一點，卻又不夠深入。弄到最後，一件都沒有好好的學成，心情也跟著低落。&lt;br /&gt;&lt;br /&gt;逛Blog時碰巧讀到&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.norvig.com/21-days.html"&gt; "Teach Yourself Programming in Ten Years" &lt;/a&gt;這篇文章，&lt;/span&gt;作者提出了對人人學程式設計急求速成的反問，並用他的經驗告訴我們，那些求速成所花的時間, 根本就不夠養成一個真正的程式設計師。網路上形形色色的成果展示，或是創意作品，也許只有短短幾分鐘，但可知作者在背後花了多少的時間和心血，才能達到這樣的能力？&lt;br /&gt;&lt;br /&gt;正所謂，「台上十分鐘, 台下十年功」。&lt;br /&gt;&lt;br /&gt;之前讀到李四端對於新聞工作的感想「&lt;span style="font-size:100%;"&gt;&lt;a href="http://mag.udn.com/mag/campus/storypage.jsp?f_ART_ID=56149"&gt;你要新聞慢跑還是漫跑？&lt;/a&gt;&lt;/span&gt;」，也是心有所感.，或許在汲汲騖騖的生活中，也要找機會停下腳步來想一想，自己是否真的熱愛所投身的工作、事業？還是只是漫不經意的走馬看花。&lt;br /&gt;&lt;br /&gt;最近洽巧讀到一篇值得一看的程式設計學習的導引，"&lt;span style="font-size:100%;"&gt;&lt;a href="http://catb.org/esr/faqs/hacker-howto.html"&gt;How To Become A Hacker&lt;/a&gt;"，除了呼應了"Teach YOurself Programming in Ten years" 所表達的觀念，也鼓勵讀者多學習性質不同的程式語言，並嘗試以不同語言的性質來思考問題。&lt;br /&gt;&lt;br /&gt;小小繞了一圈操場，才發現真正要走的路，還很長很長...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-1445541500664204072?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/1445541500664204072/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=1445541500664204072' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1445541500664204072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/1445541500664204072'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/01/blog-post.html' title='你要慢跑還是漫跑?'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-4210496095692820340</id><published>2007-01-23T17:19:00.000+08:00</published><updated>2007-11-13T04:51:42.577+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='rt nanokernel'/><title type='text'>RT executive</title><content type='html'>作為RT nanokernel的應用呈現，最近花了一些時間發展相容於&lt;a href="http://www.rtlinux-gpl.org/"&gt;RTLinux-GPL&lt;/a&gt;的小型RTOS，目標是銜接眾多RTLinux的modules與RT applications，但不需要種種Linux沈重的包袱，僅實做最小的虛擬記憶體管理、&lt;a href="http://www.rtlinux-gpl.org/"&gt;RTLinux-GPL&lt;/a&gt;相容APIs、更精簡的TLB與記憶體快取機制，同時能充分控制硬體，至於原本Linux applications (non-RT tasks)，則由RT nanokernel建立特定的domain以運行。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-4210496095692820340?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/4210496095692820340/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=4210496095692820340' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4210496095692820340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/4210496095692820340'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/01/rt-executive.html' title='RT executive'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-8675360614447036347</id><published>2007-01-09T21:26:00.000+08:00</published><updated>2007-05-04T01:31:35.471+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osdc.tw'/><category scheme='http://www.blogger.com/atom/ns#' term='ucimf'/><category scheme='http://www.blogger.com/atom/ns#' term='rt nanokernel'/><category scheme='http://www.blogger.com/atom/ns#' term='orzlab'/><title type='text'>OSDC.tw 2007 is coming</title><content type='html'>&lt;a href="http://osdc.tw/"&gt;OSDC.tw&lt;/a&gt; (Open Source Developer's Conference in Taiwan) 2007 即將在四月份舉辦，&lt;a href="http://matlinuxer2.blogspot.com/"&gt;Mat&lt;/a&gt;與我都準備提案，希望屆時可分享我們最近的成果。&lt;br /&gt;&lt;br /&gt;Mat 的提案名稱為："Unicode Console InputMethod Framework"，以下是提案內容：&lt;br /&gt;&lt;blockquote&gt;在console輸入中文真的非常麻煩，常常需要透過其他媒介才行。在觀察當時的console上輸入法相關的程式和實作方式後，發現兩個必須要徹底解決的問題：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;輸入法的支援幾乎都是寫死在程式裡&lt;/li&gt;&lt;li&gt;大部分沒有接軌國際架構&lt;/li&gt;&lt;/ul&gt;這些問題使得重複的基礎建設一再消耗Programmer的力氣。於是&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;提出以Shared Lib的方式，並用Dynamic Loading的方法來克服這兩個難題。未來幾個期待努力的方向，包括:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;與SCIM接軌&lt;br /&gt;&lt;/li&gt;&lt;li&gt;用VT100的Control Sequence顯示組字&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;也就是將這兩年來開發&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;的歷程予以公開，不同以昔日閉門造車的途徑，&lt;a href="http://ucimf.csie.net/"&gt;UCIMF&lt;/a&gt;成功銜接&lt;a href="http://www.openi18n.org/subgroups/im/IIIMF/"&gt;IIIMF&lt;/a&gt;與&lt;a href="http://www.openvanilla.org/"&gt;OpenVanilla&lt;/a&gt;等輸入法架構，並且這個Unicode Console也支援PCF與TrueType字型描繪，提供Linux輕量卻完整的多國語文終端機解決方案。&lt;br /&gt;&lt;br /&gt;而我的提案名稱為："RT Nanokernel for Embedded Linux"，以下為提案內容：&lt;blockquote&gt;在台灣，開發一個新的作業系統並非不切實際的工作，相反地，在銜接Free / Open Source software運動巨變的同時，其中很重要的理念就是最佳化、通用性，與客製化。Nanokernel/Hybrid-kernel 的提出，就是針對應用需求，如行動裝置的進階能源管理機制等需大量軟硬體協同開發的技術項目，提供一種新途徑。&lt;br /&gt;&lt;br /&gt;眾多Realtime Linux系統的提出，證明可在符合特定需求的Hard Realtime OS上面運作修改過的Linux Kernel，以兼具即時任務需求與既有 Linux 應用程式相容性。在資訊產業有句金言：「沒有完美的技術，只有合用的技術」，本議題以日漸成熟的nanokernel /para-virtualization等技術為基礎，提出輕量級且易於擴充的新設計，讓Embedded Linux發揮更大的威力。&lt;/blockquote&gt;Realtime技術已限不於自動控制，事實上，在移動裝置也能透過RT nanokernel技術，不必大幅改寫系統，卻可提昇特定需求的可靠性與穩定性，如進階能源管理或高效能I/O處理。這樣一來，眾多的Linux應用程式不僅能在更多的平台運作，更可因此創造更大的價值，這也是我們強調"Programming 2.0"概念的展現。&lt;br /&gt;&lt;br /&gt;期待您的指教！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-8675360614447036347?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/8675360614447036347/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=8675360614447036347' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8675360614447036347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/8675360614447036347'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/01/osdctw-2-007-is-coming.html' title='OSDC.tw 2007 is coming'/><author><name>jserv</name><uri>http://www.blogger.com/profile/16050238364148074589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_XYo3WYqTnPk/TU9xv-_42AI/AAAAAAAABFI/BED_eBBS4JI/s220/jserv-elder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6940637973783721202.post-7023485903460183661</id><published>2007-01-05T14:49:00.000+08:00</published><updated>2007-05-04T01:32:21.008+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freetype'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='fontforge'/><category scheme='http://www.blogger.com/atom/ns#' term='font'/><category scheme='http://www.blogger.com/atom/ns#' term='bdf'/><category scheme='http://www.blogger.com/atom/ns#' term='pcf'/><category scheme='http://www.blogger.com/atom/ns#' term='qpf'/><title type='text'>關於PCF的連結</title><content type='html'>在網站搜了一下，才發現PCF的資料並不如想像中的那麼多，找到的網站，幾乎都是格式轉換的用法，很少有提到PCF的規格和程式碼，在wikipedia甚至沒有專頁的介紹。&lt;br /&gt;&lt;br /&gt;少歸少，還是找到了一些不錯的技術文件如下:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;「 &lt;a href="http://asitis.org/files/font_specs/bdf_spec.zip"&gt;BDF的規格書&lt;/a&gt;」、「 &lt;a href="http://fontforge.sourceforge.net/pcf-format.html"&gt;PCF的規格&lt;/a&gt;」眼尖的人可以發現這裡可以找到大多數字型檔的規格書: &lt;a href="http://fontforge.sourceforge.net/bibliography.html#Formats"&gt;Font File Format&lt;/a&gt;，這些資料是&lt;a href="http://fontforge.sourceforge.net/"&gt;FontForge&lt;/a&gt;用心整理的, 對字型工作者提供莫大的幫助，而主頁有放正體中文翻譯的文件&lt;a href="http://edt1023.sayya.org/fontforge/editexample.html"&gt;教學&lt;/a&gt;,，內容很棒！&lt;/li&gt;&lt;li&gt;「&lt;a href="http://www.tsg.ne.jp/GANA/S/pcf2bdf/pcf.pdf"&gt;BDF&amp;PCF的深度文件&lt;/a&gt;」(日文) 因為是日文，所以從中得到的資訊很有限，不過有介紹到兩個字型的資料結構，內容相當深入，搜一下Google，發現作者&lt;span style="font-weight: bold;"&gt;多賀奈由太&lt;/span&gt;就是寫hexadecimal dump tool(hex)的人，難怪...&lt;/li&gt;&lt;li&gt;"&lt;a href="http://www.cl.cam.ac.uk/%7Emgk25/ucs-fonts.html"&gt;Unicode fonts and tools for X11&lt;/a&gt;" 這篇文章也介紹了不少字型的資訊，尤其在最後兩三章提供了不少關於字型工具的聯結，很有幫助。&lt;/li&gt;&lt;li&gt;"&lt;a href="http://doc.trolltech.com/4.1/qtopiacore-fonts.html"&gt;QPF(QT Preredered Font)&lt;/a&gt;" 隨手逛到Qtopia也有自己的字型檔，不過他也支援Freetype的字型引擎，這讓我想到Freetype能否進一步輕量化，提供Embedded System高品質的字型引擎？不過文中也提到Unicode字型最大的弱點：&lt;blockquote&gt;All supported fonts use the Unicode character encoding. Most fonts available today do, but they usually don't contain &lt;i&gt;all&lt;/i&gt; the Unicode characters. A complete 16-point Unicode font uses over 1 MB of memory.&lt;/blockquote&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;寫到這裡，沒想到查個文件, 東點點西點點，就花了一個下午的時間。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6940637973783721202-7023485903460183661?l=orzlab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orzlab.blogspot.com/feeds/7023485903460183661/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6940637973783721202&amp;postID=7023485903460183661' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7023485903460183661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6940637973783721202/posts/default/7023485903460183661'/><link rel='alternate' type='text/html' href='http://orzlab.blogspot.com/2007/01/pcf.html' title='關於PCF的連結'/><author><name>Mat</name><uri>http://www.blogger.com/profile/07251024289001831997</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_A-c5PQfUpGQ/SYnSAts3ptI/AAAAAAAAAJM/1QDNIkynL7s/s1600-R/icon-penguin.png'/></author><thr:total>0</thr:total></entry></feed>
