<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>0xlab</title>
	<link>default</link>
	<language>en</language>
	<description>0xlab - default</description>

<item>
	<title>Hacking at 0xlab: 簡介 0xlab 新的開放原始碼專案</title>
	<guid>tag:blogger.com,1999:blog-1795333590425870072.post-821019631501449613</guid>
	<link>http://jserv.blogspot.com/2010/09/0xlab.html</link>
	<description>我們在今年八月中旬的 &lt;a href=&quot;http://coscup.org/2010/&quot;&gt;COSCUP 研討會&lt;/a&gt;中，很榮幸地向與會的朋友介紹 &lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt; 若干新的開放原始碼專案，本文稍作整理回顧。&lt;a href=&quot;http://code.google.com/p/0xdroid/&quot;&gt;0xdroid&lt;/a&gt; 是 &lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt; 最早的一項整合性開放原始碼專案，目的是建構於 &lt;a href=&quot;http://beagleboard.org/&quot;&gt;Beagleboard&lt;/a&gt; 開放的硬體之上，提供 Android 的參考實做環境，經過一年多的累積，裡頭的成果被帶到不同的移動裝置中，比方說手機與 Tablet。今年二月份，有幸在 &lt;a href=&quot;http://www.mobileworldcongress.com/&quot;&gt;Mobile World Congress&lt;/a&gt; 2010 展示基於 Android 的移動裝置，&lt;span id=&quot;recent_events&quot;&gt;&lt;a href=&quot;http://www.tieto.com/&quot;&gt;Tieto&lt;/a&gt; 也在 TI OMAP3 平台&lt;a href=&quot;http://www.tieto.com/blogs/BlogArticle.aspx?path=31196,31199,42948,42990&quot;&gt;展示 0xdroid&lt;/a&gt;，這些都讓我們更有信心，擴展到多元的應用。&lt;br /&gt;&lt;br /&gt;這半年間，延續 &lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/0xdroid/&quot;&gt;0xdroid&lt;/a&gt; &lt;span id=&quot;recent_events&quot;&gt;的經驗，我們發展 / 貢獻以下專案：&lt;/span&gt;&lt;img src=&quot;file://tmp/moz-screenshot.png&quot; alt=&quot;&quot; /&gt; &lt;span id=&quot;recent_events&quot;&gt;&lt;/span&gt;&lt;span id=&quot;recent_events&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;&lt;a href=&quot;http://code.google.com/p/0xrobocat/&quot;&gt;0xRobocat&lt;/a&gt; : 與 &lt;a href=&quot;http://www.catcan.com.tw/&quot;&gt;CATCAN&lt;/a&gt; 合作的專案，目的是打造一組控制伺服馬達與相關零組件的軟體框架，可提供給 Android 或 GNU/Linux 使用，以 &lt;/span&gt;&lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; rel=&quot;nofollow&quot;&gt;Apache License 2.0&lt;/a&gt; 授權釋出。除了用於打造機器人外 (是真的可走動的 &quot;Android&quot;)，本專案可用於 Android 裝置 (如手機) 的自動測試&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;&lt;a href=&quot;http://code.google.com/p/0xbench/&quot;&gt;0xBench&lt;/a&gt; : &lt;/span&gt;有鑑於 Android 上的系統效能評比程式，不是不完整，就是非開放原始碼，所以我們決定重新打造一個。&lt;span id=&quot;recent_events&quot;&gt;&lt;a href=&quot;http://code.google.com/p/0xbench/&quot;&gt;0xBench&lt;/a&gt; 可從 C 函式庫/系統呼叫的層面，一路從 Dalvik VM 評測到 Android framework，仍持續擴充，並且我們提供 &lt;a href=&quot;http://code.google.com/p/0xbench/wiki/WebService&quot;&gt;Web service&lt;/a&gt;，允許貢獻評測的結果，用互動的方式來分析。程式主體是 &lt;/span&gt;&lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; rel=&quot;nofollow&quot;&gt;Apache License 2.0&lt;/a&gt; 授權&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;&lt;a href=&quot;http://gitorious.org/android-toolchain&quot;&gt;android-toolchain&lt;/a&gt; : &lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt; 特製的 GNU Toolchain，以 Android team 的成果為基礎，&lt;/span&gt;整合來自 &lt;a href=&quot;http://www.linaro.org/&quot;&gt;Linaro&lt;/a&gt; Toolchain Working Group 的改善。這些主要是 &lt;a href=&quot;http://www.gnu.org/licenses/gpl.html&quot;&gt;GNU GPLv3&lt;/a&gt; 授權&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;&lt;a href=&quot;https://review.source.android.com/&quot;&gt;Android Open Source Project&lt;/a&gt; (AOSP) : 提交 &lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt; 過去在 TI OMAP 與 Qualcomm 72xx 平台的一些修改，經過公開的 Review 機制，慢慢整合到 AOSP&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.cyanogenmod.com/&quot;&gt;CyanogenMod&lt;/a&gt; : 社群版本的 Android，在 Nexus One, HTC Dream 等裝置有相當優越的表現，收錄若干來自 &lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt; 的改良，比方說 Bluetooth HID profile&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span id=&quot;recent_events&quot;&gt;除了以上的開放原始碼專案，我們內部正進行一個基於 Android 的新型態應用，未來也會將相關的專案程式碼，以開放原始碼的形式釋出，完整的列表可參考 &lt;a href=&quot;http://0xlab.org/projects.html&quot;&gt;0xlab Projects&lt;/a&gt;。至於 &lt;a href=&quot;https://review.source.android.com/&quot;&gt;AOSP&lt;/a&gt;，我們現有更改的項目是：&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;build - 調整 Android build system、修正工具程式的瑕疵&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;bionic - 提供 ARM optimizations，針對 ARMv6/ARMv7&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;PixelFlinger - 基本的 refactoring，以及 ARM 實做的改良&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;libpng / libz - 利用 GCC visibility，進一步縮減 code size&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;elfcopy - ELF 工具的調整&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;bionic / apriori / build - 支援 DT_GNU_HASH，加快動態連結的速度&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id=&quot;recent_events&quot;&gt;toolchain - 加強 build system 的彈性&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span id=&quot;recent_events&quot;&gt;以上，歡迎舊雨新知給我們支持與指教，謝謝。&lt;/span&gt;&lt;span id=&quot;recent_events&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1795333590425870072-821019631501449613?l=jserv.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 01 Sep 2010 10:17:59 +0000</pubDate>
	<author>noreply@blogger.com (jserv)</author>
</item>
<item>
	<title>Kanru's 探險日誌 » 0xlab: Android Service with dynamic arguments</title>
	<guid permalink="False">http://blog.kanru.info/?p=861</guid>
	<link>http://blog.kanru.info/archives/861</link>
	<description>&lt;p&gt;Recently when I was preparing some Android training material I found this little trick.&lt;/p&gt;

&lt;p&gt;Android &amp;#8220;init&amp;#8221; can do a lot of things, including &amp;#8220;on property change&amp;#8221; trigger; one can image some applications use this to implement an ad-hoc IPC. One example is the &lt;em&gt;system/libnetutil&lt;/em&gt; that monitors the &amp;#8220;init.svc.dhcpcd&amp;#8221; property to detect whether dhcpcd is running or not.&lt;/p&gt;

&lt;p&gt;Android framework can execute some predefined command (service) via the &amp;#8220;ctl.start&amp;#8221; property, the most interesting part is you can supply dynamic arguments to the command just like you were calling a command from shell.&lt;/p&gt;

&lt;p&gt;The format is&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;brush: plain;&quot;&gt;
setprop ctl.start service:arg1 arg2 arg3..
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;It must be a oneshot service, for example you can define a dhcpcd service like:&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;brush: plain;&quot;&gt;
service dhcpcd /system/bin/dhcpcd -B
    group dhcp wifi system
    disabled
    oneshot
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;And set the target interface dynamically:&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;brush: plain;&quot;&gt;
setprop ctl.start dhcpcd:eth0
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&amp;#8220;init&amp;#8221; will then execute &amp;#8220;dhcpcd -B eth0&amp;#8243; with appropriate permissions.&lt;/p&gt;</description>
	<pubDate>Tue, 24 Aug 2010 08:01:34 +0000</pubDate>
</item>
<item>
	<title>Kanru's 探險日誌 » 0xlab: [非官方] COSCUP 2010 Mobile App</title>
	<guid permalink="False">http://blog.kanru.info/?p=850</guid>
	<link>http://blog.kanru.info/archives/850</link>
	<description>&lt;p&gt;今年 &lt;a href=&quot;http://code.google.com/events/io/2010/sessions/android-ui-design-patterns.html&quot;&gt;GoogleIO&lt;/a&gt; 時 Android team 不斷在推廣一個 &lt;a href=&quot;http://android-developers.blogspot.com/2010/05/twitter-for-android-closer-look-at.html&quot;&gt;Android UI Pattern&lt;/a&gt;，可以觀察到最早利用這個 Pattern 的應該是預設的 Facebook 程式，接下來發展的更為完備的是 Twitter 官方程式，處處可以見到該 Pattern 的影子。GoogleIO 前 Google 也推出一個程式叫作 IOSched 用來顯示議程相關資訊，同樣是使用該 Pattern 的實作。雖然 Twitter &lt;a href=&quot;http://blog.twitter.com/2010/04/twitter-for-android-robots-like-to.html&quot;&gt;承諾會釋出 source code&lt;/a&gt;，但是一直沒下文，因此想要使用這個 UI Pattern 的可以說完全沒有範例可以參考。&lt;/p&gt;

&lt;p&gt;今年 &lt;a href=&quot;http://blog.coscup.org/2010/08/blog-post_14.html&quot;&gt;COSCUP&lt;/a&gt; 就參考 IOSched，嘗試從頭打造一個類似的程式，順便練習一下怎麼使用這個 UI Pattern，結果寫好後才知道&lt;a href=&quot;http://www.plurk.com/ericsk&quot;&gt;上官大神&lt;/a&gt;早有 &lt;a href=&quot;http://blog.ericsk.org/archives/1416&quot;&gt;HTML5&lt;/a&gt; 的版本，連 &lt;a href=&quot;http://code.google.com/p/iosched/&quot;&gt;IOSched&lt;/a&gt; 不知道什麼時候也有 source code 了 (汗)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.kanru.info/wp-content/uploads/2010/08/device1.png&quot;&gt;&lt;img src=&quot;http://blog.kanru.info/wp-content/uploads/2010/08/device1-168x300.png&quot; alt=&quot;&quot; title=&quot;Home&quot; width=&quot;168&quot; height=&quot;300&quot; class=&quot;alignnone size-medium wp-image-851&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://blog.kanru.info/wp-content/uploads/2010/08/device2.png&quot;&gt;&lt;img src=&quot;http://blog.kanru.info/wp-content/uploads/2010/08/device2-168x300.png&quot; alt=&quot;&quot; title=&quot;Tracks&quot; width=&quot;168&quot; height=&quot;300&quot; class=&quot;alignnone size-medium wp-image-852&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://blog.kanru.info/wp-content/uploads/2010/08/device3.png&quot;&gt;&lt;img src=&quot;http://blog.kanru.info/wp-content/uploads/2010/08/device3-180x300.png&quot; alt=&quot;&quot; title=&quot;Sessions&quot; width=&quot;180&quot; height=&quot;300&quot; class=&quot;alignnone size-medium wp-image-853&quot; /&gt;&lt;/a&gt;&lt;img src=&quot;http://blog.kanru.info/wp-content/uploads/2010/08/coscup2010-qr.png&quot; alt=&quot;&quot; title=&quot;coscup2010-qr&quot; width=&quot;148&quot; height=&quot;148&quot; class=&quot;alignnone size-full wp-image-854&quot; /&gt;&lt;/p&gt;

&lt;p&gt;無論如何，總算是練習了一下 Android Programming，有參加 COSCUP 的人可以試用看看 &lt;img src=&quot;http://blog.kanru.info/wp-includes/images/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;

&lt;p&gt;Source code 在 &lt;a href=&quot;http://github.com/kanru/Coscup2010&quot;&gt;http://github.com/kanru/Coscup2010&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 13 Aug 2010 23:36:53 +0000</pubDate>
</item>
<item>
	<title>Insert smart title here: Introducing 0xBench</title>
	<guid permalink="False">http://o0o.cse.tw/post/947075375</guid>
	<link>http://o0o.cse.tw/post/947075375</link>
	<description>&lt;p&gt;&lt;p class=&quot;p1&quot;&gt;Today (Aug 14) we are announcing the release of 0xBench, an open source Android benchmarking app developed by 0xlab.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;0xBench comes with several built-in benchmarks including Linpack, Scimark2, LibMicro, … etc. 0xBench can also be extended. Developers can add their own benchmarks (either in native C or Java) to suit their needs.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;!-- more --&gt;0xBench is now on the Android Market. If you wish to try it on your phone,  please search for “0xBench” in the Market or scan the following QR code with your phone.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;img src=&quot;http://media.tumblr.com/tumblr_l739lnjrIQ1qzhtkz.png&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;In addition to 0xBench, we are also introducing a website called 0xBenchWeb, a simple web service that stores and visualizes your benchmarking results. After finish running benchmarks on your phone, you can choose to upload your results to 0xBenchWeb.&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;You can find binary, source code, and documentation in following links: &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/0xbench/w/list&quot;&gt;Documentation (Google Code wiki)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://gitorious.org/0xbench/0xbench&quot;&gt;Project page (Gitorius)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://code.google.com/p/0xbench/&quot;&gt;Project page (Google Code)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://0xbenchmark.appspot.com/&quot;&gt;0xBenchWeb (Google App Engine)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://0xbenchmark.appspot.com/run/bizkit.tw@gmail.com/Demo&quot;&gt;Comparison between &lt;/a&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://0xbenchmark.appspot.com/run/bizkit.tw@gmail.com/Demo&quot;&gt;HTC Hero, HTC Desire, Google Nexus One&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 13 Aug 2010 12:24:00 +0000</pubDate>
</item>
<item>
	<title>Asleep from Day » 0xlab: 0xlab Annual Report, 2009.</title>
	<guid permalink="False">http://asleepfromday.wordpress.com/?p=147</guid>
	<link>http://asleepfromday.wordpress.com/2010/08/13/0xlab-annual-report-2009/</link>
	<description>&lt;p&gt;I began writing this at February, but never have the chance to put in everything I wanted to put in. Now I decided that it&amp;#8217;s better to publish it in its current form then not doing it at all. So, here it goes. You may also download &lt;a href=&quot;http://0xlab.org/~john/0xlab2009.pdf&quot;&gt;the PDF version&lt;/a&gt;.&lt;br /&gt;
&lt;span id=&quot;more-147&quot;&gt;&lt;/span&gt;&lt;br /&gt;
So much happened since 0xlab was established in April.  It&amp;#8217;s one of the few, if not only, open source lab whose operation depends solely on the sponsorship of Taiwanese companies.  This is a new and bold attempt for both the businesses and the developers.  In the beginning of 2010, this report tries to give a reflect on our ideas, and our works.&lt;/p&gt;
&lt;h3&gt;Our Ideas&lt;/h3&gt;
&lt;p&gt;We believe open source is the right thing to do.  Its contribution could be shared by everyone around the globe and allows people to build upon each other&amp;#8217;s work.  Plus, as a developer, coding makes much more sense if you can see the whole source.  It&amp;#8217;s something that makes our job as a software developer fun and meaningful.&lt;/p&gt;
&lt;p&gt;On the other hand, we believe there is a chance in Taiwan to make open source profitable.  We&amp;#8217;re not talking about the conventional thinking that business should lock up as much as possible and only release source code enforced by the GPL-like license.  We are talking about being a good community member and opening up as much as possible, not only the source codes, but issue trackers, documents and discussions yet still making money because of openness.&lt;/p&gt;
&lt;p&gt;This is not a new idea, but already a practice.  Companies such as Apple, Google, IBM, Intel, Novell, Redhat, Sun, etc. open up to attract more brain power and get more publicity.  Contradicting conventional wisdom, openness is actually becoming a good business strategy.&lt;sup&gt;&lt;a name=&quot;fnr.1&quot; href=&quot;http://asleepfromday.wordpress.com/category/0xlab/feed/#fn.1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;We believe that there exists an ecosystem that combines both the open source developers and the hardware manufacturers in Taiwan.  Our focus is to strengthen this connection and make it profitable for both parties.&lt;/p&gt;
&lt;p&gt;So, how are we going to do this?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Opening up the non-essential part of the software development and working with the communities.  For the open source world, this means more contribution and feedbacks.  For the business, this means minimized development and maintenance effort.&lt;/li&gt;
&lt;li&gt;Focus on the unique advantage that is a combination of hardware and software.  The actual profit comes from selling the physical product instead of selling the software, which is not a financially good idea anymore.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Businesses should cooperate on #1, so they could put more resource to build their own unique advantages #2.&lt;/p&gt;
&lt;p&gt;A healthy ecosystem is the way to make open source prosper.  So, by making this ecosystem strong, we can effectively make open source stronger in Taiwan, which is something we have long waited for.&lt;/p&gt;
&lt;h3&gt;Our Works&lt;/h3&gt;
&lt;h4&gt;Timeline&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;2009/4/27&lt;/em&gt; &amp;#8211; 0xlab launched, sponsored by &lt;a href=&quot;http://www.azurewave.com/&quot;&gt;AzureWave&lt;/a&gt; Technologies, Inc.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/5/15&lt;/em&gt; &amp;#8211; Project &lt;a href=&quot;http://gitorious.org/android-eeepc&quot;&gt;Android Eee PC&lt;/a&gt; launched.  It aims to bring Android to Eee PC but the current focus is 3D acceleration support.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/6/2&lt;/em&gt; &amp;#8211; Computex.  0xlab demonstrated Beagleboard and Samsung 6410 connected to the WiFi/Bluetooth combo module from AzureWave.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/6/10&lt;/em&gt; &amp;#8211; FreedomHEC.  Talked about &amp;quot;Qi &amp;#8211; Lightweight Boot Loader Applied in Mobile and Embedded Devices&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/6/22&lt;/em&gt; &amp;#8211; Project &lt;a href=&quot;http://gitorious.org/android-obex&quot;&gt;android obex&lt;/a&gt; launched.  It provides obex file sharing via bluetooth in Android.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/7/1&lt;/em&gt; &amp;#8211; First code drop.  0xlab now has the following projects on gitorious: MadButterfly, Android Eee PC, 0xlab’s Linux Kernel Tree, esuit and android obex.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/7/14&lt;/em&gt; &amp;#8211; Project &lt;a href=&quot;http://gitorious.org/0xdroid&quot;&gt;0xdroid&lt;/a&gt; launched.  It&amp;#8217;s the 0xlab’s Android distribution with Beagleboard as the reference platform.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/8/7&lt;/em&gt; &amp;#8211; The first release of 0xdroid, Beagle-cupcake-0&amp;#215;1.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/8/15&lt;/em&gt; &amp;#8211; COSCUP, the biggest open source conference in Taiwan. 0xlab is a sponsor with 4 talks and 1 lightening talk.&lt;sup&gt;&lt;a name=&quot;fnr.2&quot; href=&quot;http://asleepfromday.wordpress.com/category/0xlab/feed/#fn.2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/10/9&lt;/em&gt; &amp;#8211; Beagle-cupcake-0&amp;#215;2 released.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/11/3&lt;/em&gt; &amp;#8211; Project &lt;a href=&quot;http://gitorious.org/freebroid&quot;&gt;FreeBroid&lt;/a&gt; created.  It enables FreeBSD users to do Android development.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/11/6&lt;/em&gt; &amp;#8211; Created our branch of &lt;a href=&quot;http://gitorious.org/0xlab-bootloader&quot;&gt;Qi&lt;/a&gt; supporting omap3530 (Beagleboard).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/12/18&lt;/em&gt; &amp;#8211; Beagle-donut-0&amp;#215;3 released.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2009/12/25&lt;/em&gt; &amp;#8211; Merry Christmas! &lt;a href=&quot;http://olvaffe.blogspot.com/2009/12/android-with-3d-effects.html&quot;&gt;Android with 3D Effects&lt;/a&gt; is our Christmas gift.&lt;/p&gt;
&lt;h4&gt;Business Review&lt;/h4&gt;
&lt;p&gt;Hardware is becoming more and more standardized and keeps converging to a few solution providers.  From the technical point of view, businesses have to stand out in software and the hardware/software integration.&lt;/p&gt;
&lt;p&gt;However, the cost of creating your own proprietary OS is sky high and it requires a dominating power on the market to create enough acceptance, such as Apple.  Solutions like Windows Mobile require royalty and the room to customize is rather limited because it depends on the kindness of its provider.  Open source solution is a way out, but it&amp;#8217;s not without its problems.&lt;/p&gt;
&lt;h5&gt;The Impact of Open Source&lt;/h5&gt;
&lt;p&gt;There are mainly three obstacles that are often missed by project owners:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The technical understanding of the code: most of the time the existing projects can only partially meet the requirement, so a certain amount of engineering resource is required to fill the gap.  However, just because the code is opened does not mean it could be modified easily.  A big, complex project can be very difficult to trace and understand.  Inappropriate modification to the source code leads to maintenance hell, while the ability to change properly is rare.  Without a thorough understanding, the exact effort to develop/fix/maintain the code could be hard to estimate, as well as the risk of the project.&lt;/li&gt;
&lt;li&gt;Lack of overview: a Linux based product usually consists of multiple projects.  These components may base on different technologies and work in different system levels with different functionalities.  The way they interact with each other and the rule they play in the system could be hard to understand without prior knowledge of these projects.  Thus, to obtain the overview of the system and to get a grip of the project status could become a challenge.  The project owner must understand what&amp;#8217;s the core advantage/business value of the project and the rest should be opened to save development effort.&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t know how to work with upstream: the best way to understand the source code and to get support is maintaining a good relationship with upstream.  The best practice is working directly with them and merging back new functionalities and bug fixes.  However, communication could be difficult because open source communities have their own development model, tool and culture, and will react rather badly if you don&amp;#8217;t follow.&lt;/li&gt;
&lt;li&gt;Legal issues: many businesses intentionally or unintentionally violate open source license.  This puts them under the risk of being sued by people like our friend &lt;a href=&quot;http://en.wikipedia.org/wiki/Harald_Welte&quot;&gt;Harald Welte&lt;/a&gt;.  These businesses need experienced people to deal with license issues, especially when you mix codes with different licenses.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;How to Deal with It&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;Work with businesses that provide open source services.  These are people who not only understand open source, but also  bear the business value in mind.  They have experience in commercial projects before, so they are very likely easier to communicate with.&lt;/li&gt;
&lt;li&gt;Hire experts.  If you can&amp;#8217;t directly hire upstream developers, hire developers who are familiar with your target projects.&lt;/li&gt;
&lt;li&gt;Train your own experts.  You still need to find some &amp;#8216;seeds&amp;#8217; first.  This takes longer but in the end you get your own group.&lt;/li&gt;
&lt;li&gt;Managers with rich experience in open source is a must.&lt;/li&gt;
&lt;li&gt;Seek legal consult familiar with different open source licenses.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;New Challenges from Android&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;Multilayer debugging: Android is a complex combination of various technologies.  Most of its platform services are a mix of different computer languages and run across multiple layers. Debugging (inside the platform itself, not the application layer) often requires tracing back and forth between the java framework and native libraries across different processes.  This is significantly harder then tracing the old fashioned pure c/c++ codes.&lt;/li&gt;
&lt;li&gt;Follow the fast paced upstream: Android evolves really fast, i.e. two major releases per year.  This means your product will become outdated during the development phase and you will have to do the catching up and the product development (polishing, bugfixes, new features, etc.) at the same time.  This will be a new challenge to a software team.&lt;/li&gt;
&lt;li&gt;Knowledge of various technical areas: as mentioned before, Android is a complex mix of different technologies.  Peripherals, power management, mobile phone protocols (2G/3G/&amp;#8230;), graphic 2D/3D acceleration, virtual machine (Dalvik), toolchain (bionic, gcc, &amp;#8230;), the design of user interface, certifications, etc. , each one of these could be a big topic.  Android provides a basic platform to build on, but the entry barrier to build on top of it properly is still high, if not even higher.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;Where We Stand&lt;/h5&gt;
&lt;p&gt;0xlab has an unique standing facing all all these new challenges. Most of us are both professional engineers experienced in shipping end products and active open source developers.&lt;/p&gt;
&lt;p&gt;We consist of experts in different areas.  Experience in major smartphone brand/ODM R&amp;amp;D, User interface, virtual machine, compiler, low-level kernel development, multimedia codecs, Mesa 3D contributor and Openmoko, the world&amp;#8217;s first open phone, gives us everything we need to do Android platform development.&lt;/p&gt;
&lt;p&gt;We offer the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reduced development effort by working with the communities.  Short time-to-market.  Automatic testing suite to ensure quality.&lt;/li&gt;
&lt;li&gt;Contribute back to the industry to make a bigger pie.&lt;/li&gt;
&lt;li&gt;Cutting edge technology by following upstream development closely.&lt;/li&gt;
&lt;li&gt;Commercial friendly license because we use the same license as Android.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Work with Us&lt;/h3&gt;
&lt;p&gt;We are accepting the following possibilities if they are technically related to Android:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Community: follow the convention.  Join our mailing lists, chat on IRC, fire questions and share your knowledge just like any other open projects.  Get helps for free by helping others.&lt;/li&gt;
&lt;li&gt;Project: we&amp;#8217;re accepting offers to work on a specific project as long as our work could be opened as well.&lt;/li&gt;
&lt;li&gt;Consulting: contact us to get more info.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;For Developers&lt;/h4&gt;
&lt;p&gt;0xlab is a virtual organization consists of full time employees and freelancers.  We welcome passionate developers to join us.  It doesn&amp;#8217;t matter if you&amp;#8217;re employed or self-employed as long as you share the same idea with us.&lt;/p&gt;
&lt;h4&gt;For Businesses&lt;/h4&gt;
&lt;p&gt;We encourage businesses to change mindset and open up non-essential parts to gain more developers&amp;#8217; eye balls.  The more eye balls you get, the more powerful you&amp;#8217;ll likely become.  You don&amp;#8217;t need to own every part of the software to sell the product.  You just need your own unique advantage and that&amp;#8217;s where you should really focus on.&lt;/p&gt;
&lt;h3&gt;Background&lt;/h3&gt;
&lt;h4&gt;Why Android&lt;/h4&gt;
&lt;p&gt;Android is the event of the year with regards to mobile devices, which is our primary interest.  Many OEM/ODM manufactures and brand names in Taiwan have put development resources into it, while the government agencies provide budgets to encourage Android research and development.  We want to reuse as much resource as possible, so we picked it as our development focus.&lt;/p&gt;
&lt;h4&gt;Beagleboard&lt;/h4&gt;
&lt;p&gt;One of the problem we faced when 0xlab was just getting started is that it&amp;#8217;s not easy to get a hardware platform.  We picked &lt;a href=&quot;http://beagleboard.org/&quot;&gt;Beagleboard&lt;/a&gt; because it&amp;#8217;s modern, powerful, cheap and open with an active community.  We do not have any business relationship with TI, but we do like their idea of opening up hardware.  However, we are indeed the world&amp;#8217;s no.1 RMA customer with the highest return rate since we broke a lot of boards while trying to do hardware modifications.  We are software developers, after all&amp;#8230;&lt;/p&gt;
&lt;p&gt;Beagleboard is the platform we focused on, but it&amp;#8217;s not the only platform we are interested to work on.  We welcome people sending us their cool gadgets.  If you want to find out what Android can do on your device, send us some sample.  We may work on them and try to keep them in one piece.&lt;/p&gt;
&lt;h4&gt;More Info&lt;/h4&gt;
&lt;p&gt;We use git as our primary SCM, and use &lt;a href=&quot;http://gitorious.org/&quot;&gt;gitorious&lt;/a&gt; to host all of our projects.  Some projects with the same name were created on &lt;a href=&quot;http://code.google.com/&quot;&gt;google code&lt;/a&gt; as well for issue tracking and an easier to use wiki.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://0xlab.org&quot;&gt;0xlab.org&lt;/a&gt; is hosted on our own cost and acts as an entry point.  It provides basic information about us.  The most interesting page is perhaps &lt;a href=&quot;http://0xlab.org/planet.html&quot;&gt;Planet&lt;/a&gt;, since it acts as a aggregation of our blogs.&lt;/p&gt;
&lt;p&gt;Here is a list of all the rss feeds about our blogs and projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://0xlab.org/atom.xml&quot;&gt;http://0xlab.org/atom.xml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/feeds/p/0xdroid/updates/basic&quot;&gt;http://code.google.com/feeds/p/0xdroid/updates/basic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/feeds/p/0xlab-kernel/updates/basic&quot;&gt;http://code.google.com/feeds/p/0xlab-kernel/updates/basic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/feeds/p/esuit/updates/basic&quot;&gt;http://code.google.com/feeds/p/esuit/updates/basic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gitorious.org/0xdroid.atom&quot;&gt;http://gitorious.org/0xdroid.atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gitorious.org/0xlab-kernel.atom&quot;&gt;http://gitorious.org/0xlab-kernel.atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gitorious.org/android-eeepc.atom&quot;&gt;http://gitorious.org/android-eeepc.atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gitorious.org/android-obex.atom&quot;&gt;http://gitorious.org/android-obex.atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gitorious.org/esuit.atom&quot;&gt;http://gitorious.org/esuit.atom&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;About 0xlab&lt;/h3&gt;
&lt;p&gt;0xlab is founded on 4/27, 2009 in Taiwan by a group of enthused FOSS&lt;sup&gt;&lt;a name=&quot;fnr.3&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; developers, some of the finest.  Most of its members are of Linux background with rich experience in embedded systems and created/contributed to various open source projects such as Linux kernel, &lt;a href=&quot;http://code.google.com/p/opkg/&quot;&gt;opkg&lt;/a&gt;, &lt;a href=&quot;http://openocd.berlios.de/&quot;&gt;OpenOCD&lt;/a&gt;, &lt;a href=&quot;http://www.openembedded.org/&quot;&gt;OpenEmbedded&lt;/a&gt;, &lt;a href=&quot;http://qtopia.net/&quot;&gt;QT Extended&lt;/a&gt;, &lt;a href=&quot;http://www.packagekit.org/&quot;&gt;Packagekit&lt;/a&gt;, &lt;a href=&quot;http://www.freetype.org/&quot;&gt;FreeType&lt;/a&gt;, &lt;a href=&quot;http://www.kaffe.org/&quot;&gt;Kaffe&lt;/a&gt; and &lt;a&gt;LXDE&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;They met each other in the local FOSS community and at the startup &lt;a href=&quot;http://www.openmoko.com/&quot;&gt;Openmoko&lt;/a&gt;, from where they became familiar and connected with developers worldwide.  This differentiated them in pan-Asian because they stay much closer with the mainstream and are actively attending the ongoing development.&lt;/p&gt;
&lt;p&gt;The list of its current members could be found on our &lt;a href=&quot;http://gitorious.org/+0xlab&quot;&gt;gitorious&lt;/a&gt; page. 0xlab aims to be a virtual organization, but at the moment it mainly operates in Taipei.  0xlab could be reached at:&lt;/p&gt;
&lt;h4&gt;Contact Us&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;IRC: #0xlab&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;mailto:contact@0xlab.org&quot;&gt;mailto:contact@0xlab.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://0xlab.org/&quot;&gt;http://0xlab.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gitorious.org/+0xlab&quot;&gt;http://gitorious.org/+0xlab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/group/0xlab&quot;&gt;http://www.youtube.com/group/0xlab&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Mailing Lists&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/0xlab-devel&quot;&gt;http://groups.google.com/group/0xlab-devel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/0xlab-discuss&quot;&gt;http://groups.google.com/group/0xlab-discuss&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;a class=&quot;footnum&quot; name=&quot;fn.1&quot; href=&quot;http://asleepfromday.wordpress.com/category/0xlab/feed/#fnr.1&quot;&gt;1.&lt;/a&gt;  &lt;a href=&quot;http://googleblog.blogspot.com/2009/12/meaning-of-open.html&quot;&gt;http://googleblog.blogspot.com/2009/12/meaning-of-open.html&lt;/a&gt;
&lt;p&gt;&lt;a class=&quot;footnum&quot; name=&quot;fn.2&quot; href=&quot;http://asleepfromday.wordpress.com/category/0xlab/feed/#fnr.2&quot;&gt;2.&lt;/a&gt;  &lt;a href=&quot;http://jserv.blogspot.com/2009/07/0xlab-coscup-2009.html&quot;&gt;http://jserv.blogspot.com/2009/07/0xlab-coscup-2009.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;footnum&quot; name=&quot;fn.3&quot; href=&quot;http://asleepfromday.wordpress.com/category/0xlab/feed/#fnr.3&quot;&gt;3.&lt;/a&gt; Free and open source software, &lt;a href=&quot;http://en.wikipedia.org/wiki/Free_and_open_source_software&quot;&gt;http://en.wikipedia.org/wiki/Free_and_open_source_software&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;Filed under: &lt;a href=&quot;http://asleepfromday.wordpress.com/category/0xlab/&quot;&gt;0xlab&lt;/a&gt;, &lt;a href=&quot;http://asleepfromday.wordpress.com/category/android/&quot;&gt;Android&lt;/a&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/asleepfromday.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/asleepfromday.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/asleepfromday.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/asleepfromday.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/asleepfromday.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/asleepfromday.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/asleepfromday.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/asleepfromday.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/asleepfromday.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/asleepfromday.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/asleepfromday.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/asleepfromday.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/asleepfromday.wordpress.com/147/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/asleepfromday.wordpress.com/147/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=asleepfromday.wordpress.com&amp;blog=1401761&amp;post=147&amp;subd=asleepfromday&amp;ref=&amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 13 Aug 2010 03:00:51 +0000</pubDate>
</item>
<item>
	<title>Hacking at 0xlab: 0xlab 在 COSCUP 2010 的議程分享</title>
	<guid>tag:blogger.com,1999:blog-1795333590425870072.post-691997504157095682</guid>
	<link>http://jserv.blogspot.com/2010/08/0xlab-coscup-2010.html</link>
	<description>&lt;center&gt;&lt;img src=&quot;http://coscup.org/2009/zh_tw/wp-content/uploads/2009/06/0xlab-logo.png&quot; height=&quot;80&quot; width=&quot;160&quot; /&gt;&lt;/center&gt;一年一度的「&lt;a href=&quot;http://coscup.org/2010/zh-tw&quot;&gt;COSCUP / 開源人年會&lt;/a&gt;」即將於八月 14 與 15 兩日舉辦，因為今年與 GNOME 亞洲峰會合辦，造成空前的盛大。&lt;a href=&quot;http://0xlab.org/&quot;&gt;0xlab&lt;/a&gt; 除了很榮幸能成為 COSCUP 贊助單位之外，也有四位開發者獲邀分享若干技術議程，以下摘錄 COSCUP 的演講摘要：&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_XYo3WYqTnPk/Sm7udqUbUDI/AAAAAAAAAts/bIVBvHnqrYY/s1600-h/walkingice.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_XYo3WYqTnPk/Sm7udqUbUDI/AAAAAAAAAts/bIVBvHnqrYY/s320/walkingice.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5363486399588421682&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;講題：&lt;span&gt;Android Game Engine 比較&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;講者： &lt;span&gt;walkingice&lt;/span&gt; (0xlab)&lt;br /&gt;&lt;dl class=&quot;speak_desc&quot; id=&quot;s_36&quot;&gt;&lt;dd&gt;摘要：隨著 Android的蓬勃發展，遊戲亦如雨後春筍般冒出。避免重複造輪子，勢必要藉助現有的遊戲引擎，讓遊戲開發者可以專注在遊戲的最核心價值 — 樂趣&lt;/dd&gt;&lt;/dl&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_XYo3WYqTnPk/Sm7uXucelAI/AAAAAAAAAtk/7J9wyda-vLs/s1600-h/tick.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_XYo3WYqTnPk/Sm7uXucelAI/AAAAAAAAAtk/7J9wyda-vLs/s320/tick.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5363486297616716802&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;講題：&lt;span&gt;Be &quot;Android&quot;&lt;/span&gt;&lt;dl class=&quot;speak_desc&quot; id=&quot;s_31&quot;&gt;&lt;dt&gt;講者： &lt;span&gt;tick&lt;/span&gt; (0xlab), &lt;span&gt;matt&lt;/span&gt; (0xlab)&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt class=&quot;clearleft&quot;&gt;摘要：將 &lt;a href=&quot;http://code.google.com/p/0xdroid/&quot;&gt;0xdroid&lt;/a&gt; 打造成為機器人平台。Robocat 是為 &lt;a href=&quot;http://code.google.com/p/0xdroid/&quot;&gt;0xdroid&lt;/a&gt; 所設計的機器人控制系統，此議程將從硬體架構、系統設計、函式庫及應用程式等不同層面切入，介紹如何打造自己的 ”Android”&lt;/dt&gt;&lt;/dl&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_XYo3WYqTnPk/Sm7umGJqd2I/AAAAAAAAAt0/0TPIMhZjTb0/s1600-h/jserv.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_XYo3WYqTnPk/Sm7umGJqd2I/AAAAAAAAAt0/0TPIMhZjTb0/s320/jserv.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5363486544498423650&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;講題：&lt;span&gt;打造特製的 Android Toolchain&lt;/span&gt;&lt;dl class=&quot;speak_desc&quot; id=&quot;s_15&quot;&gt;&lt;dt&gt;講者：Jim Huang &quot;&lt;span&gt;jserv&lt;/span&gt;&quot; (0xlab)&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt class=&quot;clearleft&quot;&gt;摘要：探討 0xlab 近來的實驗，從修改 Android 的 GNU Toolchain 到提供 source-to-source compiler，提出若干基於特定需求，從而發展的編譯器技術的新應用&lt;/dt&gt;&lt;/dl&gt;涵蓋 Android Toolchain, Robot, Android Gaming 開發，依據慣例，屆時我們也會發布最近的成果，期待您的蒞臨指教，謝謝！&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1795333590425870072-691997504157095682?l=jserv.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 02 Aug 2010 03:06:02 +0000</pubDate>
	<author>noreply@blogger.com (jserv)</author>
</item>
<item>
	<title>Reading, Writing and Arithmetic: 0xdroid release beagle-eclair-0x5, devkit8k-eclair-0x5 (with/without SGX)</title>
	<guid>tag:blogger.com,1999:blog-6730068706524524033.post-2907505069115326595</guid>
	<link>http://i-miss-erin.blogspot.com/2010/08/0xdroid-release-beagle-eclair-0x5.html</link>
	<description>0xlab team is glad to announce the fifth release of 0xdroid. 0xdroid is community-developed Android distribution by 0xlab, runs on omap3 based boards include beagleboard and devkit8000.&lt;br /&gt;&lt;br /&gt;Version: &lt;span&gt;beagle-eclair-0x5-sgx, beagle-eclair-0x5-no-sgx, devkit8k-eclair-0x5-sgx, devkit8k-eclair-0x5-no-sgx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Version: beagle-eclair-0x5&lt;br /&gt;Date: July 30, 2010&lt;br /&gt;Release Image:&lt;br /&gt;&lt;a href=&quot;http://downloads.0xlab.org/release/beagle-eclair-0x5-no-sgx/beagle-eclair-0x5_no_sgx.zip&quot;&gt;beagle-eclair-0x5_no_sgx.zip&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://downloads.0xlab.org/release/beagle-eclair-0x5-sgx/beagle-eclair-0x5_sgx.zip&quot;&gt;beagle-eclair-0x5_sgx.zip&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://downloads.0xlab.org/release/devkit8k-eclair-0x5-no-sgx/devkit8k-eclair-0x5_no_sgx.zip&quot;&gt;devkit8k-eclair-0x5_no_sgx.zip&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://downloads.0xlab.org/release/devkit8k-eclair-0x5-sgx/devkit8k-eclair-0x5_sgx.zip&quot;&gt;devkit8k-eclair-0x5_sgx.zip&lt;/a&gt;&lt;br /&gt;MD5 sum:&lt;br /&gt;&lt;a href=&quot;http://downloads.0xlab.org/release/beagle-eclair-0x5-no-sgx/md5sum.txt&quot;&gt;beagle-eclair-0x5_no_sgx&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://downloads.0xlab.org/release/beagle-eclair-0x5-sgx/md5sum.txt&quot;&gt;beagle-eclair-0x5_sgx&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://downloads.0xlab.org/release/devkit8k-eclair-0x5-no-sgx/md5sum.txt&quot;&gt;devkit8k-eclair-0x5_no_sgx&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://downloads.0xlab.org/release/devkit8k-eclair-0x5-sgx/md5sum.txt&quot;&gt;devkit8k-eclair-0x5_sgx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Release Details&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Eclair codebase&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: Major Linux kernel upgrade: from 2.6.29 to &lt;a href=&quot;http://gitorious.org/0xlab-kernel/kernel/commits/omap3-2.6.32&quot;&gt;2.6.32&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: Support TI's &lt;a href=&quot;http://code.google.com/p/0xdroid/wiki/How_to_Integrate_with_SGX&quot;&gt;Android PowerVR SGX&lt;/a&gt; (hardware 2D/3D engine)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: Support Android USB gadget: adb and mass-storage (issue &lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=95&quot;&gt;#95&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Note: 0xdroid no longer support usbnet gadget driver. Use adb or USB Ethernet instead.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: new Bluetooth Extensions -- HID (issue &lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=102&quot;&gt;#102&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: Make Launcher2 really usable (issue &lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=76&quot;&gt;#76&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: Make Gallery3D workable by fixing PixelFlinger regressions (issue &lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=107&quot;&gt;#107&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: Touchscreen Calibration shouldn't require reboot (issue &lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=94&quot;&gt;#94&lt;/a&gt;, issue&lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=99&quot;&gt; #99&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: Robocat i2c port support (issue &lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=134&quot;&gt;#134&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;Feature: Improved libgralloc for non HW accelerated target (issue&lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=108&quot;&gt; #108&lt;/a&gt;, issue &lt;a href=&quot;http://code.google.com/p/0xdroid/issues/detail?id=133&quot;&gt;#133&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;For more detail, please reference our &lt;a href=&quot;http://code.google.com/p/0xdroid/wiki/Roadmap&quot;&gt;roadmap and issues tracking&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Where to download images&lt;/b&gt;&lt;br /&gt;You can grab the image from &lt;a href=&quot;http://downloads.0xlab.org/release/&quot;&gt;here&lt;/a&gt; and following the steps described on the &lt;a href=&quot;http://code.google.com/p/0xdroid/wiki/UsingPreBuiltImages&quot;&gt;wiki page&lt;/a&gt; to test the image.&lt;br /&gt;&lt;br /&gt;This release comes with &lt;a href=&quot;http://processors.wiki.ti.com/index.php/Render_to_Texture_with_OpenGL_ES#Introduction&quot;&gt;PowerVR SGX&lt;/a&gt; from Texas Instruments. If you try both two images with SGX and without SGX, you would tell how amazing it displays photos in Gallery 3D application. Like ususal, it also comes with a happy Installer and it would bring you an Android Eclair system in few seconds. If you are looking for more details about the integration, you could reference to this wiki page.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How to build from scratch&lt;/b&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt; $ repo init -u git://gitorious.org/0xdroid/manifest.git -b beagle-eclair&lt;br /&gt; $ echo &quot;TARGET_PRODUCT := beagleboard&quot; &gt; buildspec.mk&lt;br /&gt; $ echo &quot;TARGET_PRODUCT := devkit8000&quot; &gt; buildspec.mk ( if build for devkit8000 )&lt;br /&gt; $ echo &quot;INSTALL_PREBUILT_DEMO_APKS := true&quot; &gt;&gt; buildspec.mk ( optional for adding prebuilt demo apks )&lt;br /&gt; $ cd .repo/manifests/&lt;br /&gt; $ git checkout -b beagle-eclair-0x5-release beagle-eclair-0x5&lt;br /&gt; $ repo sync&lt;br /&gt; $ repo forall -c &quot;git checkout -b beagle-eclair-0x5-release beagle-eclair-0x5&quot;&lt;br /&gt; $ make (or make -j4 if there are 4 cores)&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Give us feedback&lt;/b&gt;&lt;br /&gt;Join the &lt;a href=&quot;http://groups.google.com/group/0xlab-devel&quot;&gt;0xlab Development mailing-list&lt;/a&gt;&lt;br /&gt;Join the &lt;a href=&quot;http://groups.google.com/group/0xlab-discuss&quot;&gt;0xlab General discussion mailing-list&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://code.google.com/p/0xdroid/issues&quot;&gt;Issue tracking&lt;/a&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6730068706524524033-2907505069115326595?l=i-miss-erin.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 02 Aug 2010 01:21:02 +0000</pubDate>
	<author>icedventilatte17@gmail.com (erin)</author>
</item>
<item>
	<title>Abacus: Power is not enough</title>
	<guid>tag:blogger.com,1999:blog-8469912421183119143.post-2238543784023825907</guid>
	<link>http://matthsu-abacus.blogspot.com/2010/07/power-is-not-enough.html</link>
	<description>Eventually, I got damn-spare time to post something interesting.&lt;br /&gt;Last update was posted in the last year. It's so obvious to see&lt;br /&gt;how busy/lazy I was in the past half year.&lt;br /&gt;&lt;br /&gt;Tick and I are managed to build a robot project based on Beagleboard. We plan to share this project and concepts behind this on the event of &lt;a href=&quot;http://coscup.org/2010/zh-tw/program&quot;&gt;COSCUP&lt;/a&gt;.&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_YkjZ-0s1Rbg/TD1UZPlmp9I/AAAAAAAAAEY/Dp4xKRGDnAE/s1600/IMG_20100713_121643.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_YkjZ-0s1Rbg/TD1UZPlmp9I/AAAAAAAAAEY/Dp4xKRGDnAE/s200/IMG_20100713_121643.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5493639913119590354&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Well, I can say so far, the most tough work is not writing software to control robot. Instead, it's all about hardware such as providing power to servos. The ultimate goal is to make everything on robot wireless such as communication and power supply. Of course high capacity battery becomes the only option. Initially, we tried Ni-MH battery bought from RC car store. Even battery is full, it can't drive all revolute joints (servos). So we need plan B. :(&lt;br /&gt;&lt;br /&gt;Occasionally, I found lead acid battery might be the candidate. After go shopping in the Guang-Hua market, Its voltage and capacity and size are all satisfied with our requirement. Most of important, it could drive all servos, totally 18 servos. Here is snapshot of the battery and debut robot.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_YkjZ-0s1Rbg/TD1SG0iVg3I/AAAAAAAAAEI/Nulq6nGmwSI/s1600/IMG_20100713_095304.jpg&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_YkjZ-0s1Rbg/TD1SG0iVg3I/AAAAAAAAAEI/Nulq6nGmwSI/s200/IMG_20100713_095304.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5493637397597225842&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8469912421183119143-2238543784023825907?l=matthsu-abacus.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 13 Jul 2010 23:20:00 +0000</pubDate>
	<author>MattHsu1016@gmail.com (matt)</author>
</item>
<item>
	<title>Reading, Writing and Arithmetic: Connect with Bluetooth keyboard and mice in Android Eclair</title>
	<guid>tag:blogger.com,1999:blog-6730068706524524033.post-3893492588603199007</guid>
	<link>http://i-miss-erin.blogspot.com/2010/07/connect-with-bluetooth-keyboard-and.html</link>
	<description>In Nexus one without HID profile:&lt;div&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGsXUBPEcI/AAAAAAAAGZY/tbOzjZLVnK4/s1600/device06.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGsXUBPEcI/AAAAAAAAGZY/tbOzjZLVnK4/s320/device06.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5490358937252204994&quot; /&gt;&lt;/a&gt;  &lt;a href=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGsXP8AyPI/AAAAAAAAGZQ/-gp7C8LKZ1k/s1600/device07.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGsXP8AyPI/AAAAAAAAGZQ/-gp7C8LKZ1k/s320/device07.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5490358936156555506&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Qualcomm MSM72xx platform with HID profile support:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_fB3UGiuVTOI/TDGtL7D_GoI/AAAAAAAAGZw/DSTYorX7H4E/s1600/device01.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_fB3UGiuVTOI/TDGtL7D_GoI/AAAAAAAAGZw/DSTYorX7H4E/s320/device01.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5490359841085921922&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGtLjLWYlI/AAAAAAAAGZo/8cKRsZnUdNg/s1600/device02.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGtLjLWYlI/AAAAAAAAGZo/8cKRsZnUdNg/s320/device02.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5490359834674356818&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGtLjLWYlI/AAAAAAAAGZo/8cKRsZnUdNg/s1600/device02.png&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_fB3UGiuVTOI/TDGtKoZUKWI/AAAAAAAAGZg/G9zkIKZS5bg/s1600/device03.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_fB3UGiuVTOI/TDGtKoZUKWI/AAAAAAAAGZg/G9zkIKZS5bg/s320/device03.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5490359818895239522&quot; /&gt;&lt;/a&gt;  &lt;a href=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGtMXkTfgI/AAAAAAAAGZ4/5h9zIi6mSLI/s1600/device04.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TDGtMXkTfgI/AAAAAAAAGZ4/5h9zIi6mSLI/s320/device04.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5490359848737668610&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apparently, it is more friendly and user can connect with bluetooth keyboard from Setting UI application. Use can type words from a real keyboard, not from a tiny touch screen. All code are in &lt;a href=&quot;http://gitorious.org/0xdroid&quot;&gt;0xdroid project&lt;/a&gt; based on Eclair.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6730068706524524033-3893492588603199007?l=i-miss-erin.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 05 Jul 2010 03:09:48 +0000</pubDate>
	<author>icedventilatte17@gmail.com (erin)</author>
</item>
<item>
	<title>Reading, Writing and Arithmetic: Add Bluetooth HID profile in Android</title>
	<guid>tag:blogger.com,1999:blog-6730068706524524033.post-8268474278230014550</guid>
	<link>http://i-miss-erin.blogspot.com/2010/06/add-bluetooth-hid-profile-in-android.html</link>
	<description>The &lt;a href=&quot;http://www.bluetooth.com/English/Technology/Works/pages/hid.aspx&quot;&gt;HID profile&lt;/a&gt; defines the protocols, procedures and features to be used by Bluetooth HID such as keyboards, pointing devices, gaming devices and remote monitoring devices. When I tried bluetooth function in &lt;a href=&quot;http://i-miss-erin.blogspot.com/2009/09/connect-bluetooth-keyboard-in-android.html&quot;&gt;Android Dev Phone (G1)&lt;/a&gt; last year, I use a utility tool 'hidd' which is from native bluez. It is a command tool. After I can pair with Apple Wireless keyboard sucessfully, I type 'hidd ' from terminal, then I can start to use it. But it's not automatically, I cannot connect it from Setting UI application either. Therefore, we should add a new Bluetooth HID profile in Android, to make it be connectable, like a BT headset or speaker.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;br /&gt;# hidd --connect 00:1D:4F:A7:9A:49&lt;br /&gt;&lt;br /&gt;# hidd --show&lt;br /&gt;00:1D:4F:A7:9A:49 Apple Inc. Keyboard [05ac:022c] connected&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_fB3UGiuVTOI/TCBWxHInDJI/AAAAAAAAGVM/Xrd5RAESMOI/s1600/device.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_fB3UGiuVTOI/TCBWxHInDJI/AAAAAAAAGVM/Xrd5RAESMOI/s320/device.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5485479747866004626&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_fB3UGiuVTOI/TCBWw84PEsI/AAAAAAAAGVE/wclFFHM-xtw/s1600/device02.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_fB3UGiuVTOI/TCBWw84PEsI/AAAAAAAAGVE/wclFFHM-xtw/s320/device02.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5485479745112969922&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.0xlab.org/&quot;&gt;0xlab&lt;/a&gt; is a member of &lt;a href=&quot;http://www.oesf.org/forum/&quot;&gt;OESF (Oopen Embedded Software Foundation)&lt;/a&gt; and they have some very useful bluetooth extensions in their '&lt;a href=&quot;http://www.oesf.jp/modules/developer/index.php?content_id=2&quot;&gt;Embedded Master 1&lt;/a&gt;' project. Althought these features are based on Android Donuts, they are still a very good reference. Therefore, I use &lt;a href=&quot;http://github.com/OESF/Embedded-Master-ARM&quot;&gt;their code&lt;/a&gt; and modify few parts of code for newer Android Eclair version. The difference of Eclair from Donuts in Bluetooth is bluez dbus API changes and some java API changes in frameworks. I've committed my patches to 0xdroid project in gitouris. If you'd like to use my work, you could apply patches in &lt;a href=&quot;http://gitorious.org/0xdroid/frameworks_base/commits/beagle-eclair&quot;&gt;Frameworks&lt;/a&gt; and &lt;a href=&quot;http://gitorious.org/0xdroid/packages_apps_settings/commits/beagle-eclair&quot;&gt;Setting application&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TCBWwN4lbJI/AAAAAAAAGU0/Knhqc7BcKQo/s1600/device04.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TCBWwN4lbJI/AAAAAAAAGU0/Knhqc7BcKQo/s320/device04.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5485479732497968274&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_fB3UGiuVTOI/TCBWvx-fa1I/AAAAAAAAGUs/3NhKIyyj6XI/s1600/device05.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_fB3UGiuVTOI/TCBWvx-fa1I/AAAAAAAAGUs/3NhKIyyj6XI/s320/device05.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5485479725006547794&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Beside the code in Frameworks and Settings UI application, I have to enable some features in &lt;a href=&quot;http://gitorious.org/0xlab-kernel&quot;&gt;kernel&lt;/a&gt;, since I use Apple Wireless Keyboard for this experiment. If I don't enable them, I can't never create an input device for Apple keyboard in Android. It took me few days to debug this issue. I cannot tell why I can use hidd to connect with it without any problem, but cannot use Dbus method to connect with it correctly. It's very weird. It's said 'Connected', but I cannot receive any key events or cannot see a virtual input device in Android system. Furthermore, there is no problem on connecting with a BT mice at all. Both methods are fine.&lt;br /&gt;&lt;br /&gt;When I tried to implement any features in Android, I would try it in my Ubuntu machine first. They have linux kenel and many native code are the same. Based on the experiences in Ubuntu, I can know how it works and the normal flow what it looks like. In Ubuntu, when I connect with an Apple Wireless Keyboard, I can see the device name from dmesg. But I cannot see the device name in Android at all, I can see BT mouse device name in Android. Therefore, I check menuconfig on building kernel, and then I see some HID special drivers. I just enable features like &lt;span&gt;CONFIG_HID_APPLE=y, CONFIG_HID_DEBUG=y, CONFIG_HIDRAW=y, CONFIG_USB_HIDDEV=y&lt;/span&gt;. After using the new kenel image, I can connect/disconnect with a BT keyboard from Setting UI application normally. I've verified my work in Beagle board and Qualcomm MSM72xx platform.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TCBYdhwfyQI/AAAAAAAAGVc/6pZMBY-lskE/s1600/screen02.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TCBYdhwfyQI/AAAAAAAAGVc/6pZMBY-lskE/s320/screen02.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5485481610438494466&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TCBYdK9x8kI/AAAAAAAAGVU/eu--uEAK_kU/s1600/screen01.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_fB3UGiuVTOI/TCBYdK9x8kI/AAAAAAAAGVU/eu--uEAK_kU/s320/screen01.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5485481604320195138&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6730068706524524033-8268474278230014550?l=i-miss-erin.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 21 Jun 2010 23:35:43 +0000</pubDate>
	<author>icedventilatte17@gmail.com (erin)</author>
</item>
<item>
	<title>Linux &amp; Ocarina: Eclair Libgralloc Deadlock Problem</title>
	<guid>tag:blogger.com,1999:blog-4272939767197667332.post-1466910094907380095</guid>
	<link>http://linuxocarina.blogspot.com/2010/06/ecliar-libgralloc-deadlock-problem.html</link>
	<description>As we are developing &lt;a href=&quot;http://gitorious.org/0xdroid&quot;&gt;0xdroid&lt;/a&gt; beagle-eclair branch, we&amp;nbsp;occasionally encounter screen flipping issue. This issue rarely happens however it bothers the user experience very much when running some resource eating applications. Last week in the Computex Taipei 2010 show, we demoed 0xdroid beagle-eclair connecting wireless modules and played games. I noticed that this issue happens very often while playing a game called &quot;&lt;a href=&quot;http://www.frozen-bubble.org/&quot;&gt;Frozen Bubble&lt;/a&gt;&quot;. (It's a good game, we all love this game a lot, and spent a lot of time on it. ;-) ) It's kind of embarrassing when the screen keeps flipping on the show. Therefore I decided to dig out this issue.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Beside of 0xdroid on &lt;a href=&quot;http://beagleboard.org/&quot;&gt;beagleboard&lt;/a&gt; and &lt;a href=&quot;http://www.timll.com/&quot;&gt;Devkit8000&lt;/a&gt;, I tested some other platforms and find out&amp;nbsp;actually&amp;nbsp;almost all of them having this problem. Therefore I suspected it's not a hardware related problem. Maybe a framework or HAL issue. We noticed that when the screen is flipping, the logcat message will complain as following&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;prettyprint&quot;&gt;E/SurfaceFlinger(  768): eglSwapBuffers: EGL error 0x3002 (EGL_BAD_ACCESS)&lt;br /&gt;E/gralloc (  768): handle 0x13f8c0 not locked&lt;br /&gt;~E/gralloc (  768): handle 0x13f8c0 already locked for write&lt;br /&gt;E/libagl  (  768): eglSwapBuffers() failed to lock buffer 0x1368e0 (640x480)&lt;br /&gt;E/SurfaceFlinger(  768): eglSwapBuffers: EGL error 0x3002 (EGL_BAD_ACCESS)&lt;br /&gt;E/gralloc (  768): handle 0x13f8c0 not locked&lt;br /&gt;E/gralloc (  768): handle 0x13f8c0 already locked for write&lt;br /&gt;E/libagl  (  768): eglSwapBuffers() failed to lock buffer 0x1368e0 (640x480)&lt;br /&gt;E/SurfaceFlinger(  768): eglSwapBuffers: EGL error 0x3002 (EGL_BAD_ACCESS)&lt;br /&gt;E/gralloc (  768): handle 0x13f8c0 not locked&lt;br /&gt;E/gralloc (  768): handle 0x13f8c0 already locked for write&lt;br /&gt;E/libagl  (  768): eglSwapBuffers() failed to lock buffer 0x1368e0 (640x480)&lt;br /&gt;E/SurfaceFlinger(  768): eglSwapBuffers: EGL error 0x3002 (EGL_BAD_ACCESS)&lt;br /&gt;E/gralloc (  768): handle 0x13f8c0 not locked&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;Therefore I checked the libgralloc and adding some debug message. The libgralloc plugin 0xdroid used is branched from original eclair source tree. I took few hours created the omap3/libgralloc at the first day when I got eclair source code months ago. Since it works well for the most of time, I didn't pay too much attention to it, until I found the deadlock issue goes crazy on frozen bubble.&lt;br /&gt;After noticing the lock log and swap error, I took a close look of the gralloc_lock and gralloc_unlock in hardware/omap3/libgralloc/mapper.c&lt;/div&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;int gralloc_lock(gralloc_module_t const* module,&lt;br /&gt;        buffer_handle_t handle, int usage,&lt;br /&gt;        int l, int t, int w, int h,&lt;br /&gt;        void** vaddr)&lt;br /&gt;{&lt;br /&gt;    if (private_handle_t::validate(handle) &amp;lt; 0)&lt;br /&gt;        return -EINVAL;&lt;br /&gt;&lt;br /&gt;    int err = 0;&lt;br /&gt;    private_handle_t* hnd = (private_handle_t*)handle;&lt;br /&gt;    int32_t current_value, new_value;&lt;br /&gt;    int retry;&lt;br /&gt;&lt;br /&gt;    do {&lt;br /&gt;        current_value = hnd-&amp;gt;lockState;&lt;br /&gt;        new_value = current_value;&lt;br /&gt;&lt;br /&gt;        if (current_value &amp;amp; private_handle_t::LOCK_STATE_WRITE) {&lt;br /&gt;            // already locked for write &lt;br /&gt;            LOGE(&quot;handle %p already locked for write&quot;, handle);&lt;br /&gt;            return -EBUSY;&lt;br /&gt;        } else if (current_value &amp;amp; private_handle_t::LOCK_STATE_READ_MASK) {&lt;br /&gt;            // already locked for read&lt;br /&gt;            if (usage &amp;amp; (GRALLOC_USAGE_SW_WRITE_MASK | GRALLOC_USAGE_HW_RENDER)) {&lt;br /&gt;                LOGE(&quot;handle %p already locked for read&quot;, handle);&lt;br /&gt;                return -EBUSY;&lt;br /&gt;            } else {&lt;br /&gt;                // this is not an error&lt;br /&gt;                //LOGD(&quot;%p already locked for read... count = %d&quot;, &lt;br /&gt;                //        handle, (current_value &amp;amp; ~(1&amp;lt;&amp;lt;31)));&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // not currently locked&lt;br /&gt;        if (usage &amp;amp; (GRALLOC_USAGE_SW_WRITE_MASK | GRALLOC_USAGE_HW_RENDER)) {&lt;br /&gt;            // locking for write&lt;br /&gt;            new_value |= private_handle_t::LOCK_STATE_WRITE;&lt;br /&gt;        }&lt;br /&gt;        new_value++;&lt;br /&gt;&lt;br /&gt;        retry = &lt;b&gt;android_atomic_cmpxchg&lt;/b&gt;(current_value, new_value, &lt;br /&gt;    } while (retry);&lt;br /&gt;&lt;br /&gt;    if (new_value &amp;amp; private_handle_t::LOCK_STATE_WRITE) {&lt;br /&gt;        // locking for write, store the tid&lt;br /&gt;        hnd-&amp;gt;writeOwner = gettid();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (usage &amp;amp; (GRALLOC_USAGE_SW_READ_MASK | GRALLOC_USAGE_SW_WRITE_MASK)) {&lt;br /&gt;        if (!(current_value &amp;amp; private_handle_t::LOCK_STATE_MAPPED)) {&lt;br /&gt;            // we need to map for real&lt;br /&gt;            pthread_mutex_t* const lock = &amp;amp;sMapLock;&lt;br /&gt;            pthread_mutex_lock(lock);&lt;br /&gt;            if (!(hnd-&amp;gt;lockState &amp;amp; private_handle_t::LOCK_STATE_MAPPED)) {&lt;br /&gt;                err = gralloc_map(module, handle, vaddr);&lt;br /&gt;                if (err == 0) {&lt;br /&gt;                    android_atomic_or(private_handle_t::LOCK_STATE_MAPPED,&lt;br /&gt;                            (volatile int32_t*)&amp;amp;(hnd-&amp;gt;lockState));&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            pthread_mutex_unlock(lock);&lt;br /&gt;        }&lt;br /&gt;        *vaddr = (void*)hnd-&amp;gt;base;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return err;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int gralloc_unlock(gralloc_module_t const* module, &lt;br /&gt;        buffer_handle_t handle)&lt;br /&gt;{&lt;br /&gt;    if (private_handle_t::validate(handle) &amp;lt; 0)&lt;br /&gt;        return -EINVAL;&lt;br /&gt;&lt;br /&gt;    private_handle_t* hnd = (private_handle_t*)handle;&lt;br /&gt;    int32_t current_value, new_value;&lt;br /&gt;&lt;br /&gt;    do {&lt;br /&gt;        current_value = hnd-&amp;gt;lockState;&lt;br /&gt;        new_value = current_value;&lt;br /&gt;&lt;br /&gt;        if (current_value &amp;amp; private_handle_t::LOCK_STATE_WRITE) {&lt;br /&gt;            // locked for write&lt;br /&gt;            &lt;b&gt;if (hnd-&amp;gt;writeOwner == gettid()) {&lt;br /&gt;                hnd-&amp;gt;writeOwner = 0;&lt;br /&gt;                new_value &amp;amp;= ~private_handle_t::LOCK_STATE_WRITE;&lt;br /&gt;            }&lt;/b&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if ((new_value &amp;amp; private_handle_t::LOCK_STATE_READ_MASK) == 0) {&lt;br /&gt;            LOGE(&quot;handle %p not locked&quot;, handle);&lt;br /&gt;            return -EINVAL;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        new_value--;&lt;br /&gt;&lt;br /&gt;    } while (&lt;b&gt;android_atomic_cmpxchg&lt;/b&gt;(current_value, new_value, &lt;br /&gt;            (volatile int32_t*)&amp;amp;hnd-&amp;gt;lockState));&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;The code looks reasonably for the first look. Lock and unlock pair looks good. However there is a very tricky part &quot;&lt;b&gt;android_atomic_cmpxchg may fail&lt;/b&gt;&quot;. Understanding this, it is not hard to see there is a potential bug in gralloc_unlock. &amp;nbsp;If&amp;nbsp;android_atomic_cmpxchg fails, it will run the do while loop for more than once. However for the first run, the&amp;nbsp;&lt;b&gt;hnd-&amp;gt;writeOwner will be changed to 0&lt;/b&gt;. &amp;nbsp;And then the new_value will not be changed anymore. This lock will goes crazy here after.&lt;br /&gt;&lt;br /&gt;The &lt;a href=&quot;http://www.gitorious.org/0xdroid/hardware_omap3_libgralloc/commit/2741d2b66221750bb27c692cf6615e2d42499690&quot;&gt;patch&lt;/a&gt;&amp;nbsp;solves this problem.&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;diff --git a/mapper.cpp b/mapper.cpp&lt;br /&gt;index 16ebcc2..1f3e722 100644&lt;br /&gt;--- a/mapper.cpp&lt;br /&gt;+++ b/mapper.cpp&lt;br /&gt;@@ -267,13 +267,13 @@ int gralloc_unlock(gralloc_module_t const* module,&lt;br /&gt;         if (current_value &amp;amp; private_handle_t::LOCK_STATE_WRITE) {&lt;br /&gt;             // locked for write&lt;br /&gt;             if (hnd-&amp;gt;writeOwner == gettid()) {&lt;br /&gt;-                hnd-&amp;gt;writeOwner = 0;&lt;br /&gt;                 new_value &amp;amp;= ~private_handle_t::LOCK_STATE_WRITE;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt; &lt;br /&gt;         if ((new_value &amp;amp; private_handle_t::LOCK_STATE_READ_MASK) == 0) {&lt;br /&gt;             LOGE(&quot;handle %p not locked&quot;, handle);&lt;br /&gt;+            hnd-&amp;gt;writeOwner = 0;&lt;br /&gt;             return -EINVAL;&lt;br /&gt;         }&lt;br /&gt; &lt;br /&gt;@@ -282,5 +282,6 @@ int gralloc_unlock(gralloc_module_t const* module,&lt;br /&gt;     } while (android_atomic_cmpxchg(current_value, new_value, &lt;br /&gt;             (volatile int32_t*)&amp;amp;hnd-&amp;gt;lockState));&lt;br /&gt; &lt;br /&gt;+    hnd-&amp;gt;writeOwner = 0;&lt;br /&gt;     return 0;&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It make sure the value hnd-&amp;gt;writeOwner is the same as the first loop, if&amp;nbsp;android_atomic_cmpxchg fails. &lt;br /&gt;&lt;br /&gt;This issue comes from the original eclair source tree, and it is still&lt;a href=&quot;http://android.git.kernel.org/?p=platform/hardware/libhardware.git;a=blob;f=modules/gralloc/mapper.cpp;h=e2caf79e73b9c7e2d9cf3a7980df16156e703813;hb=HEAD#l266&quot;&gt; there&lt;/a&gt;, and had been inherited to many different platforms. &amp;nbsp;If you encounter two frames&amp;nbsp;crazily flipping and having the lock message, you may try to take a look of your libgralloc.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4272939767197667332-1466910094907380095?l=linuxocarina.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 10 Jun 2010 09:50:15 +0000</pubDate>
	<author>ticktock35@0xlab.org (Tick)</author>
</item>
<item>
	<title>Hacking at 0xlab: 在 Android/Dalvik 環境引入 precompiled class 的實驗</title>
	<guid>tag:blogger.com,1999:blog-1795333590425870072.post-1318880329214597474</guid>
	<link>http://jserv.blogspot.com/2010/05/androiddalvik-precompiled-class.html</link>
	<description>延續筆者去年的紀錄「&lt;a href=&quot;http://jserv.blogspot.com/2009/04/compiler-mobile.html&quot;&gt;當 Compiler 遇上 Mobile&lt;/a&gt;」，最近我們又獲得一些進展，是在 Android 的 Dalvik 虛擬機器環境中，引入 pre-compiled class 的實驗，除了可改善執行時期的效能、記憶體使用量外，另外就是避免在「&lt;a href=&quot;http://jserv.blogspot.com/2010/05/android.html&quot;&gt;反組譯並修改 Android 應用程式實例&lt;/a&gt;」一文可見的資訊保護議題。&lt;br /&gt;&lt;br /&gt;其實十幾年前，在 Java 平台中就有相當多團隊提出可行的方案，而世界上第一個開放原始碼的 &lt;a href=&quot;http://www.kaffe.org/&quot;&gt;Kaffe&lt;/a&gt; 虛擬機器專案，早在 1999 年即提出實做 &quot;&lt;a href=&quot;http://kaffe.org/cgi-bin/cvsweb/kaffe/FAQ/FAQ.gcj?rev=1.3;content-type=text%2Fplain&quot;&gt;Kaffe/GCJ integration&lt;/a&gt;&quot;，成功地將 GCJ (GCC for Java) 自 Java class/source 編譯得到的機械碼，當作 pre-compiled shared library，讓 &lt;a href=&quot;http://www.kaffe.org/&quot;&gt;Kaffe&lt;/a&gt;e VM 讀取，預期可有效改善執行效能並縮減起始時間。&lt;a href=&quot;http://www.gnu.org/software/classpath/&quot;&gt;GNU Classpath&lt;/a&gt; 專案主持人 Mark Wielaard 在 LWN 的文章 &quot;&lt;a href=&quot;http://lwn.net/Articles/130796/&quot;&gt;GCJ - past, present, and future&lt;/a&gt;&quot; 提到相關的歷史與技術背景，最早可回溯到 Cygnus solutions 時期 (RedHat 尚未併購) 的 GCJ 計畫提案 -- &quot;&lt;a href=&quot;http://gcc.gnu.org/java/papers/gcc-java.html&quot;&gt;A Gcc-based Java Implementation&lt;/a&gt;&quot;。&lt;br /&gt;&lt;br /&gt;為了降低實做的複雜度，筆者最早採用 &lt;a href=&quot;http://llvm.org/&quot;&gt;LLVM&lt;/a&gt; 與 &lt;a href=&quot;http://icedtea.classpath.org/&quot;&gt;IcedTea&lt;/a&gt; 作為系統框架，不過一直到今年春節，整體進度還是陷入膠著的狀態。現在則引入 &lt;a href=&quot;http://www.vishia.org/Java2C/html/features.html&quot;&gt;Java2C&lt;/a&gt; 搭配 PGO (Profile-Guided Optimization) 與統計模型，嘗試分析運行於 Dalvik VM 的 Android activity / system server，佔用系統資源最頻繁的項目，並預先編譯 (pre-compile) 這些 class/method，居中透過 JNI (Java Native Interface) 讓 Dalvik VM 存取。不過，實務上來說，不是將所有 class/method 都編譯為原生機械碼，就會帶來效能提昇，相反地，後者往往讓系統陷入更差的效能。目前 Eclair 裡面的 Dalvik VM 雖然沒有完整的 JIT compiler，但其 fast interpreter for ARM 的確做了頗多 threaded interpreter 的改進，考量到 I-cache, paging, 與 branch prediction，若我們不思量 Java / Android Dalvik 應用程式的執行時期行為，只是一味作編譯轉換，很可能只是編譯極少被執行，或者完全不會被執行到的程式碼，因此加重執行時期的負擔，而最該被優化的部份，受限於不完整的 source-to-source 轉換，有顧此失彼的疑慮。&lt;br /&gt;&lt;br /&gt;於是，找出系統中最該被優化的部份，並考量到正確性與相容度，就是我們的首要研究議題，筆者採用知名的 &lt;a href=&quot;http://math.nist.gov/scimark2/&quot;&gt;SciMark 2.0&lt;/a&gt; 作為量化分析的指標。以下是在 Qualcomm MSM7x25 硬體平台 (arm1136j-s) 的效能評比，ARM11 的時脈是 528 MHz，ARM Linux 版本為 2.6.29.6-0xlab：&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_XYo3WYqTnPk/S_wRBg4-bmI/AAAAAAAAA-Q/1jcyHbfFCZU/s1600/scimark.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_XYo3WYqTnPk/S_wRBg4-bmI/AAAAAAAAA-Q/1jcyHbfFCZU/s400/scimark.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5475269964682128994&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;由上可見，在 &lt;a href=&quot;http://math.nist.gov/scimark2/&quot;&gt;SciMark 2.0&lt;/a&gt; 的各項評比中，Pre-compiled class 執行效能都較 Android Dalvik fast interpreter for ARM 給予一定程度的改良，並且透過 FDO (Feedback Directed Optimization)，大多可進一步給予提昇。這僅是初步的整合實驗數據，還需要更多分析與進行實做。&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1795333590425870072-1318880329214597474?l=jserv.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 26 May 2010 02:08:45 +0000</pubDate>
	<author>noreply@blogger.com (jserv)</author>
</item>

</channel>
</rss>
