<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>richliu&#039;s blog &#187; Hardware</title>
	<atom:link href="http://blog.richliu.com/category/computer/hardware/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.richliu.com</link>
	<description>Linux, 工作, 生活.</description>
	<lastBuildDate>Fri, 03 Sep 2010 11:41:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>如何確認 uclibc 是有 VFP 最佳化的?</title>
		<link>http://blog.richliu.com/2010/09/01/985/</link>
		<comments>http://blog.richliu.com/2010/09/01/985/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:59:00 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[eabi]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[uclibc]]></category>
		<category><![CDATA[VFP]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=985</guid>
		<description><![CDATA[這標題隨便下的, 只是一個筆記的 Note.

一般來說使用 arm 的平台很少會去注意是不是有 VFP 支援, 一般 Embedded Linux 內會用到數學函式運算的系統不多. (當然 Android 之後就變多了).
首先看來一個簡單的程式
[C]
int main(void){
double a=2.2,b=1.1,c;
c=a*b;
return 0;
}
[/C]
這時用 arm-linux-gcc 去 compile 這行程式, 預設是 software floating point
我們會看到, 程式會去呼叫 function __aeabi_mul 去運算 dmul.
[BASH]
# arm-linux-gcc -c -g -Wa,-a,-ad 1.c ; arm-linux-objdump -dS 1.o  &#124; less
[/BASH]
[TEXT]
c=a*b;
30:   e24b002c        sub   [...]]]></description>
			<content:encoded><![CDATA[<p>這標題隨便下的, 只是一個筆記的 Note.<br />
<span id="more-985"></span></p>
<p>一般來說使用 arm 的平台很少會去注意是不是有 VFP 支援, 一般 Embedded Linux 內會用到數學函式運算的系統不多. (當然 Android 之後就變多了).</p>
<p>首先看來一個簡單的程式<br />
[C]<br />
int main(void){<br />
double a=2.2,b=1.1,c;</p>
<p>c=a*b;<br />
return 0;<br />
}<br />
[/C]<br />
這時用 arm-linux-gcc 去 compile 這行程式, 預設是 software floating point<br />
我們會看到, 程式會去呼叫 function __aeabi_mul 去運算 dmul.</p>
<p>[BASH]<br />
# arm-linux-gcc -c -g -Wa,-a,-ad 1.c ; arm-linux-objdump -dS 1.o  | less<br />
[/BASH]</p>
<p>[TEXT]<br />
c=a*b;<br />
30:   e24b002c        sub     r0, fp, #44     ; 0&#215;2c<br />
34:   e8900003        ldm     r0, {r0, r1}<br />
38:   e24b2024        sub     r2, fp, #36     ; 0&#215;24<br />
3c:   e892000c        ldm     r2, {r2, r3}<br />
40:   ebfffffe        bl      0 &lt;__aeabi_dmul&gt;<br />
44:   e1a03000        mov     r3, r0<br />
48:   e1a04001        mov     r4, r1<br />
4c:   e50b301c        str     r3, [fp, #-28]<br />
50:   e50b4018        str     r4, [fp, #-24]<br />
[/TEXT]</p>
<p>如果是使用 VFP 呢? 只要簡單幾行指令就可以完成原來還要呼叫 eabi_dmul 的事情<br />
[BASH]<br />
# arm-linux-gcc -mfloat-abi=softfp -c -g -Wa,-a,-ad 1.c ; arm-linux-objdump -dS 1.o  | less<br />
[/BASH]<br />
可以得到<br />
[TEXT]<br />
c=a*b;<br />
30:   ed1b6b0b        vldr    d6, [fp, #-44]<br />
34:   ed1b7b09        vldr    d7, [fp, #-36]<br />
38:   ee267b07        fmuld   d7, d6, d7<br />
3c:   ed0b7b07        vstr    d7, [fp, #-28]<br />
[/TEXT]</p>
<p>而 __eabi_dmul 藏在那邊呢? 答案就在 gcc 內<br />
在 gcc source code , gcc/config/arm/arm.c:  內有這一行 define<br />
set_optab_libfunc (smul_optab, DFmode, 『__aeabi_dmul』);<br />
而 gcc/config/arm/ieee754-df.S 內記錄著 aeabi_dmul 的實際 software code.<br />
看起來落落長, 難怪效能差很多 :p</p>
<p>那 uclibc binary 有沒有支援 vfp 怎麼檢查呢 ?<br />
我先暫時是去 dump libm.so 的內容, 如果有使用到 vldr, fmuld 之類的指令, 表示確實有用到 VFP 的指令.<br />
[BASH]<br />
# arm-linux-objdump -dS libm-0.9.31.so<br />
[/BASH]<br />
*註: 看起來 uclibc 會有自己的數學指令(不確定)</p>
<p>uclibc 要如何支援, 如果是用 buildroot, 在 uclibc 的 configure file 加上一行<br />
[TEXT]<br />
UCLIBC_EXTRA_CFLAGS=』-mfloat-abi=softfp』<br />
[/TEXT]</p>
<p>編完 uclibc 之後, 我們可以用 objdump 看  libm.so 的 Assembly code<br />
[BASH]<br />
# arm-linux-objdump -D libm-0.9.31.so | less<br />
[/BASH]</p>
<p>有 v 開頭的指令很多都是 vfp 的指令<br />
[TEXT]<br />
00007dd0 <sin>:<br />
    7dd0:       e1a03001        mov     r3, r1<br />
    7dd4:       e3c32102        bic     r2, r3, #-2147483648    ; 0&#215;80000000<br />
    7dd8:       e59f30a4        ldr     r3, [pc, #164]  ; 7e84 </sin><sin +0xb4><br />
    7ddc:       e52de004        push    {lr}            ; (str lr, [sp, #-4]!)<br />
    7de0:       e1520003        cmp     r2, r3<br />
    7de4:       e24dd01c        sub     sp, sp, #28     ; 0&#215;1c<br />
    7de8:       ec410b17        vmov    d7, r0, r1<br />
    7dec:       d3a02000        movle   r2, #0  ; 0&#215;0<br />
    7df0:       d3a03000        movle   r3, #0  ; 0&#215;0<br />
    7df4:       d3a0c000        movle   ip, #0  ; 0&#215;0<br />
    7df8:       da000010        ble     7e40 </sin><sin +0x70><br />
    7dfc:       e59f3084        ldr     r3, [pc, #132]  ; 7e88 </sin><sin +0xb8><br />
    7e00:       e1520003        cmp     r2, r3<br />
    7e04:       ce376b47        fsubdgt d6, d7, d7<br />
    7e08:       cc510b16        vmovgt  r0, r1, d6<br />
[/TEXT]</p>
<p>最後測試 Library 的速度, 以下是測試 Code.<br />
[C]<br />
cat 1.c<br />
#include <stdio .h><br />
#include<br />
<math .h>
<p>int main(void){</p>
<p>        double result,result2;<br />
        int i,j,count=0;</p>
<p>        for(j=0;j&lt;10000;j++){<br />
        for(i=0;i&lt;180;i++){<br />
        result = sin(i);<br />
        result2 = sin(0-i);<br />
        if(result == -result2){<br />
         count++;<br />
        }<br />
        }<br />
        }</p>
<p>        printf(』 count:%d\n』, count);</p>
<p>        return 0;<br />
}<br />
[/C]<br />
無 VFP Library Support 的數據.<br />
[TEXT]<br />
count:1800000<br />
real    0m 15.64s<br />
user    0m 15.64s<br />
sys     0m 0.00s<br />
[/TEXT]<br />
有 VFP Library Support 的數據<br />
[TEXT]<br />
count:1800000<br />
real    0m 2.42s<br />
user    0m 2.42s<br />
sys     0m 0.00s<br />
[/TEXT]<br />
差了 6.46 倍. </math>
<p></stdio></sin></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2010/09/01/985/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu 下安裝 Broadcom wifi driver.</title>
		<link>http://blog.richliu.com/2010/07/19/957/</link>
		<comments>http://blog.richliu.com/2010/07/19/957/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 08:19:13 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[broadcom]]></category>
		<category><![CDATA[Driver]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=957</guid>
		<description><![CDATA[Linux 下 Broadcom 的 Wifi Driver 可以在 802.11 Linux STA driver 下載到.
不過在 ubuntu 下, 其實這個工作更容易
[BASH]
 # sudo apt-get install bcmwl-kernel-source
[/BASH]
然後就會下載並且編好 Broadcom Wifi Driver.
會放在 /lib/modules/[kernelversion]/updates/dkms 下
以我的為例, 就會放在
[BASH]
# cd /lib/modules/2.6.32-23-generic-pae/updates/dkms
# ls -lF
-rw-r&#8211;r&#8211; 1 root root 10812004 2010-07-01 10:16 nvidia-current.ko
-rw-r&#8211;r&#8211; 1 root root  2138420 2010-07-16 11:55 wl.ko
[/BASH]
wl.ko 就是 Broadcom wifi 的 module 了, 接下來就是像一般 Wifi 的用法了. 
不過這是 [...]]]></description>
			<content:encoded><![CDATA[<p>Linux 下 Broadcom 的 Wifi Driver 可以在 <a href="http://www.broadcom.com/support/802.11/linux_sta.php" target="_blank">802.11 Linux STA driver</a> 下載到.</p>
<p>不過在 ubuntu 下, 其實這個工作更容易<br />
[BASH]<br />
 # sudo apt-get install bcmwl-kernel-source<br />
[/BASH]<br />
然後就會下載並且編好 Broadcom Wifi Driver.<br />
會放在 /lib/modules/[kernelversion]/updates/dkms 下<br />
以我的為例, 就會放在<br />
[BASH]<br />
# cd /lib/modules/2.6.32-23-generic-pae/updates/dkms<br />
# ls -lF<br />
-rw-r&#8211;r&#8211; 1 root root 10812004 2010-07-01 10:16 nvidia-current.ko<br />
-rw-r&#8211;r&#8211; 1 root root  2138420 2010-07-16 11:55 wl.ko<br />
[/BASH]</p>
<p>wl.ko 就是 Broadcom wifi 的 module 了, 接下來就是像一般 Wifi 的用法了. </p>
<p>不過這是 STA. 如果是 AP 的話一般人大概是拿不到的.<br />
個人測試過 43225 w/o EEPROM 是沒有問題的.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2010/07/19/957/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Patch RVDS 4.0 at Linux</title>
		<link>http://blog.richliu.com/2010/06/30/947/</link>
		<comments>http://blog.richliu.com/2010/06/30/947/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 03:13:38 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[RVDS]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=947</guid>
		<description><![CDATA[在 Linux 上上 RVDS 4.0 的 Patch Command 如下
[BASH]
# ﻿~/ARM/bin/linux-pentium/setuplinux.bin patch &#8211;source RVDS_4_0_dist_to_4-all-all_stnd.armpatch &#8211;target ~/ARM
[/BASH]
]]></description>
			<content:encoded><![CDATA[<p>在 Linux 上上 RVDS 4.0 的 Patch Command 如下</p>
<p>[BASH]</p>
<p># ﻿~/ARM/bin/linux-pentium/setuplinux.bin patch &#8211;source RVDS_4_0_dist_to_4-all-all_stnd.armpatch &#8211;target ~/ARM</p>
<p>[/BASH]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2010/06/30/947/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[筆記] ubuntu 裝 RVDS.</title>
		<link>http://blog.richliu.com/2010/06/07/940/</link>
		<comments>http://blog.richliu.com/2010/06/07/940/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 06:57:42 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[openmotif]]></category>
		<category><![CDATA[RVDS]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=940</guid>
		<description><![CDATA[* 要使用 User right 安裝, 不能 sudo install
* 直接用 ISO file 似乎會有問題
安裝完以後, 在 ubuntu 10.04 的環境下要另外安裝 Openmotif
[Bash]
# wget http://mirrors.kernel.org/ubuntu/pool/multiverse/o/openmotif/libmotif3_2.2.3-4_i386.deb
# sudo dpkg -i libmotif3_2.2.3-4_i386.deb
[/Bash]
這樣就可以了 .
]]></description>
			<content:encoded><![CDATA[<p>* 要使用 User right 安裝, 不能 sudo install<br />
* 直接用 ISO file 似乎會有問題</p>
<p>安裝完以後, 在 ubuntu 10.04 的環境下要另外安裝 Openmotif</p>
<p>[Bash]<br />
# wget http://mirrors.kernel.org/ubuntu/pool/multiverse/o/openmotif/libmotif3_2.2.3-4_i386.deb<br />
# sudo dpkg -i libmotif3_2.2.3-4_i386.deb<br />
[/Bash]</p>
<p>這樣就可以了 .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2010/06/07/940/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android Dev Phone 升級 Eclair (2.1)</title>
		<link>http://blog.richliu.com/2010/04/30/917/</link>
		<comments>http://blog.richliu.com/2010/04/30/917/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 12:20:11 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[adp]]></category>
		<category><![CDATA[Eclair]]></category>
		<category><![CDATA[HTC Magic]]></category>
		<category><![CDATA[recovery]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[T-Mobile G1]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[升級]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=917</guid>
		<description><![CDATA[其實 Android 升級也不是像想像中麻煩, 但是升級之前需要做很多準備工作, 如果不是熟門熟路的話, 會不知道在做什麼, 但是如果熟悉了以後, 換 ROM 大概就像喝水一樣容易 .
以下就是我花一堆時間升級得到的心得. 希望對大家有用
本文章僅適用於 ADP1 (Android Dev Phone 1), 其他不適合.
其他相同的機型有 HTC Magic 和 T-Mobile G1
* 免責聲明: 任何改機行為皆有極大風險, 請自負風險, 本人不負任何責任 *
名詞解釋
先知道名詞是很重要的, 要不然連 Keyword 都 Search 不到 :p
IPL: Initial Program Loader
為一個小的 Loader, 主要負責 initial DRAM, CPU 等, 找到的資料有說到 SPL 刷死掉了以後, 可以靠 IPL 救.
不過這看起來要拆機了.
SPL : Second Program Loader
在 IPL 之後載入的 [...]]]></description>
			<content:encoded><![CDATA[<p>其實 Android 升級也不是像想像中麻煩, 但是升級之前需要做很多準備工作, 如果不是熟門熟路的話, 會不知道在做什麼, 但是如果熟悉了以後, 換 ROM 大概就像喝水一樣容易 .</p>
<p>以下就是我花一堆時間升級得到的心得. 希望對大家有用</p>
<p>本文章僅適用於 ADP1 (Android Dev Phone 1), 其他不適合.<br />
其他相同的機型有 HTC Magic 和 T-Mobile G1</p>
<p><span style="color: #ff0000;"><strong>* 免責聲明: 任何改機行為皆有極大風險, 請自負風險, 本人不負任何責任 *</strong></span></p>
<h1><span id="more-917"></span>名詞解釋</h1>
<p>先知道名詞是很重要的, 要不然連 Keyword 都 Search 不到 :p</p>
<h3>IPL: Initial Program Loader</h3>
<p>為一個小的 Loader, 主要負責 initial DRAM, CPU 等, 找到的資料有說到 SPL 刷死掉了以後, 可以靠 IPL 救.<br />
不過這看起來要拆機了.</p>
<h3>SPL : Second Program Loader</h3>
<p>在 IPL 之後載入的 Loader. Loader 的角色有點像是 PC 的 Bios<br />
SPL 可以燒 nbh(應該是每台機器的 key, 開發機不需要去弄這個), 提供 Fastboot 更新介面(等一下會提)<br />
更新 SPL 風險是非常高的, 請確定你的手機型號之後再更新<br />
進入 SPL 的方法, 關機時, 按住 camera + Power 鍵(掛電話鍵) 就可以進入 SPL</p>
<h3>Fastboot:</h3>
<p>進入 SPL 後, 可以切至 Fastboot mode, 可以透過 USB + Fastboot 的程式更新特定區域的 image .<br />
這是當 Recovery 不能用的時候, 拿來緊急救援用的.</p>
<h3>Recovery:</h3>
<p><a title="recovery" href="http://www.flickr.com/photos/richliu_tw/4565377896/"><img title="recovery" src="http://farm4.static.flickr.com/3479/4565377896_e0bd1c2330.jpg" alt="recovery" width="358" height="500" /></a><br />
系統提供一個 Recovery mode, 這個 Recovery 是一個簡化的 Linux 系統, 內含一個 busybox 及其他的 tool<br />
主要是用來更新 ROM 及其他開發者提供的功能. 像是 SPL 也是可以從 Recovery 內救.<br />
以我目前使用的 RA-Dream 來說, 支援以下的功能</p>
<ul>
<li>Reboot</li>
<li>Goto Console</li>
<li>USB-MS (摸擬成一個 USB Mass Storage, 就是讓 Android 變成 USB Flash 模式.</li>
<li>Backup/Restore : nandroid, 可以備份/回復 Nand, 常常換系統者必備.</li>
<li>Flash Zip from SD (這功能就是可以更新大部份的 ROM 了)</li>
<li>Wipe : 清除資料</li>
<li>Partition SDCard : 現在有的 ROM 支援 APP2SD, 尤其是 Eclair (2.1) 的系統一定要 APP2SD 才可以使用.</li>
<li>Shutdown</li>
</ul>
<p>幾乎所有燒機的功能都包含在內了, 之前可能會有人找到 cm-recovery-1.4, 不過那個功能比 RA-Dream 差太多了.</p>
<p>進入 Recovery 的方法, Home + Power On Key.</p>
<h3>RADIO:</h3>
<p>這一般指的是 GSM 部份的 Radio Code. 因為 GSM 都是自己跑一部份專有的 Code.</p>
<h3>ROM:</h3>
<p>通常講到 ROM 都是講到 Android 主系統, HTC 有協助 Google 開發系統, 也有很多第三方放出來的 ROM 可以用, 如果很愛刷 ROM 換系統, 或是自己 compile 都是可行的</p>
<p>第三方比較有名的有</p>
<p>2.1</p>
<ul>
<li><a id="thread_title_672992" href="http://forum.xda-developers.com/showthread.php?t=672992">[ROM] CyanogenMod-5 &#8211;  Would you like a pony? (EXPERIMENTAL) [04/29 - v5.0.7-test1]</a></li>
<li><a id="thread_title_642643" href="http://forum.xda-developers.com/showthread.php?t=642643">[ROM] [v1.2] [OPTIMIZED] KiNgxKxKlair  DroidEris2G1 {4/9/10 1:59 pm PST}</a></li>
<li> <a id="thread_title_633957" href="http://forum.xda-developers.com/showthread.php?t=633957">[UPDATE][ROM]CaNNoN202 Complete Eclair  [v2.0](Almost Complete)[4/2/10]-[FAST][STABLE]</a></li>
</ul>
<p>1.6</p>
<ul>
<li><a id="thread_title_567610" href="http://forum.xda-developers.com/showthread.php?t=567610">[ROM] CyanogenMod &#8211; No, you can&#8217;t have a pony  (STABLE) [UPDATED 03/04 - v4.2.15.1]</a></li>
<li><a id="thread_title_613809" href="http://forum.xda-developers.com/showthread.php?t=613809">[ROM]Super  D 1.11  『Rehab is for Quitters』 (4/28)</a></li>
</ul>
<h3>APP2SD:</h3>
<p>ADP1 的 Flash 只有 192MByte, 所以放 Application 不太夠, 所以大家就將腦筋動到 SD Card 上.<br />
這個功能就叫 APP2SD. 在 Linux 下不過就只是一個 shell script.</p>
<p>早期 APP2SD 要自己弄,<br />
現在新的 ROM 都支援 APP2SD, 更新的 2.1 都一定要啟動 APP2SD 才能使用</p>
<p>有了這些基礎知識以後, 接下來就是準備開始動手了.</p>
<p><span style="color: #ff0000;"><strong>*  免責聲明: 任何改機行為皆有極大風險, 請自負風險, 本人不負任何責任 *</strong></span></p>
<h2>準備</h2>
<ul>
<li>PC</li>
<li>USB cable</li>
<li><a href="http://developer.android.com/sdk/index.html" target="_blank">Android SDK</a></li>
<li><a href="http://developer.htc.com/adp.html" target="_blank">fastboot </a></li>
</ul>
<p>Android SDK 提供了 adb shell command 的功能 (要啟動到 recovery)<br />
fastboot 提供了在 SPL 狀況下可以更新 image 的機會.</p>
<h2>更新 Recovery.img</h2>
<p>我個人喜歡用 <a href="http://forum.xda-developers.com/showpost.php?p=4647751&amp;postcount=1" target="_blank">RA-Dream</a> 先下載 <a href="http://rapidshare.com/files/357127614/recovery-RA-dream-v1.6.2.img" target="_blank">recovery-RA-dream-v1.6.2.img</a> 然後存到 SDCard 內.</p>
<p>重開機按 Home + Power On 進入 recovery mode.</p>
<p>在 PC 端進入 adb mode</p>
<p>[shell]<br />
# adb shell<br />
切至 ADP<br />
$ su<br />
# mount -a<br />
# flash_image recovery /sdcard/recovery-RA-dream-v1.6.2.img</p>
<p>[/shell]</p>
<p>如果要用 Fastboot 升級也是可以, 但是要先更新 SPL. 那更麻煩&#8230;..</p>
<p>[shell]<br />
# fastboot devices (確認 devices)<br />
# fastboot flash recovery recovery-RA-dream-v1.6.2.img<br />
[/shell]</p>
<h2>更新 Radio Image</h2>
<p>如果不是 2.22.19_26I, 請更新你的 Radio Image, 可以啟動進 SPL 看一下現在的版本</p>
<p>可以從 HTC 下載 <a href="http://developer.htc.com/adp.html" target="_blank">2.22.19_26I</a>, <a href="http://code.google.com/p/sapphire-port-dream/">sapphire-port-dream</a> 也有一份 <a href="http://code.google.com/p/sapphire-port-dream/"></a></p>
<p><a title="ota-radio-1_22_14_11.zip" onclick="DisplayDialogAndAcceptDownload('aHR0cDovL21lbWJlci5hbWVyaWNhLmh0Yy5jb20vZG93bmxvYWQvUm9tQ29kZS9BRFAvb3RhLXJhZGlvLTJfMjJfMTlfMjZJLnppcA==','io_device_license.htm','You  must agree to the License to download the file.');" href="javascript:void(0);">ota-radio-2_22_19_26I.zip</a> 下載之後放到 SDCard 內, 然後重開機進入 Recovery mode.<br />
如果這邊更新 Ra-dream recovery.img 己經成功了, 那就可以直接進 Recovery Mode, 切進 USB-MS mode, 就會變成 Mass Storage, 可以直接從電腦傳檔案進去.<br />
用 flash zip from SD 的功能, 就會列出來, 直接選擇就可以.<br />
解壓完重開機即可.</p>
<p><strong>這就是我愛用 Ra-dream recovery.img 的原因 XD</strong></p>
<h2>更新 SPL</h2>
<p>第一件事情就是要確認機器的版本, 這是一張 SPL 的圖案, 這是改過的<br />
<a title="SPL" href="http://www.flickr.com/photos/richliu_tw/4565377486/"><img title="SPL" src="http://farm4.static.flickr.com/3334/4565377486_a34048c358.jpg" alt="SPL" width="339" height="500" /></a></p>
<p>[text]<br />
DREAM PVT 32B ENG S-OFF<br />
HBOOT-1.33.2005 (DREA10000)<br />
CPLD-4<br />
RADIO-2.22.19.26I<br />
[/text]<br />
第一行是 PVT 32B 是代表這隻是 Google ADP1 (Dream/Tmobile G1)<br />
第二行是目前 SPL 的版本, DREA***** 英國, DREA10000 美國, DREA11000 歐洲<br />
第四行是 Radio 的版本<br />
更新完 SPL 就可以裝第三方的 Android ROM, 但是 HTC 版的就不能用了. 如果要用, 就要降級</p>
<p>以下是更多的說明</p>
<blockquote><p>SPL Info<br />
- The G or H at the end identify if it&#8217;s a Google or HTC SPL<br />
- ENG : Engineering version<br />
- SHIP : Shipment version<br />
- DEV : Development version (ION)<br />
- S-off and S-on : Security on and off (writing directly to nand or not) , most probably not SPL linked.<br />
- PVT 32A : 288MB RAM / Qualcomm MSM7200a<br />
- PVT 32B : 192MB RAM / Qualcomm MSM7201a<br />
- CPLD XX : What does this mean?</p></blockquote>
<p>我目前是使用 <a href="http://code.google.com/p/sapphire-port-dream/" target="_blank">Danger SPL</a></p>
<p>下載後丟到 SD Card, 進入 Recovery Mode, 然後用 Flash zip from SD card 就可以.</p>
<h2>備份系統</h2>
<p>當然我就會講, 進入 Recovery Mode, 選 Backup/Restore 的功能, 選 NAND Backup 即可.<br />
(其實我是沒有在 backup 的 (爆))</p>
<h2>規劃 SDcard</h2>
<p>我選用的這一版 Recovery 有 Partition SD Card 的功能</p>
<p>但是我當時是用 Linux 去預先規劃, 以我 2G SD Card 為例</p>
<p>Partition 1 : FAT32 :  1.4GByte<br />
Partition 2: ext3 : 500MByte<br />
Partition 3: Linux Swap : 96MBytes</p>
<p>Partition 2 也可以選用比較新的 ext4, 不過這就要比較新版的 ROM 才支援這個功能, 一般來說, 使用 ext3 是支援度最廣的.</p>
<h2>升級 ROM</h2>
<p>接下來就是下載 ROM 了.<br />
以 2.1 為例</p>
<p>2.1</p>
<ul>
<li><a id="thread_title_672992" href="http://forum.xda-developers.com/showthread.php?t=672992">[ROM]  CyanogenMod-5 &#8211;  Would you like a pony? (EXPERIMENTAL) [04/29 -  v5.0.7-test1]</a></li>
<li><a id="thread_title_642643" href="http://forum.xda-developers.com/showthread.php?t=642643">[ROM]  [v1.2] [OPTIMIZED] KiNgxKxKlair  DroidEris2G1 {4/9/10 1:59 pm PST}</a></li>
<li> <a id="thread_title_633957" href="http://forum.xda-developers.com/showthread.php?t=633957">[UPDATE][ROM]CaNNoN202  Complete Eclair  [v2.0](Almost Complete)[4/2/10]-[FAST][STABLE]</a></li>
</ul>
<p>點進去後找到 ROM 下載, 丟到 SDCard 內</p>
<p>然後選 flash zip from SD.</p>
<p>以 CyanogenMod-5 為例, 會下載<br />
update-cm-5.0.7-DS-test1-signed.zip<br />
gapps-ds-ERE36B-signed.zip<br />
丟進去一起 Flash zip from SD 就好了, 如果是從 1.5/1.6 升級上來, 那記得先 wipe data. 這樣比較不會出問題.</p>
<p>如果是 2.1 的話, 第一次啟動可能需要 5~15 分鐘, 需要耐心等候.</p>
<p>有了 RA-Dream 省了很多事情, 所有的動作都可以 Flash zip from SD.<br />
而新的 ROM 都支援 APP2SD. 所以很多網路上的文件都不太適用了.</p>
<p>然後這麼方便的結果就是 ROM 一直換一直換&#8230;..</p>
<p>目前用到 CaNNoN202 這個不錯, CyanogenMod-5 也可以.</p>
<p>KiNgxsKxKlair功能很強, 但是問題很多, 連 Google Applications 都啟動不了.<br />
不過可以看一下 HTC Legend(?) 大概的樣子是長得什麼樣. 我覺得很炫就是了 <img src='http://blog.richliu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>目前的缺點就是..<br />
我的 Camera 不知道為什麼都沒有辦法再使用了, 不知道是 Hardware 的問題還是 Software 的問題.<br />
不過之前 ADP1 早就被我玩爛了(大概是自己編kernel的關係), 所以這也不是缺點了 (默)&#8230;</p>
<p>Ref.</p>
<ul>
<li><a href="http://android-dls.com/wiki/index.php?title=Android_FAQ#Q:_What_is_an_SPL.3F" target="_blank">What is SPL</a></li>
<li><a href="http://www.cnpda.com.cn/thread-322768-1-1.html" target="_blank">[教 程] [G2]SPL/RADIO/RECOVERY/ROM 专用名词说明</a></li>
<li><a href="http://www.androidin.net/bbs/thread-15742-1-1.html" target="_blank">【乐教：新人教程】完全刷机教程！</a></li>
<li><a href="http://forum.xda-developers.com" target="_blank">http://forum.xda-developers.com (必看, 很多文件都是從這邊出來的)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2010/04/30/917/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ARM11 BE8 and BE32</title>
		<link>http://blog.richliu.com/2010/04/08/907/</link>
		<comments>http://blog.richliu.com/2010/04/08/907/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 02:21:07 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[ARM11]]></category>
		<category><![CDATA[BE32]]></category>
		<category><![CDATA[BE8]]></category>
		<category><![CDATA[Big-Endian]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=907</guid>
		<description><![CDATA[What’s difference between BE8 and BE32?

BE-32 is supported by ARM cores up to the ARM11 family (v6) (for example ARM7TDMI, ARM926EJ-S, ARM1136JF-S). It is enabled by setting a bit in the CP15 system control coprocessor.
BE-8 is supported by the ARM11 family and later (for example ARM1136JF-S, Cortex-R4, Cortex-A8). Architecture v7 cores do not support BE-32.
It [...]]]></description>
			<content:encoded><![CDATA[<p>What’s difference between BE8 and BE32?</p>
<p><span id="more-907"></span></p>
<p>BE-32 is supported by ARM cores up to the ARM11 family (v6) (for example ARM7TDMI, ARM926EJ-S, ARM1136JF-S). It is enabled by setting a bit in the CP15 system control coprocessor.</p>
<p>BE-8 is supported by the ARM11 family and later (for example ARM1136JF-S, Cortex-R4, Cortex-A8). Architecture v7 cores do not support BE-32.</p>
<p>It is controlled by setting a bit in the CPSR.</p>
<p>Setting both bits is reserved (not a valid configuration).</p>
<p>In terms of data access:</p>
<p>BE-8 is byte invariant endianness</p>
<p>BE-32 is word invariant endianness</p>
<p>This is easiest to see with examples. I&#8217;ve starred **** the important ones:</p>
<p>Basic endianness:</p>
<p>Consider a word stored 0&#215;11223344 where 11 is the most significant byte.</p>
<p>Little endian:</p>
<p>Address    0    1    2    3</p>
<p>Data       44   33   22   11</p>
<p>Big endian:</p>
<p>Address    0    1    2    3</p>
<p>Data       11   22   33   44</p>
<p>BE-32 and BE-8</p>
<p>Now consider data stored like this:</p>
<p>Address    0    1    2    3</p>
<p>Data       11   22   33   44</p>
<p>Core in little-endian mode makes word access to address 0:</p>
<p>LDR r0, [0]</p>
<p>r0 contains 0&#215;44332211</p>
<p>Data loaded to register as little endian</p>
<p>Core in little-endian mode makes byte access to address 0:</p>
<p>LDRB r0, [0]</p>
<p>r0 contains 0&#215;00000011</p>
<p>Data loaded from 0</p>
<p>Core in little-endian mode makes byte access to address 3:</p>
<p>LDRB r0, [3]</p>
<p>r0 contains 0&#215;00000044</p>
<p>Data loaded from 3</p>
<p>Core in BE-32 mode makes word access to address 0:</p>
<p>LDR r0, [0]</p>
<p>r0 contains 0&#215;44332211</p>
<p>Word accesses are endianness-invariant</p>
<p>****Core in BE-32 mode makes word access to address 0:</p>
<p>LDRB r0, [0]</p>
<p>r0 contains 0&#215;00000044</p>
<p>Byte access in BE-32 reads the word as if it was stored big-endian</p>
<p>Core in BE-32 mode makes word access to address 3:</p>
<p>LDRB r0, [1]</p>
<p>r0 contains 0&#215;00000011</p>
<p>As above</p>
<p>****Core in BE-8 mode makes word access to address 0:</p>
<p>LDR r0, [0]</p>
<p>r0 contains 0&#215;11223344</p>
<p>Data loaded to register as big endian</p>
<p>Core in BE-8 mode makes byte access to address 0:</p>
<p>LDRB r0, [0]</p>
<p>r0 contains 0&#215;00000011</p>
<p>Byte at address 0 is loaded, NOT the byte at address 3</p>
<p>Core in BE-8 mode makes byte access to address 3:</p>
<p>LDRB r0, [3]</p>
<p>r0 contains 0&#215;00000044</p>
<p>Byte at address 3 is loaded.</p>
<p>Essentially BE-32 operates by altering the addresses of memory accesses when accessing subword quantities. This gives the appearances of big endian.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2010/04/08/907/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boot Monitor Flash 基本操作</title>
		<link>http://blog.richliu.com/2010/03/31/898/</link>
		<comments>http://blog.richliu.com/2010/03/31/898/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 08:20:11 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[Boot monitor]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=898</guid>
		<description><![CDATA[ARM PB11MPCore Boot Monitor
Version:    V4.1
Build Date: Oct 24 2007
Tile Site : Tile Not Fitted
Endian:     Little
K:\&#62;

產生 mkimage
./mkimage -A arm -O linux -T kernel -C none -a 8000 -e 8000 -n arm_v -d ./arch/arm/boot/zImage uImage
K:\&#62; flash
Flash&#62; list image
Flash Area Base 0&#215;40000000
Address     Name
&#8212;&#8212;-     &#8212;-
0&#215;40000000  Boot_Monitor
0&#215;40040000  SYSTEM.DAT
0&#215;40080000  U-BOOT
0&#215;400C0000  uimage
0&#215;40280000  BASE
Flash Area Base 0&#215;43FC0000
Address     Name
&#8212;&#8212;-     &#8212;-
Flash Area Base 0&#215;44000000
Address     Name
&#8212;&#8212;-     [...]]]></description>
			<content:encoded><![CDATA[<p>ARM PB11MPCore Boot Monitor<br />
Version:    V4.1<br />
Build Date: Oct 24 2007<br />
Tile Site : Tile Not Fitted<br />
Endian:     Little<br />
K:\&gt;</p>
<p><span id="more-898"></span></p>
<p>產生 mkimage</p>
<p>./mkimage -A arm -O linux -T kernel -C none -a 8000 -e 8000 -n arm_v -d ./arch/arm/boot/zImage uImage</p>
<p>K:\&gt; flash</p>
<p>Flash&gt; list image<br />
Flash Area Base 0&#215;40000000</p>
<p>Address     Name<br />
&#8212;&#8212;-     &#8212;-<br />
0&#215;40000000  Boot_Monitor<br />
0&#215;40040000  SYSTEM.DAT<br />
0&#215;40080000  U-BOOT<br />
0&#215;400C0000  uimage<br />
0&#215;40280000  BASE</p>
<p>Flash Area Base 0&#215;43FC0000</p>
<p>Address     Name<br />
&#8212;&#8212;-     &#8212;-</p>
<p>Flash Area Base 0&#215;44000000</p>
<p>Address     Name<br />
&#8212;&#8212;-     &#8212;-</p>
<p>Flash Area Base 0&#215;47FC0000</p>
<p>Address     Name<br />
&#8212;&#8212;-     &#8212;-<br />
Flash&gt; erase image uimage<br />
Erasing Flash</p>
<p>Flash&gt; write binary uimage<br />
Erasing Flash<br />
Writing Flash<br />
Progress 0%<br />
Progress 3%<br />
..<br />
Progress 100%<br />
Flash&gt; run U-BOOT</p>
<p>ref.<br />
<a href="http://scottshulinux.blogspot.com/2008/09/arm-realview-pb11mpcore-6-bootloader.html">ARM RealView PB11MPCore (2) &#8211; Installation<br />
ARM RealView PB11MPCore (6) BootMonitor</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2010/03/31/898/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[ARM][Linux] 建立 ARM 平台的 Debian System</title>
		<link>http://blog.richliu.com/2009/12/25/829/</link>
		<comments>http://blog.richliu.com/2009/12/25/829/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 05:43:01 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[ARM11]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debootstrap]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=829</guid>
		<description><![CDATA[在 Embedded system 下, 使用現有的系統驗證 SoC 功能是非常棒的.
最大的好處就是不用到處找工具編一堆有的沒有的, 時間可以花在更重要的地方
像我將 debian 裝好之後, 就可以跑 wireshark 了
本圖中, 最左邊的是 console, 中間的視窗是 EVB 上的 wireshark, 右邊的視窗是 PC 端的 wireshark

真是超好用的&#8230;&#8230;

首先先裝 debootstrap
# apt-get install debootstrap
再裝 sid 系統 (現在應該是 unstable)
#  debootstrap &#8211;verbose &#8211;foreign &#8211;arch armel sid ./sid   http://ftp.tw.debian.org/debian
在此一提, 我是用 ARM11MPCore 平台, 用 armel (使用 EABI) 比較好, 記得有些套件在 armel 才會有. arm 己經沒有了
抓完套件下來以後, [...]]]></description>
			<content:encoded><![CDATA[<p>在 Embedded system 下, 使用現有的系統驗證 SoC 功能是非常棒的.<br />
最大的好處就是不用到處找工具編一堆有的沒有的, 時間可以花在更重要的地方</p>
<p>像我將 debian 裝好之後, 就可以跑 wireshark 了</p>
<p>本圖中, 最左邊的是 console, 中間的視窗是 EVB 上的 wireshark, 右邊的視窗是 PC 端的 wireshark<br />
<a title="Flickr 上 richliu(有錢劉) 的 使用 wireshark *2 debug tcp stream" href="http://www.flickr.com/photos/richliu_tw/4186338737/"><img src="http://farm3.static.flickr.com/2545/4186338737_04601bbf13_m.jpg" alt="使用 wireshark *2 debug tcp stream" width="240" height="100" /></a></p>
<p>真是超好用的&#8230;&#8230;</p>
<p><span id="more-829"></span></p>
<p>首先先裝 debootstrap</p>
<blockquote><p># apt-get install debootstrap</p></blockquote>
<p>再裝 sid 系統 (現在應該是 unstable)</p>
<blockquote><p>#  debootstrap &#8211;verbose &#8211;foreign &#8211;arch armel sid ./sid   http://ftp.tw.debian.org/debian</p></blockquote>
<p>在此一提, 我是用 ARM11MPCore 平台, 用 armel (使用 EABI) 比較好, 記得有些套件在 armel 才會有. arm 己經沒有了</p>
<p>抓完套件下來以後, 將 sid 打包起來, 丟到 target 上去, 再解壓到 /</p>
<p>接下來在 Target board 上下</p>
<blockquote><p># /debootstrap/debootstrap &#8211;second-stage</p></blockquote>
<p>運氣好就可以解完, 如果解不完就重做一次看看<br />
因為我是在 host PC 上做的, 所以在做的時候有一些 information 就會帶過去</p>
<p>修改 /etc/fstab<br />
/dev/sda1       /          ext3   defaults,noatime,check=none              0 0<br />
proc                 /proc      proc       defaults              0 0<br />
devpts               /dev/pts   devpts     mode=0620,gid=5       0 0</p>
<p>因為我是要常常開關測試, 所以不希望 fsck disk,<br />
在 format disk 後, 可以考慮下這種參數<br />
# mke2fs -j /dev/sda<br />
# tune2fs -c 0 -i 0 /dev/sda1</p>
<p>/etc/inittab 也要修改, getty 的部份可以全部關掉 (如果有 LCD 可以留 1,2 個下來)</p>
<blockquote><p>T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100<br />
#1:2345:respawn:/sbin/getty 38400 tty1<br />
#2:23:respawn:/sbin/getty 38400 tty2<br />
#3:23:respawn:/sbin/getty 38400 tty3<br />
#4:23:respawn:/sbin/getty 38400 tty4<br />
#5:23:respawn:/sbin/getty 38400 tty5<br />
#6:23:respawn:/sbin/getty 38400 tty6</p></blockquote>
<p>產生 sources.list</p>
<blockquote><p># echo 『deb http://ftp.tw.debian.org/debian unstable main non-free contrib』 &gt; /etc/apt/sources.list</p></blockquote>
<p>設定環境變數</p>
<blockquote><p>echo LANG=\』C\』 &gt;&gt; /etc/environment</p></blockquote>
<p>接下來就網路設一設, 然後就可以開始安裝環境了</p>
<blockquote><p># apt-get update<br />
# apt-get install openssh-server<br />
# apt-get install rcconf</p></blockquote>
<p>接下來有用過 ubuntu 應該就很熟了&#8230;.</p>
<p>Ref.<br />
<a title="deboostrap-debian" href="http://emqbit.com/deboostrap-debian"></p>
<p>http://emqbit.com/deboostrap-debian</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/12/25/829/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ARM 的 Oprofile</title>
		<link>http://blog.richliu.com/2009/12/12/820/</link>
		<comments>http://blog.richliu.com/2009/12/12/820/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 19:02:18 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[ARM11]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[oprofile]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=820</guid>
		<description><![CDATA[最近在弄 ARM11 的 Oprofile, 結果發現執行 opcontrol 的動作之後, 沒有 log 的動作.
大致上的訊息是這樣的
[Bash]
# opcontrol &#8211;shutdown
Stopping profiling.
Killing daemon.
# Stopping profiling.
Killing daemon.
opreport image:/vmlinux -l -w -g &#62; oprofile.txt
error: no sample files found: profile specification too strict ?
[/Bash]
這時請改用 timer interrupt
在 load oprofile modules 加上 timer=1
若是 static link 時, 就要在 boot_cmd 加上 oprofile.timer=1
似乎目前的 kernel oprofile 不支援 ARM11MPCore.
http://oprofile.sourceforge.net/doc/detailed-parameters.html#timer
]]></description>
			<content:encoded><![CDATA[<p>最近在弄 ARM11 的 Oprofile, 結果發現執行 opcontrol 的動作之後, 沒有 log 的動作.<br />
大致上的訊息是這樣的<br />
[Bash]<br />
# opcontrol &#8211;shutdown<br />
Stopping profiling.<br />
Killing daemon.<br />
# Stopping profiling.<br />
Killing daemon.<br />
opreport image:/vmlinux -l -w -g &gt; oprofile.txt<br />
error: no sample files found: profile specification too strict ?<br />
[/Bash]</p>
<p>這時請改用 timer interrupt</p>
<p>在 load oprofile modules 加上 timer=1<br />
若是 static link 時, 就要在 boot_cmd 加上 oprofile.timer=1</p>
<p>似乎目前的 kernel oprofile 不支援 ARM11MPCore.</p>
<p>http://oprofile.sourceforge.net/doc/detailed-parameters.html#timer</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/12/12/820/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Linux][Kernel][Memory] smbd: page allocation failure. order:2, mode:0&#215;20</title>
		<link>http://blog.richliu.com/2009/12/11/822/</link>
		<comments>http://blog.richliu.com/2009/12/11/822/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 13:05:31 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Jumbo Frame]]></category>
		<category><![CDATA[linux kernel]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=822</guid>
		<description><![CDATA[如果啟動了 Jumbo Frame 加上執行 Samba , 有可能會出現類似的訊息(系統抓下來似乎有點不全)

smbd: page allocation failure. order:2, mode:0&#215;20
Backtrace:
[&#60;c002fd30&#62;] (dump_backtrace+0&#215;0/0&#215;108) from [&#60;c02ac488&#62;] (dump_stack+0&#215;18/0&#215;1c)
[&#60;c02ac470&#62;] (dump_stack+0&#215;0/0&#215;1c) from [&#60;c0075734&#62;] (__alloc_pages_nodemask+0&#215;3d0/0&#215;55c)
[&#60;c0075364&#62;] (__alloc_pages_nodemask+0&#215;0/0&#215;55c) from [&#60;c008f5d8&#62;] (cache_alloc_refill+0&#215;2b0/0&#215;598)
[&#60;c008f328&#62;] (cache_alloc_refill+0&#215;0/0&#215;598) from [&#60;c008f978&#62;] (__kmalloc+0xb8/0xd8)
[&#60;c008f8c0&#62;] (__kmalloc+0&#215;0/0xd8) from [&#60;c0227a6c&#62;] (__alloc_skb+0&#215;54/0&#215;138)
[&#60;c0227a18&#62;] (__alloc_skb+0&#215;0/0&#215;138) from [&#60;c022879c&#62;] (dev_alloc_skb+0&#215;20/0&#215;44)
[&#60;c022877c&#62;] (dev_alloc_skb+0&#215;0/0&#215;44) from [&#60;c01e643c&#62;] (cns3xxx_receive_packet+0&#215;228/0&#215;3c8)
[&#60;c01e6214&#62;] (cns3xxx_receive_packet+0&#215;0/0&#215;3c8) from [&#60;c01e661c&#62;] (cns3xxx_poll+0&#215;40/0xd4)
[&#60;c01e65dc&#62;] (cns3xxx_poll+0&#215;0/0xd4) from [&#60;c022f264&#62;] (net_rx_action+0xb4/0&#215;184)
[&#60;c022f1b0&#62;] (net_rx_action+0&#215;0/0&#215;184) from [&#60;c0048544&#62;] (__do_softirq+0&#215;90/0&#215;11c)
[&#60;c00484b4&#62;] (__do_softirq+0&#215;0/0&#215;11c) from [&#60;c0048614&#62;] [...]]]></description>
			<content:encoded><![CDATA[<p>如果啟動了 Jumbo Frame 加上執行 Samba , 有可能會出現類似的訊息(系統抓下來似乎有點不全)</p>
<p><span id="more-822"></span></p>
<blockquote><p>smbd: page allocation failure. order:2, mode:0&#215;20<br />
Backtrace:<br />
[&lt;c002fd30&gt;] (dump_backtrace+0&#215;0/0&#215;108) from [&lt;c02ac488&gt;] (dump_stack+0&#215;18/0&#215;1c)<br />
[&lt;c02ac470&gt;] (dump_stack+0&#215;0/0&#215;1c) from [&lt;c0075734&gt;] (__alloc_pages_nodemask+0&#215;3d0/0&#215;55c)<br />
[&lt;c0075364&gt;] (__alloc_pages_nodemask+0&#215;0/0&#215;55c) from [&lt;c008f5d8&gt;] (cache_alloc_refill+0&#215;2b0/0&#215;598)<br />
[&lt;c008f328&gt;] (cache_alloc_refill+0&#215;0/0&#215;598) from [&lt;c008f978&gt;] (__kmalloc+0xb8/0xd8)<br />
[&lt;c008f8c0&gt;] (__kmalloc+0&#215;0/0xd8) from [&lt;c0227a6c&gt;] (__alloc_skb+0&#215;54/0&#215;138)<br />
[&lt;c0227a18&gt;] (__alloc_skb+0&#215;0/0&#215;138) from [&lt;c022879c&gt;] (dev_alloc_skb+0&#215;20/0&#215;44)<br />
[&lt;c022877c&gt;] (dev_alloc_skb+0&#215;0/0&#215;44) from [&lt;c01e643c&gt;] (cns3xxx_receive_packet+0&#215;228/0&#215;3c8)<br />
[&lt;c01e6214&gt;] (cns3xxx_receive_packet+0&#215;0/0&#215;3c8) from [&lt;c01e661c&gt;] (cns3xxx_poll+0&#215;40/0xd4)<br />
[&lt;c01e65dc&gt;] (cns3xxx_poll+0&#215;0/0xd4) from [&lt;c022f264&gt;] (net_rx_action+0xb4/0&#215;184)<br />
[&lt;c022f1b0&gt;] (net_rx_action+0&#215;0/0&#215;184) from [&lt;c0048544&gt;] (__do_softirq+0&#215;90/0&#215;11c)<br />
[&lt;c00484b4&gt;] (__do_softirq+0&#215;0/0&#215;11c) from [&lt;c0048614&gt;] (irq_exit+0&#215;44/0&#215;4c)<br />
[&lt;c00485d0&gt;] (irq_exit+0&#215;0/0&#215;4c) from [&lt;c002b04c&gt;] (_text+0&#215;4c/0&#215;90)<br />
[&lt;c002b000&gt;] (_text+0&#215;0/0&#215;90) from [&lt;c002bab8&gt;] (__irq_svc+0&#215;38/0&#215;80)<br />
Exception stack(0xc7acbcc0 to 0xc7acbd08)<br />
bcc0: c7acbd1c c7829960 c7acbd28 00000000 00000001 c7b53980 c7b539e4 c7acbd1c<br />
bce0: 00000000 00000000 c7acbf08 c7acbd14 c7acbd28 c7acbd08 c0222314 c0057a0c<br />
bd00: 60000013 ffffffff<br />
[&lt;c00579b0&gt;] (finish_wait+0&#215;0/0&#215;6c) from [&lt;c0222314&gt;] (sk_wait_data+0xcc/0xec)<br />
[&lt;c0222248&gt;] (sk_wait_data+0&#215;0/0xec) from [&lt;c0255fc0&gt;] (tcp_recvmsg+0&#215;600/0&#215;8a8)<br />
[&lt;c02559c0&gt;] (tcp_recvmsg+0&#215;0/0&#215;8a8) from [&lt;c0221208&gt;] (sock_common_recvmsg+0&#215;48/0&#215;5c)<br />
[&lt;c02211c0&gt;] (sock_common_recvmsg+0&#215;0/0&#215;5c) from [&lt;c021e7d8&gt;] (sock_aio_read+0&#215;138/0&#215;144)<br />
[&lt;c021e6a0&gt;] (sock_aio_read+0&#215;0/0&#215;144) from [&lt;c0092918&gt;] (do_sync_read+0xc4/0&#215;110)<br />
[&lt;c0092854&gt;] (do_sync_read+0&#215;0/0&#215;110) from [&lt;c00936ac&gt;] (vfs_read+0&#215;164/0&#215;16c)<br />
[&lt;c0093548&gt;] (vfs_read+0&#215;0/0&#215;16c) from [&lt;c0093790&gt;] (sys_read+0&#215;44/0&#215;74)<br />
[&lt;c009374c&gt;] (sys_read+0&#215;0/0&#215;74) from [&lt;c002be40&gt;] (ret_fast_syscall+0&#215;0/0&#215;2c)<br />
Mem-info:<br />
Normal per-cpu:<br />
CPU    0: hi:   42, btch:   7 usd:  32<br />
Active_anon:570 active_file:9598 inactive_anon:576<br />
inactive_file:17657 unevictable:0 dirty:3503 writeback:0 unstable:0<br />
free:419 slab:2389 mapped:1587 pagetables:87 bounce:0<br />
Normal free:1676kB min:1440kB low:1800kB high:2160kB active_anon:2280kB inactive_anon:2304kB active_file:38392kB inactive_file:70628kB unevictable:0kB present:130048kB pages_scanned:0 all_unreclaimable? no<br />
lowmem_reserve[]: 0 0<br />
Normal: 345*4kB 25*8kB 6*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 1676kB<br />
27277 total pagecache pages<br />
32768 pages of RAM<br />
543 free pages<br />
1251 reserved pages<br />
2389 slab pages<br />
29382 pages shared<br />
0 pages swap cached</p></blockquote>
<p>可以加大 kernel 預留的 Buffer, 我系統上原來是 1117, 可以用指令</p>
<p><strong>echo 8192 &gt; /proc/sys/vm/min_free_kbytes</strong><strong><br />
</strong></p>
<p>加大到 8Mbytes, 這樣可以減少 page allocation 失敗的機率, 在我們的測試內, 某些時候 8MByte 仍會出現, 可以考慮加大到 16Mbytes.</p>
<p>原因是因為在 interrupt 中, 向系統一次要求大塊的記憶體. 這時可以透過增加 min_free_kbytes 參數去避過這個問題.<br />
調整 slab 的參數或許也有用  ( echo x y z &gt; /proc/slab)</p>
<p>Ref.</p>
<p>http://lime-technology.com/forum/index.php?topic=3999.0</p>
<p>http://linux.derkeiler.com/Mailing-Lists/Kernel/2004-01/0059.html</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/12/11/822/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sharp ARM Base Netbook PC-Z1 NetWalker</title>
		<link>http://blog.richliu.com/2009/09/28/812/</link>
		<comments>http://blog.richliu.com/2009/09/28/812/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 11:18:50 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[netbook]]></category>
		<category><![CDATA[PC-Z1]]></category>
		<category><![CDATA[SHARP]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=812</guid>
		<description><![CDATA[最近 Sharp 開始出售第一台 ARM Base 的 Netbook , 取名 NetWalker
不過說他是 Netbook 我個人覺得這一台的定位比較像是放在比電子字典更強一點點的功能.


而名稱叫 NetWalker 應該會讓人想到 Walkman 吧  
列出主要的元件
CPU: FreeScale i.MX515
RAM: 512MByte (固定)
OS: Ubuntu 9.04 (特別版)
LCD: 5&#8243; 1024*600 touch screen
Flash: 4G Flash + 2G User Space.
Wireless: 802.11 B/G
SDCard: microSD/microSDHC (至少可以放32G)
3 秒開機
10 小時使用時間.
定價: Y$45,000.- (約 NT:16,000.-, 日幣最近很貴)
而且操控方式感覺還不錯

ATOM Netbook 裝 Linux 都沒有市場了, 那 ARM Netbook 有什麼搞頭呢?
從規格和網頁來看, 大概會主打長時間的行動上網, 不過我到覺得這個應該是主打電子辭典和電子書. [...]]]></description>
			<content:encoded><![CDATA[<p>最近 Sharp 開始出售第一台 ARM Base 的 Netbook , 取名 <a href="http://www.sharp.co.jp/netwalker/index.html" target="_blank">NetWalker<br />
</a>不過說他是 Netbook 我個人覺得這一台的定位比較像是放在比電子字典更強一點點的功能.<br />
<a title="Flickr 上 richliu(有錢劉) 的 Sharp PC-Z1" href="http://www.flickr.com/photos/richliu_tw/3962377412/"><img src="http://farm4.static.flickr.com/3524/3962377412_ebc1f69532_o.gif" alt="Sharp PC-Z1" width="500" height="352" /></a><br />
<span id="more-812"></span></p>
<p>而名稱叫 NetWalker 應該會讓人想到 Walkman 吧 <img src='http://blog.richliu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>列出主要的元件<br />
CPU: FreeScale i.MX515<br />
RAM: 512MByte (固定)<br />
OS: Ubuntu 9.04 (特別版)<br />
LCD: 5&#8243; 1024*600 touch screen<br />
Flash: 4G Flash + 2G User Space.<br />
Wireless: 802.11 B/G<br />
SDCard: microSD/microSDHC (至少可以放32G)<br />
3 秒開機<br />
10 小時使用時間.<br />
定價: Y$45,000.- (約 NT:16,000.-, 日幣最近很貴)</p>
<p>而且操控方式感覺還不錯<br />
<a title="Flickr 上 richliu(有錢劉) 的 sharp-PC-Z1-1" href="http://www.flickr.com/photos/richliu_tw/3962402040/"><img src="http://farm4.static.flickr.com/3508/3962402040_d820c3442d.jpg" alt="sharp-PC-Z1-1" width="500" height="473" /></a></p>
<p>ATOM Netbook 裝 Linux 都沒有市場了, 那 ARM Netbook 有什麼搞頭呢?</p>
<p>從規格和網頁來看, 大概會主打長時間的行動上網, 不過我到覺得這個應該是主打電子辭典和電子書. 如果還可以混個 Facebook, 做個社交也不錯.</p>
<p>從電子辭典切入的確是一個非常好的點, 大小差不多, 價格雖然貴了很多, 但是可以取代必要品的位置(就是一定會帶的東西). 如果還可以看電子書, 那這個平台的功能就又更多了, 加上長時間使用(10小時算不錯了). 這是一個很好的試金石.</p>
<p>台灣的系統廠加加油, 如果 ACER/ASUS 推出這樣的產品, 搭配快譯通/無敵的系統. 賣你 NT:15,000.- 你會願意買嗎? (快譯通和無敵可能不願意做這個賠錢貨的市場就是了 :p)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/09/28/812/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>AMD 780G 系列: 便宜低價: BD 影音撥放平台/低功耗 Server/Desktop</title>
		<link>http://blog.richliu.com/2009/06/15/779/</link>
		<comments>http://blog.richliu.com/2009/06/15/779/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 16:49:48 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[敗家誌]]></category>
		<category><![CDATA[4850e]]></category>
		<category><![CDATA[5000+]]></category>
		<category><![CDATA[780G]]></category>
		<category><![CDATA[8650]]></category>
		<category><![CDATA[AMD]]></category>
		<category><![CDATA[ATI HD3200]]></category>
		<category><![CDATA[便宜電腦]]></category>
		<category><![CDATA[完美解碼]]></category>
		<category><![CDATA[家庭劇院]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=779</guid>
		<description><![CDATA[這次 Computex 2009 真是太生氣了, 沒有拿到 Intel 的贈品, 只好來寫一篇文章幫 AMD 助陣(這一篇早就想寫了, 寫到買了三個平台才生出來, 沒辦法, 有小孩生文章的速度很慢).
從 80286 開始, 我幾乎都是 Intel 平台的信徒, 除了一開始有用 Harris 80286 平台以外, 後來的 Desktop 都是用 Intel 平台, Chipset 非 Intel 晶片組不用. 這個選擇在早期幾乎都是正確的. 因為 SiS/VIA 不爭氣. Chipset 一堆問題, 相容性不好, ATI/NVIDIA 初期也是這樣。USB 2.0 Bug 一堆, ATA 一堆 Bug.(題外話, 其實 USB/ATA/SATA 真的很難做, 就算是 IP 是買的也是一樣)
不過就在一年以內, 我連續購入了三套 AMD 780G [...]]]></description>
			<content:encoded><![CDATA[<p><strong>這次 Computex 2009 真是太生氣了, 沒有拿到 Intel 的贈品</strong>, 只好來寫一篇文章幫 AMD 助陣(這一篇早就想寫了, 寫到買了三個平台才生出來, 沒辦法, 有小孩生文章的速度很慢).</p>
<p>從 80286 開始, 我幾乎都是 Intel 平台的信徒, 除了一開始有用 <a href="http://www.cpu-collection.de/?l0=co&amp;l1=Harris&amp;l2=80286">Harris 80286</a> 平台以外, 後來的 Desktop 都是用 Intel 平台, Chipset 非 Intel 晶片組不用. 這個選擇在早期幾乎都是正確的. 因為 SiS/VIA 不爭氣. Chipset 一堆問題, 相容性不好, ATI/NVIDIA 初期也是這樣。USB 2.0 Bug 一堆, ATA 一堆 Bug.(題外話, 其實 USB/ATA/SATA 真的很難做, 就算是 IP 是買的也是一樣)</p>
<p>不過就在一年以內, 我連續購入了三套 AMD 780G 平台. 只是 CPU 不一樣. 為什麼呢？</p>
<p>這三套分別是</p>
<p><span id="more-779"></span></p>
<p>AMD AM2+ 4850e 45W + 780G (Gigabyte 主機版) : 主要是在低功耗, 放在 Server 使用<br />
AMD AM2+ 5000 + 780G (Gigabyte 主機版): 主要是客廳的低價 BDRip Media Player.<br />
AMD AM2+ 8650 + 780G (ASUS 主機版): 老婆的 Desktop , 3 核心 CPU.</p>
<p>怎麼會突然變成 AMD 的信徒呢? 其實也沒有其他理由，就是價格.</p>
<h2><span style="color: #0000ff;"><strong>SERVER 改用 AMD AM2+ 4850e + 780G 來省電 </strong></span></h2>
<p>第一套選 AM2+ 4850e 時, 就是看上峰值 TDP 45W 才選購,  而待機時 4850e 比 ATOM 也差不了多少.<br />
由本表可知, IDLE 狀態下, 4850e 比 ATOM 230 多 4W 的電源消耗量<br />
<a title="AMD Athlon 64 and ATOM Energy compare idle Load" href="http://www.flickr.com/photos/richliu_tw/3624470889/"><img title="AMD Athlon 64 and ATOM Energy compare idle Load" src="http://farm4.static.flickr.com/3643/3624470889_061f37533d.jpg" alt="AMD Athlon 64 and ATOM Energy compare idle Load" width="425" height="380" /></a><br />
100% Load 大很多<br />
<a title="AMD Athlon 64 and ATOM Energy compare 100% Load" href="http://www.flickr.com/photos/richliu_tw/3625288154/"><img title="AMD Athlon 64 and ATOM Energy compare 100% Load" src="http://farm4.static.flickr.com/3363/3625288154_88dd7d0604.jpg" alt="AMD Athlon 64 and ATOM Energy compare 100% Load" width="425" height="380" /></a></p>
<p>不過沒有關係, 我的 SERVER Loading 不大, 很久沒有 100% Load 了(其實除了 Compile Gentoo Package 時, 其他都沒有這麼高的 Load)</p>
<p>而且當時買 4850e 時, ATOM 的小電腦並不成熟, 所以還是選 AMD 4850e. 記得升級一套花了不到 4500 元.<br />
[ 如果想買更低功率的電腦, 可以再參考這一篇  <a href="http://www.tomshardware.tw/1543,review-1543.html" target="_blank">Athlon vs. Atom：節能 CPU 大對決 : 8 瓦耗電的 AMD Athlon 64 2000+</a>)</p>
<p>實際上, <span style="color: #ff0000;">因為是 Server, 所以我更換成 AMD 系統之後的電費, 二個月的電費降 20% 上下 的幅度吧 </span>(之前是用 Intel Pentium 4 3.0CG). 其實我最近應該用電更多，所以換系統是有節電效果的。</p>
<p>而 AMD 系統升級比 ATOM 容易太多了, 為什麼不選 AMD 45W 系列呢? (現在又有 8W 系列)</p>
<h2><span style="color: #0000ff;">客廳多媒體娛樂系統 AMD AM2+ 5000+ + 780G 系統.</span></h2>
<p>我喜歡漸進式升級, 很少一次到位.<br />
一次到位的好處是馬上就可以享受到當時最適合的產品，一次弄完，但是花費也不少.<br />
錢少的人就用漸進式升級, 買當時 C/P 值最好的東西，或有多少錢買多少東西，等到後來有 C/P 值值得的東西, 花的錢少, 但是會有一些相容性之類的問題(近年 AV/Audio 規格很混亂)</p>
<p>目前因中醫治療後，天天要平躺一個小時左右練功, 讓氣運行全身.<br />
平躺是一件很無聊的事情, 第四台會看到很無聊. 這時候就需要一些其他的娛樂.<br />
就需要一台客廳多媒體電腦來上網看看 RSS 或是 YouTube 或是朋友的 Mail 等等.</p>
<p>這一台電腦在我設定的需求內, 未來要可以擴充 BD 的功能.<br />
這樣就可以直接看 BD 的影片(謎之聲: 是 BDRip 吧&#8230;..)<br />
Anyway, 測試基準就是要以可以播 BD 的影片為準.</p>
<p>之前因為都是用 Q6600 撥放 BD, 沒有想到一般的電腦撥 BD 的影片實在是很困難. 像是 Pentium 4 3.0CG 撥起來像是老牛拖車一樣. 更不要講以前更舊的 Pentium 4 2.0G 之類的.</p>
<p>沒有辦法, 只有換系統一途。當時要發消費券也是一個誘因之一，幫忙擴大內需。所鎖定足夠播 BD 的 CPU, 記得找來找去, 最後選到的就是 AMD AM2+ 5000+ + 780G. AM2+ 5000+ 是當時可以買到最低級數應該可播 BD 的 CPU.</p>
<p>不過這次選主機板的時候就要很小心, 因為 780G 有些是不含某些特別端子的.<br />
讓我們來看看 GA-MA78GPM-DS2H 這一塊主機板的背面端子<br />
<a title="GA-MA78GPM-DS2H 背板" href="http://www.flickr.com/photos/richliu_tw/3624691473/"><img title="GA-MA78GPM-DS2H 背板" src="http://farm4.static.flickr.com/3591/3624691473_84ee6c578f.jpg" alt="GA-MA78GPM-DS2H 背板" width="500" height="140" /></a></p>
<p>有沒有發現, DVI-D, HDMI, D-SUB, 光纖輸出, SPDIF, 7.1 解碼, E-SATA,<span style="color: #0000ff;"> IEEE-1394</span> 都有了, PS2 Keyboard, <span style="color: #0000ff;">Mouse</span>, 網路卡. 特別稱讚一下技嘉, 就是比 ASUS 多了一個 1394.<br />
缺點大概是 HDMI 和 D-SUB or DVI 是不能同時存在的, 記得 HDMI  還不能做音效輸出(ATI HD4850 獨顯卡可以), 沒關係, 我用不到.</p>
<p>重點在於 AMD 780G Chipset 內建 HD3200 的顯示晶片組, 還有 ATI UVD 解 H.264 技術. 可以非常順利的解 BD 影片(比 Nvidia 的設定簡單)</p>
<p>這樣的端子訊息就是我們需要的, 如果是 Intel 平台, 除非是弄 Nvidia 的 Chipset, 否則不管是 P45 or G45 平台,<br />
都很難不再買其他的卡達到以上的功能.. 我自己 Q6600 的平台是 G43, 還要再買顯卡, 而且還沒有光纖輸出, 一差差一大截.</p>
<p>一開始的時候, 我是用軟解的方式去解 BD,  kmplayer 軟體似乎在這上面有不少問題.<br />
雖然可以看, 但好像就差了這麼一點, 直到有一次我試到完美解碼這個<span style="text-decoration: line-through;">祖國匪區</span>大陸人弄的軟體之後, 才知道, 原來完美解碼己經將這個解決方案弄得很完整了. 在此向完美解碼團隊致敬.</p>
<p><a href="完美解码 PureCodec Build 20090513" target="_blank">完美解碼 下載點</a></p>
<p><a title="PureCodec-Setting" href="http://www.flickr.com/photos/richliu_tw/3624747957/"><img title="PureCodec-Setting" src="http://farm3.static.flickr.com/2477/3624747957_d8f81a959b.jpg" alt="PureCodec-Setting" width="500" height="426" /></a></p>
<p>只要將 Decode Mode 選用 Play mode &#8211; HDTV (ATI UVD) 就可以了, 以下是一些微調的經驗</p>
<ul>
<li>Output 要調比例, 怎麼調都不正常:  Video Renderer 要改用 VMR9, 才會正常. KMPlayer 內也可以改</li>
<li>有外接擴大機:  記得 Audio Decoder &amp; Out 要用 SPDIF, 改用光纖接到擴大機,</li>
<li>如果要解 DD51, 要選 PowerDVD Codec(不過輸出還是只有 2CH, 是一大缺點)</li>
</ul>
<p><a title="Yamaha RX-V559 放大機" href="http://www.flickr.com/photos/richliu_tw/3624855169/"><img title="Yamaha RX-V559 放大機" src="http://farm3.static.flickr.com/2443/3624855169_44f10ec451.jpg" alt="Yamaha RX-V559 放大機" width="500" height="375" /></a></p>
<p>這一台是 Yamaha RS-V559, 算很舊的綜合放大機.<br />
這顯示 5.1 聲道 Decode, 如果是 DTS-HD 會解出 7.1 聲道.</p>
<p>目前一般的 BD 片 (像是 BENQ 阿里山和綠島 Demo 片), 大概 CPU 使用率在 20~50% 之間, 其他都用硬解解掉了.<br />
我是木眼鏡，目前看不太出來硬解品質差到那邊, 更何況我的電視不吃 780G 輸出的 DVI 訊號(大概是 Code 沒寫好, 大同早期的電漿, 大概是 CXH 他們弄的&#8230;.)所以沒有什麼差別.</p>
<p>重點是, <span style="color: #ff0000;">當初在順發弄這顆 CPU + 主機版特價含稅刷卡不到 NT$4,000.- 元，真是特低價!!!</span><br />
<span style="color: #3366ff;">記憶體我是用 DDR2-667 的, 表示非獨顯晶片, ShareMemory 單通道, 也可以解 BD.</span></p>
<p>如果是用 Intel 系統, 怎麼可能用 4000 元小升級呢? 連匪區的 P43 主機版都不一定買得到, 更不要說加 CPU, 加顯示卡, 加有光纖輸出.<br />
而且如果用內建顯卡, Intel 的不支援. 用 Nvidia 似乎要買高檔一點的. 怎麼看都不符合我低價策略.</p>
<h2><span style="color: #0000ff;">便宜的桌機</span></h2>
<p>就在上個月，老婆用的 ASUS P4P800-SE 突然就不工作了, 北橋摸起來很熱, 初步判定是 Chipset 燒了. 這時就面對一個問題, 要升級還是換主機版?</p>
<p>找了幾天，大致上是這樣</p>
<p>1. 如果新的 P4 主機版，大概要 2K 多<br />
2. 如果是換 P4P800-SE 良品，大概要 1K<br />
3. 全新品, 5K~8K</p>
<p>想了一陣子，換新主機版又不合算，重複投資。換良品，如果再掛了我也很麻煩，搞一台要一二天。全新品就貴了。</p>
<p>不過本人一向響應擴大消費救台灣的活動，所以後來是決定買全新的系統。有了前二次的經驗，我覺得 AMD 780G 是一個很好的平台</p>
<p>1. 不用再搞顯示卡, 沒有額外的週邊<br />
2. 便宜.<br />
3. Windows Install 看起來還好, 就丟下去裝一裝就可以開機了 (Windows XP 不要用 AHCI 裝)</p>
<p>所以本人堅持著 CP 值最高原則, 找了 AMD 很多 CPU, 最後選定了 AMD Phenom X3 這一顆 3 核 CPU, 原因很簡單</p>
<p><a title="AMD Phenom X3" href="http://www.flickr.com/photos/richliu_tw/3624916017/"><img title="AMD Phenom X3" src="http://farm4.static.flickr.com/3359/3624916017_6dd704ef9a.jpg" alt="AMD Phenom X3" width="360" height="360" /></a></p>
<p>1. AM2+ 8650 不到 3000 元就有三核心, CP 值高<br />
2. 便宜, CP 值高<br />
3. 多一核給老婆用, 不一定用得到, 至少看起來爽, CP 值高<br />
4. 不超頻, 不用想太多</p>
<p>實際上用起來還真的是沒有太多問題, 不過在安裝 Windows XP 沒有啟動 AHCI Mode, 以後要開 AHCI mode, 那就</p>
<ul>
<li>先將 SATA HDD 插在 SATA5/6</li>
<li>進 BIOS 啟動 AHCI Mode</li>
<li>這時可以正常進入 Windows XP</li>
<li>安裝廠商提供的 AHCI Driver for Winodws XP</li>
</ul>
<p>這樣就可以了.</p>
<p><span style="color: #ff0000;">這次整套系統花了我共 7000 元. 含 AMD AM2+ 8650 , 4G DDR2-800 , ASUS M4A78-EM . </span>(本來買 ASUS 是看看 DVI 輸出的問題有沒有改善, 結果沒有, 不如買 Gigabyte, 會更便宜一點)</p>
<h2>結論:</h2>
<p>AMD 的系統因為廣告打的沒有 Intel 大，而且因為 Intel 的行銷策略, 很多廠商不太願意做 AMD 的小電腦。<br />
<span style="color: #0000ff;">AMD 的 CP 值極高, Intel 低價電腦難望其項背</span>(行銷就太強了, 不過行銷和技術是二件事). 尤其是 780G/790G 這種內建顯示卡的整合型晶片組，效能比 Intel GMA 系列的整合型晶片組好上太多了.  依照不同的需求選擇不同的 CPU, 如果是輕度的 PC Game 玩家，還可以玩一些 GAME. 如果想看 BD 電影, 加個 BD-ROM 就可以了. <span style="color: #ff0000;">重點是，這套系統非常便宜</span>。至於穩定性，我有 Server/Media Center/Desktop ，現在沒有有大問題，硬體看起來都還好，所以我認為穩定性 OK.</p>
<p><strong><span style="color: #ff0000;">我敢說， AMD CPU + 780G/790G 系列晶片組，是近年 CP 值最好的的組合。</span></strong></p>
<p>* 本篇文章非置入性行銷文&#8230; *</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/06/15/779/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ARMv6 的 Word Swap 指令</title>
		<link>http://blog.richliu.com/2009/05/23/761/</link>
		<comments>http://blog.richliu.com/2009/05/23/761/#comments</comments>
		<pubDate>Fri, 22 May 2009 16:20:11 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ARMv6]]></category>
		<category><![CDATA[REV]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=761</guid>
		<description><![CDATA[ARMv6 加入了幾個好用的 Swap 指令. 不需要用軟體算來算去
請參考 http://www.arm.com/pdfs/ARMv6_Architecture.pdf
REV
REV16
REVSH

最常用的應該是 REV 吧.
Realview inline assembly 很簡單.
[C]unsigned int tmp = 0&#215;12345678;
__asm{
         REV tmp, tmp
}[/C]
GNU C++ inline assembly 為(未測)
[C]
unsigned int tmp = 0&#215;12345678;
__asm__ __volatile__ (
   『REV %0,%0;』 : 『=r』(tmp) : 『r』(tmp):』r5&#8243;);
);[/C]
]]></description>
			<content:encoded><![CDATA[<p>ARMv6 加入了幾個好用的 Swap 指令. 不需要用軟體算來算去<br />
請參考 http://www.arm.com/pdfs/ARMv6_Architecture.pdf</p>
<p>REV<br />
REV16<br />
REVSH</p>
<p><a href="http://www.flickr.com/photos/richliu_tw/3486040982/" title="Flickr 上 richliu(有錢劉) 的 ARM_REV"><img src="http://farm4.static.flickr.com/3567/3486040982_f2f5228deb_o.png" width="692" height="384" alt="ARM_REV" /></a></p>
<p>最常用的應該是 REV 吧.</p>
<p>Realview inline assembly 很簡單.</p>
<blockquote><p>[C]unsigned int tmp = 0&#215;12345678;<br />
__asm{<br />
         REV tmp, tmp<br />
}[/C]</p></blockquote>
<p>GNU C++ inline assembly 為(未測)</p>
<p>[C]<br />
unsigned int tmp = 0&#215;12345678;<br />
__asm__ __volatile__ (<br />
   『REV %0,%0;』 : 『=r』(tmp) : 『r』(tmp):』r5&#8243;);<br />
);[/C]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/05/23/761/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[工作筆記] Linux SATA NCQ Patch</title>
		<link>http://blog.richliu.com/2009/04/23/755/</link>
		<comments>http://blog.richliu.com/2009/04/23/755/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 02:33:51 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[ncq]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[sata]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=755</guid>
		<description><![CDATA[工作上要寫個 NCQ 的實作, 這是 Linux NCQ 的 Patch.
參考一下就知道做了什麼變動.

[PATCH 01/15] libata-ncq: add NCQ related ATA constants and id macros
[PATCH 02/15] libata-ncq: add NCQ related libata flags
[PATCH 03/15] libata-ncq: pass ata_scsi_translate() return value to SCSI midlayer
[PATCH 04/15] libata-ncq: implement ap-&#62;sactive
[PATCH 05/15] libata-ncq: implement command exclusion
[PATCH 06/15] libata-ncq: implement NCQ command translation
[PATCH 07/15] libata-ncq: implement ata_eh_read_log_10h()
[PATCH 08/15] libata-ncq: [...]]]></description>
			<content:encoded><![CDATA[<p>工作上要寫個 NCQ 的實作, 這是 Linux NCQ 的 Patch.</p>
<p>參考一下就知道做了什麼變動.</p>
<ul>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01360.html">[PATCH 01/15] libata-ncq: add NCQ related ATA constants and id macros</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01359.html">[PATCH 02/15] libata-ncq: add NCQ related libata flags</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01361.html">[PATCH 03/15] libata-ncq: pass ata_scsi_translate() return value to SCSI midlayer</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01357.html">[PATCH 04/15] libata-ncq: implement ap-&gt;sactive</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01363.html">[PATCH 05/15] libata-ncq: implement command exclusion</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01368.html">[PATCH 06/15] libata-ncq: implement NCQ command translation</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01362.html">[PATCH 07/15] libata-ncq: implement ata_eh_read_log_10h()</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01372.html">[PATCH 08/15] libata-ncq: update EH to handle NCQ</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01371.html">[PATCH 09/15] libata-ncq: implement NCQ device configuration</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01367.html">[PATCH 10/15] libata-ncq: implement ata_ncq_complete()</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01364.html">[PATCH 11/15] ahci: clean up AHCI constants in preparation for NCQ</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01365.html">[PATCH 12/15] ahci: add HOST_CAP_NCQ constant</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01370.html">[PATCH 13/15] ahci: kill pp-&gt;cmd_tbl_sg</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01366.html">[PATCH 14/15] ahci: implement NCQ suppport</a></li>
<li><a href="http://www.spinics.net/lists/linux-ide/msg01369.html">[PATCH 15/15] sata_sil24: implement NCQ support</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/04/23/755/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Android] 快樂的 Android 體驗</title>
		<link>http://blog.richliu.com/2009/02/21/735/</link>
		<comments>http://blog.richliu.com/2009/02/21/735/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 16:59:02 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[家人]]></category>
		<category><![CDATA[睿睿]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=735</guid>
		<description><![CDATA[由這些圖集可以知道, 使用 Android 手機是非常快樂的體驗 (大誤)
內有限制級圖片, 未成年請由父母陪同觀賞

拿到 Android 手機就很開心~

功能齊全, 實在太令人驚訝了, 尤其是那個時鐘太好玩了

讓我展示一下如何使用 Touch Screen 吧

有鍵盤的 Android 手機最適合上 IRC 找別家的小朋友一起聊天.

你看, 這隻多好看呀~

這麼好用的手機, 還不趕快去 Google 訂講一隻嗎?
電話是 900913~~ 900913~

]]></description>
			<content:encoded><![CDATA[<p>由這些圖集可以知道, 使用 Android 手機是非常快樂的體驗 (大誤)</p>
<p>內有限制級圖片, 未成年請由父母陪同觀賞</p>
<p><span id="more-735"></span></p>
<p>拿到 Android 手機就很開心~<br />
<a title="Happy Android Kids (by richliu(有錢劉))" href="http://flickr.com/photos/richliu_tw/3294666465/"><img title="Happy Android Kids (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3416/3294666465_089fd8edba.jpg" alt="Happy Android Kids (by richliu(有錢劉))" width="500" height="332" /></a></p>
<p>功能齊全, 實在太令人驚訝了, 尤其是那個時鐘太好玩了<br />
<a href="http://flickr.com/photos/richliu_tw/3294669817/" title="DSC_1283"><img src="http://farm4.static.flickr.com/3638/3294669817_ff97108a2f.jpg" title="DSC_1283" alt="DSC_1283" width="500" height="332" /></a></p>
<p>讓我展示一下如何使用 Touch Screen 吧<br />
<a href="http://flickr.com/photos/richliu_tw/3295500678/" title="How to use Android touch screen"><img src="http://farm4.static.flickr.com/3527/3295500678_ec6cf22ee3.jpg" title="How to use Android touch screen" alt="How to use Android touch screen" width="500" height="332" /></a></p>
<p>有鍵盤的 Android 手機最適合上 IRC 找別家的小朋友一起聊天.<br />
<a href="http://flickr.com/photos/richliu_tw/3295512030/" title="DSC_1291"><img src="http://farm4.static.flickr.com/3505/3295512030_34104f7112.jpg" title="DSC_1291" alt="DSC_1291" width="500" height="332" /></a></p>
<p>你看, 這隻多好看呀~<br />
<a href="http://flickr.com/photos/richliu_tw/3295517882/" title="DSC_1293"><img src="http://farm4.static.flickr.com/3508/3295517882_60286bb0e4.jpg" title="DSC_1293" alt="DSC_1293" width="500" height="332" /></a></p>
<p>這麼好用的手機, 還不趕快去 Google 訂講一隻嗎?<br />
電話是 900913~~ 900913~<br />
<a href="http://flickr.com/photos/richliu_tw/3295523792/" title="DSC_1295"><img src="http://farm4.static.flickr.com/3212/3295523792_99d22d332d.jpg" title="DSC_1295" alt="DSC_1295" width="500" height="332" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/02/21/735/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Android] Android Firmware Update</title>
		<link>http://blog.richliu.com/2009/02/04/714/</link>
		<comments>http://blog.richliu.com/2009/02/04/714/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 07:53:36 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=714</guid>
		<description><![CDATA[今天一時興起, 先來升級 ADP1(Android Dev Phone ) 的 Firmware

首先按 Photo 鍵 + 開機進工模
出現 Serial 0 的字樣之後, 按 back 到 FASTBOOT 模式
用 x86 tool 下的 fastboot 燒錄
# ./fastboot flash boot boot.img
# ./fastboot flash system syetm.img
# ./fastboot reboot

至於 Image 可以到以下的地方找

ADP Offical Image 
杯子蛋糕(Cupcake, Android 1.5)
Android rom images JFv1.41 Released!

現在玩 Cupcake 雖然有中文選單, 有虛擬鍵盤, 不過沒有 Google Market.
之前有人講 Wireless 有問題, 不過二月的版本應該己經解決了.
我自己編的 [...]]]></description>
			<content:encoded><![CDATA[<p>今天一時興起, 先來升級 ADP1(Android Dev Phone ) 的 Firmware</p>
<ol>
<li>首先按 Photo 鍵 + 開機進工模</li>
<li>出現 Serial 0 的字樣之後, 按 back 到 FASTBOOT 模式</li>
<li>用 x86 tool 下的 fastboot 燒錄</li>
<li># ./fastboot flash boot boot.img</li>
<li># ./fastboot flash system syetm.img</li>
<li># ./fastboot reboot</li>
</ol>
<p>至於 Image 可以到以下的地方找</p>
<ul>
<li><a href="http://andblogs.net/images/" target="_blank">ADP Offical Image </a></li>
<li><a href="http://andblogs.net/images/snapshots/" target="_blank">杯子蛋糕(Cupcake, Android 1.5)</a></li>
<li><a href="http://android.cool3c.com/article/3341" target="_blank">Android rom images JFv1.41 Released!</a></li>
</ul>
<p>現在玩 Cupcake 雖然有中文選單, 有虛擬鍵盤, 不過沒有 Google Market.<br />
之前有人講 Wireless 有問題, 不過二月的版本應該己經解決了.</p>
<p>我自己編的 Cupcake 可以在模擬器上用, 但是沒有看到可以給手機用的版本.(沒有 boot.img), 要再研究一下為什麼了. 努力抓時間研究中 :p</p>
<p>最後我還是換到 ADP 1.1 的 Firmware 了. 不過模擬器是用新的.</p>
<p>Ref.<a href="http://wiki.cheyingwu.tw/Android/Hack-area/Flash-to-cupcake" target="_blank"></a></p>
<ul>
<li><a href="http://wiki.cheyingwu.tw/Android/Hack-area/Flash-to-cupcake" target="_blank"><span>Flash-to-cupcake</span></a><a href="http://wiki.cheyingwu.tw/Android/Hack-area/Engineering-Bootloader-and-fastboot" target="_blank"></a></li>
<li><a href="http://wiki.cheyingwu.tw/Android/Hack-area/Engineering-Bootloader-and-fastboot" target="_blank"><span>Engineering-Bootloader-and-fastboot</span></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/02/04/714/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>將 Outlook 的通訊錄放到 Google Contacts.</title>
		<link>http://blog.richliu.com/2009/01/24/701/</link>
		<comments>http://blog.richliu.com/2009/01/24/701/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 16:20:55 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[contacts]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[outlook 2003]]></category>
		<category><![CDATA[聯絡人]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=701</guid>
		<description><![CDATA[
眾所皆知, 最近買了一隻 Google Dev Phone 使用，但是因為之前使用的手機是 SonyEricsson, 以 Outlook 做為聯絡人。目前業界標準似乎也是用 Outlook, 但是今天就是不小心用到一隻不支援的 Outlook 的 Google Dev Phone.
手機名單就沒有辦法從舊的轉換到新的手機內, 所以這就有點小麻煩.
我其實只要同步聯絡人就好，但是都有很多問題

Google Calendar Sync: 只有日曆同步
OggSync : Pro 版才可以同步聯絡人，但是根據其他程式的經驗, 可能會失敗, 所以就沒有買
gSyncit : 可以 Sync, 不過記得都是失敗(沒有 Sync 成功), 所以我就沒有再往下試

印像中還試了一個 koo??? 的程式, 總之, 不是 Sync 聯絡人失敗, 要不然就是資料不對
而 Outlook 2003 產生的 .csv, 又沒有辦法直接丟到聯絡人去.
我個人認為可能是Outlook 2003 中文版的問題, 英文版的程式看不懂
所以我就自力救濟, 用 php 亂寫了一隻程式, 不過我人懶, 這表示你要有 php 的環境才可以轉了.
1. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/richliu_tw/3219712127/"><img class="alignright" title="Android" src="http://farm4.static.flickr.com/3314/3219712127_5d7a0dbedf_m.jpg" alt="" width="240" height="221" /></a></p>
<p>眾所皆知, 最近買了一隻 Google Dev Phone 使用，但是因為之前使用的手機是 SonyEricsson, 以 Outlook 做為聯絡人。目前業界標準似乎也是用 Outlook, 但是今天就是不小心用到一隻不支援的 Outlook 的 Google Dev Phone.<br />
手機名單就沒有辦法從舊的轉換到新的手機內, 所以這就有點小麻煩.</p>
<p>我其實只要同步聯絡人就好，但是都有很多問題</p>
<ul>
<li><a href="http://www.google.com/support/calendar/bin/answer.py?hl=en&amp;answer=89955" target="_blank">Google Calendar Sync:</a> 只有日曆同步</li>
<li><a href="http://oggsync.com/" target="_blank">OggSync</a> : Pro 版才可以同步聯絡人，但是根據其他程式的經驗, 可能會失敗, 所以就沒有買</li>
<li><a href="http://www.daveswebsite.com/software/gsync/" target="_blank">gSyncit</a> : 可以 Sync, 不過記得都是失敗(沒有 Sync 成功), 所以我就沒有再往下試</li>
</ul>
<p>印像中還試了一個 koo??? 的程式, 總之, 不是 Sync 聯絡人失敗, 要不然就是資料不對<br />
而 Outlook 2003 產生的 .csv, 又沒有辦法直接丟到聯絡人去.<br />
我個人認為可能是Outlook 2003 中文版的問題, 英文版的程式看不懂</p>
<p>所以我就自力救濟, 用 php 亂寫了一隻程式, 不過我人懶, 這表示你要有 php 的環境才可以轉了.</p>
<p>1. 下載 <a href="http://blog.richliu.com/wp-content/outlookcsv2google.php.txt" target="_blank">outlookcsv2google.php</a> , 下載名稱會是 outlookcsv2google.php.txt, 改名 outlookcsv2google.php 即可<br />
2. 在 Outlook 2003 的選單, 『檔案』 -&gt; 『匯入及匯出』 -&gt; 『匯出至檔案』 -&gt;』Comma Separated Values (Windows)』 -&gt;選』聯絡人』 -&gt; 存成 『outlook.CSV』 (若沒有選全部安裝, 這邊會要求你有原始光碟片), 用編輯器, 移除 outlook.CSV 的第一行內容<br />
3. 將 outlook.CSV 放到和 outlookcsv2google.php 同一個目錄<br />
4. php outlookcsv2google.php, 會輸出 file.csv<br />
5. 到 <a href="http://www.gmail.com" target="_blank">http://www.gmail.com</a><br />
6. 左邊, 通訊錄 -&gt; 匯入 -&gt; 選擇 file.csv<br />
7. 大功告成</p>
<p>以上測試環境</p>
<p>1. Outlook 2003 正(繁)體中文版 + Windows XP<br />
2. Gentoo + PHP 5 (自行 compile)<br />
3. Firefox</p>
<p>目前同步到我的手機上, 還算順利, 也可以在 Google Contacts 自己編輯.</p>
<p>免責聲明<br />
1. 本程式沒有版權, 歡迎自行取用<br />
2. 本人不負責任何後果 :p</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/01/24/701/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[敗家] Google Dev Phone</title>
		<link>http://blog.richliu.com/2009/01/18/696/</link>
		<comments>http://blog.richliu.com/2009/01/18/696/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 15:43:36 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[敗家誌]]></category>
		<category><![CDATA[敗家]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=696</guid>
		<description><![CDATA[感謝 g 社的長輩協助,  幫我購入 Google Dev Phone.


其實本來沒有想買的, 但是去年年底因為接近 CES 2009, 所以很多平台都放上 Android, 加上 erisck 買了一隻 Google Dev Phone.所以我對 Google Dev Phone 是有興趣的.
本來 Android Market 賣 US$399 + U$25 還可以接受, 但是如果是台灣，要加上 $155 的運費. 這一隻從台灣賣出去的手機還真貴(上圖中有 Make In Taiwan).
這一切的一切都是某位 g 社的長輩說了一句, 可以請同事幫忙帶回來&#8230; 就爆炸了, 我的手不知道怎麼完成 Android Market 的註冊和信用卡付款機制 :~~
星期五前往 g 社去拜見長輩. 順便參觀一下 g 社人性的工作環境. 再次感謝長輩給我參觀的機會，真的是人性化企業呀.
白牌的手機不愧是白牌的手機, 包裝非常的簡約. 有種低調奢華的感覺?(心中的OS : 不過就是白紙盒裝的手機, [...]]]></description>
			<content:encoded><![CDATA[<p>感謝 g 社的長輩協助,  幫我購入 Google Dev Phone.</p>
<p><a title="Flickr 上 richliu(有錢劉) 的 白牌的手機 " href="http://www.flickr.com/photos/richliu_tw/3206613506/"><img src="http://farm4.static.flickr.com/3086/3206613506_43d9fc7359.jpg" alt="白牌的手機 " width="500" height="333" /></a><br />
<span id="more-696"></span><br />
其實本來沒有想買的, 但是去年年底因為接近 CES 2009, 所以很多平台都放上 Android, 加上 <a href="http://blog.ericsk.org/archives/1257" target="_blank">erisck 買了一隻 Google Dev Phone</a>.所以我對 Google Dev Phone 是有興趣的.<br />
本來 <a href="http://market.android.com/publish" target="_blank">Android Market</a> 賣 US$399 + U$25 還可以接受, 但是如果是台灣，要加上 $155 的運費. 這一隻從台灣賣出去的手機還真貴(上圖中有 Make In Taiwan).</p>
<p>這一切的一切都是某位 g 社的長輩說了一句, 可以請同事幫忙帶回來&#8230; 就爆炸了, 我的手不知道怎麼完成 Android Market 的註冊和信用卡付款機制 :~~<br />
星期五前往 g 社去拜見長輩. 順便參觀一下 g 社人性的工作環境. 再次感謝長輩給我參觀的機會，真的是人性化企業呀.</p>
<p>白牌的手機不愧是白牌的手機, 包裝非常的簡約. 有種低調奢華的感覺?(心中的OS : 不過就是白紙盒裝的手機, 不小心看還以為是大陸的山寨機 !!!). 不過本人不喜歡開箱文, 所以直接進入正題.</p>
<p>正面照, 第一次用 sim 卡登記完 Google 帳號之後, 就可以將 sim 卡拔出, 進行一般的操作.</p>
<p><a title="正面照 (by richliu(有錢劉))" href="http://flickr.com/photos/richliu_tw/3206616182/"><img title="正面照 (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3302/3206616182_07cd42951d_m.jpg" alt="正面照 (by richliu(有錢劉))" width="240" height="160" /></a></p>
<p>左側照<br />
<a title="左側照 (by richliu(有錢劉))" href="http://flickr.com/photos/richliu_tw/3206618120/"><img title="左側照 (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3125/3206618120_78fc0082f5_m.jpg" alt="左側照 (by richliu(有錢劉))" width="240" height="160" /></a></p>
<p>右側照<br />
<a title="右側照 (by richliu(有錢劉))" href="http://flickr.com/photos/richliu_tw/3205783491/"><img title="右側照 (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3334/3205783491_ae4c6ecd2d_m.jpg" alt="右側照 (by richliu(有錢劉))" width="240" height="160" /></a></p>
<p>背後照, 還是沒有任何的商標, 只有一個 Android 的圖案. 正白牌手機.<br />
<a title="背後照 (by richliu(有錢劉))" href="http://flickr.com/photos/richliu_tw/3205778407/"><img title="背後照 (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3457/3205778407_97bf71359d_m.jpg" alt="背後照 (by richliu(有錢劉))" width="240" height="160" /></a></p>
<p>這可以說是我第一隻 Smart Phone 手機. 我沒有 iPhone, 無從比較起.</p>
<p>但是可以說說缺點.</p>
<ul>
<li>有鍵盤設計, 所以上面的機構有點不穩, 但是這應該是這種手機的缺點(如果沒有鍵盤, 購買意願降低很多)</li>
<li>Wifi 待機時間很短, 這應該是 Wifi 手機的缺點了</li>
<li>觸控不是很順暢, 但是不確定是不是保護貼的關係.</li>
<li>內建使用者 UI 很糟糕, 我講的糟糕是除了觸控很炫以外的那種糟糕, 我常用的 SE K810i 是 8 分的話, 這一隻的 UI/功能大概只有 4 分. 或許很多功能要等自己生出來了.  偏偏找 用 Market 找 plugin 這種事非常累人.</li>
<li>沒有提供和 Outlook 的 sync 功能. 雖然有些人不需要, 但是 Outlook &lt;-&gt; Google Contracts 這一段大多數的軟體是要錢的. 所以我暫時還沒有做為手機主力. (連絡人同步不易)</li>
</ul>
<p>優點就不用說了, 會買這一隻手機的人是看上什麼優點呢?</p>
<p>那群人都是血液流著 geek 因子的人呀.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/01/18/696/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[新聞][想法] Android Porting 到 EeePC 之後.</title>
		<link>http://blog.richliu.com/2009/01/09/690/</link>
		<comments>http://blog.richliu.com/2009/01/09/690/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 06:53:16 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[亂扯淡]]></category>
		<category><![CDATA[Aspire One]]></category>
		<category><![CDATA[EeePC]]></category>
		<category><![CDATA[新聞]]></category>
		<category><![CDATA[評論]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=690</guid>
		<description><![CDATA[畫虎爛時間又到了, 今天要講評的是, Android Porting 到 EeeePC 這件事.
首先是 EeeePC 可以執行 Android 平台.
Android平台，並不是只有手機，連輕省筆電也有？

再來就是 HP Mini 的平台.
筆電跑Android又一例：HP Mini-Note 2133影片實況紀錄


其實除了 Netbook 的型式以外, Android 還以 Desktop phone 的型態存在, 這次 CES 展就有(CES 2009 &#8211; NIMble Android Desktop Phone)

The NIMble device boasts a 7-inch multitouch screen (800&#215;400) along with 624MHz Marvel processor, MicroSD card expansion, Bluetooth and Wi-Fi.
在 Open Source 界, 一直沒有一個像樣的手機平台, [...]]]></description>
			<content:encoded><![CDATA[<p>畫虎爛時間又到了, 今天要講評的是, Android Porting 到 EeeePC 這件事.</p>
<p>首先是 EeeePC 可以執行 Android 平台.<a href="http://chinese.engadget.com/2009/01/03/android-netbooks-on-their-way/" target="_blank"><br />
Android平台，並不是只有手機，連輕省筆電也有？</a><a href="http://chinese.engadget.com/2009/01/05/move-over-eee-android-now-running-on-hp-mini-note-2133/" target="_blank"></a><br />
<a title="3160503771_cd8a12da38 (by richliu(有錢劉))" href="http://www.flickr.com/photos/richliu_tw/3180885241/"><img title="3160503771_cd8a12da38 (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3332/3180885241_a5a93745f1_m.jpg" alt="3160503771_cd8a12da38 (by richliu(有錢劉))" width="229" height="240" /></a></p>
<p>再來就是 HP Mini 的平台.<a href="http://chinese.engadget.com/2009/01/05/move-over-eee-android-now-running-on-hp-mini-note-2133/" target="_blank"><span id="ppt1419320"><br />
筆電跑Android又一例：HP Mini-Note 2133影片實況紀錄</span></a><br />
<a title="hp-2133-android- (by richliu(有錢劉))" href="http://www.flickr.com/photos/richliu_tw/3180885243/"><img title="hp-2133-android- (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3336/3180885243_6d669967b7_m.jpg" alt="hp-2133-android- (by richliu(有錢劉))" width="240" height="180" /></a></p>
<p><span id="more-690"></span></p>
<p>其實除了 Netbook 的型式以外, Android 還以 Desktop phone 的型態存在, 這次 CES 展就有(<a title="Permanent Link: CES 2009 - NIMble Android Desktop Phone" rel="bookmark" href="http://www.talkandroid.com/552-ces-2009-nimble-android-desktop-phone/">CES 2009 &#8211; NIMble Android Desktop Phone</a>)</p>
<p><a title="nimble-android-desktop-phon (by richliu(有錢劉))" href="http://flickr.com/photos/richliu_tw/3181188409/"><img title="nimble-android-desktop-phon (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3107/3181188409_40029e9de4_m.jpg" alt="nimble-android-desktop-phon (by richliu(有錢劉))" width="240" height="160" /></a></p>
<p style="padding-left: 30px;">The NIMble device boasts a 7-inch multitouch screen (800&#215;400) along with 624MHz Marvel processor, MicroSD card expansion, Bluetooth and Wi-Fi.</p>
<p>在 Open Source 界, 一直沒有一個像樣的手機平台, 一來太開放的系統沒有大廠願意加入, 二來沒有夠力的廠商做後盾.<br />
手機整合比 Home Gateway 這種小 Device 難太多了.</p>
<p>從前從前 <a href="http://trolltech.com/products/device-creation" target="_blank">Tolltech Qtopia</a> 有曾經嘗試過這個組合, 不過時機未到, 加上 Qtopia 的 License 問題, 可能也是讓大家卻步不前的阻力. 成功的經驗應該是 Motorola 的 E 系列手機吧, 但是隨著 Motorola 拱手將手機的江山讓出, 這一隻經典也慢慢的步入墳墓了.</p>
<p>後來有 <a href="http://www.openmoko.com/" target="_blank">OpenMoko</a> 有推 Open Hardware 的手機, 雖然是說 Hardware 開放, Open Source.<br />
但是 OpenMoko 的 solution 根本就沒有完整的完成過. 只能說是高級的組合玩具. 不可以說是一隻手機.</p>
<p>再來看看 2008 年的手機市佔率(Ref. <a href="http://www.wretch.cc/blog/dawo/9572351" target="_blank">2008全球智慧型手機市佔率 Worldwide Smartphone Sales</a>)</p>
<p><a title="Worldwide: Preliminary Smartphone Sales to End Users by Operating System, 2Q08 (Units) (by richliu(有錢劉))" href="http://flickr.com/photos/richliu_tw/3180973229/"><img title="Worldwide: Preliminary Smartphone Sales to End Users by Operating System, 2Q08 (Units) (by richliu(有錢劉))" src="http://farm4.static.flickr.com/3364/3180973229_80c44c64f1_o.png" alt="Worldwide: Preliminary Smartphone Sales to End Users by Operating System, 2Q08 (Units) (by richliu(有錢劉))" width="484" height="211" /></a></p>
<p>Research In Motion 是黑苺機, 有固定消費群, 不過非英語系國家很少人用<br />
Palm OS 不成氣候, 我猜從 Windows 平台往 Linux 平台移, 還是沒有長進, 時不我予, 當初丟掉大好江山, 拿不回來啦 :p</p>
<p>Symbian 後面都是追兵, 不要說緊緊追擊的 Windows Mobile. 更可怕的對手是 iPhone.<br />
即便它己經成為一個開放系統, 但是仍然沒有太多 Open Source 社群人土的加入.</p>
<p>但是前年 11 月 Google Annonce 他的手機平台 Android. 起初我也是不是很在意,<br />
不過當他發表 T-Mobile G1, 而預購數量可以到達 150 萬隻, 我就知道. 這個市場起來了.</p>
<p>更因為 Android 是一個開放平台, 用 Apache License Aggrement. 所以吸引了各家底層和<br />
Open Source 愛好者加入(有 Fun 的事情才有人搞), 而上層使用 SUN 的 JAVA 平台, 使得<br />
跨平台更為容易.而 JAVA 應該是目前使用人口最多的程式語言, 所以要寫些什麼應該不是<br />
很難的事情.</p>
<p>話講回來, 我很嚴肅的看待 Android 在 EeePC 出現這一件事. 這應該可以視作是一個 mile stone, 比 ARM 贊助 Ubuntu Porting 到 ARM 平台更有意思.</p>
<p>其實也是筆者個人長期忽視 Google 的力量, 因為, Android 就是 Google OS. 籍由 Linux 和 JAVA 這二個高度跨平台的 OS/Language, 除非是低階產品, 要不然我想不出來有那一個平台是不能跑的? 沒有.<br />
當然沒有 GUI 的 OS 一定不是 Windows CE/Windows Mobile 的天下, 那都是 VxWorks/Linux 的市場.(中階部份)</p>
<p>所以筆電可以在 x86 上跑 Android, Software 廠商就會比較願意在上面開發專用的 Software, 一次二個平台用. 那 Costdown 的時侯就是 Costdown 到 ARM 上執行. 平台有差別嗎? 沒有.<br />
如果平台沒有差別的時候, 第一個被威脅的當然就是微軟了.</p>
<p>所以接下來我的猜測</p>
<ol>
<li>Intel ATOM 佔領手機市場失敗</li>
<li>繼 Eee Phone 使用 Android 平台, 未來可能會出現用 Android 的 EeePC 平台</li>
<li>Android EeePC 平台使用 ARM 做為處理器.</li>
</ol>
<p>文章最後, 我還是要酸一下 EeePC .<br />
做為一個市場的先行者, 去年一下就拱手讓人.</p>
<h2><a href="http://taiwan.cnet.com/crave/0,2000088746,20134971,00.htm" target="_blank"><strong></strong><strong>2008年Q3 acer netbook出貨量最多</strong></a></h2>
<p>根據研究機構<a href="http://www.displaysearch.com/cps/rde/xchg/displaysearch/hs.xsl/Strong_mini_note_shipments_buoy_notebook_PC_Market_Q3_08.asp" target="_blank">DisplaySearch</a>的報告，Acer在2008年Q3賣掉了215萬台輕省筆電，囊括38.3％的Netbook市佔率，Asus只賣掉170萬台，市佔率落在30.3％。整個Q3的netbook出貨量為561萬台。<br />
<span style="color: #ff0000;">才二季就被幹掉, 這也太強了.</span></p>
<h2><a href="http://ascii.jp/elem/000/000/198/198626/" target="_blank">日本迷你筆電滿意度排名</a></h2>
<p style="padding-left: 30px;">日文看不懂沒有關係, 我整理出重點<br />
整體滿意度<br />
1) Aspire One<br />
3) EeePC<br />
設計<br />
1) Aspire One<br />
3) EeePC<br />
方便移動<br />
2) EeePC<br />
5) Aspire One<br />
電池<br />
2) EeePC<br />
5) Aspire One<br />
價格性能比<br />
1) Aspire One<br />
2) EeePC</p>
<p>當然看了<a href="http://www.programmer-club.com/pc2020v5/forum/ShowSameTitleN.asp?URL=N&amp;board_pc2" target="_blank">某人的文章</a>, 我怎麼覺得某人要負責呢? 幹 RD 的去干擾 PM, 當主管的和小弟搶工作作. 怎麼看都不對,<br />
我猜內部不太和諧, RD 不肯聽 PM 的自己硬幹, PM 沒有 RD 的 Support 什麼事都做不了. (當然背後實際的原因是, ACER 的通路還是比 ASUS 好, 而且外型的確也是勝出, 這二點應該是 ACER 大勝的原因, RD 因素? 那大家就多想想了)</p>
<p>現在迷你筆電也是百家爭嗚了, 去年我就這樣預測. 不過這也是屁話, 本來就會發生的事.</p>
<p>現在就看 Android 在 2009 能不能搶下 10% 的市場. 我認為會啦, 因為連我不用智慧型手機的人, 不小心都買一隻了, Android 有無窮的魅力呀~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/01/09/690/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Andriod 筆記(Run Application, build Image)</title>
		<link>http://blog.richliu.com/2009/01/09/681/</link>
		<comments>http://blog.richliu.com/2009/01/09/681/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 03:30:50 +0000</pubDate>
		<dc:creator>richliu</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[隨手札記]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.richliu.com/?p=681</guid>
		<description><![CDATA[最近不小心手滑買了一隻 Android Dev Phone 1 長得和 T-Mobile G1 的外型是一樣的.
雖然還沒有到貨, 但是準備工作要先作好.

== Android Software Development ==
Download SDK
==============
http://code.google.com/intl/zh-TW/android/download_list.html
下載 SDK 之後, 我是解壓在 /home 下
Download Eclipse
==============
安裝之前先移除系統中原有的 Eclipse(?), 直接下載 Eclipse
http://www.eclipse.org/downloads/
我是下載 Eclipse 3.4.1 Classic (151M)
解壓到 /home 下. 目錄在 /home/eclipse
直接到 /home/eclipse 執行 ./eclipse 就可以了 (似乎用 ubuntu 的 openjdk 會比較快)
Download WTP
==============
用 http://code.google.com/intl/zh-TW/android/intro/installing.html#installingplugin 安裝 ADT 的方式, 安裝 WTP.
如果沒有先安裝 WTP, 安裝 ADT 會有問題, ADT 可以用 plugin [...]]]></description>
			<content:encoded><![CDATA[<p>最近不小心手滑買了一隻 <a href="http://code.google.com/intl/zh-TW/android/dev-devices.html" target="_blank">Android Dev Phone 1</a> 長得和 T-Mobile G1 的外型是一樣的.<br />
雖然還沒有到貨, 但是準備工作要先作好.<br />
<span id="more-681"></span></p>
<h2>== Android Software Development ==</h2>
<p>Download SDK<br />
==============</p>
<p>http://code.google.com/intl/zh-TW/android/download_list.html</p>
<p>下載 SDK 之後, 我是解壓在 /home 下</p>
<p>Download Eclipse<br />
==============</p>
<p>安裝之前先移除系統中原有的 Eclipse(?), 直接下載 Eclipse</p>
<p>http://www.eclipse.org/downloads/</p>
<p>我是下載 Eclipse 3.4.1 Classic (151M)</p>
<p>解壓到 /home 下. 目錄在 /home/eclipse</p>
<p>直接到 /home/eclipse 執行 ./eclipse 就可以了 (似乎用 ubuntu 的 openjdk 會比較快)</p>
<p>Download WTP<br />
==============</p>
<p>用 http://code.google.com/intl/zh-TW/android/intro/installing.html#installingplugin 安裝 ADT 的方式, 安裝 WTP.<br />
如果沒有先安裝 WTP, 安裝 ADT 會有問題, ADT 可以用 plugin 下載, 記得選 WTP 3.0.3 就好了, 不用全選.</p>
<p>http://download.eclipse.org/webtools/updates/</p>
<p>Download ADT<br />
==============</p>
<p>http://code.google.com/intl/zh-TW/android/intro/installing.html#installingplugin</p>
<p>Write a sample program<br />
==============</p>
<p>http://code.google.com/intl/zh-TW/android/intro/develop-and-debug.html#developingwitheclipse</p>
<p>我是 New Project 之後, 選 Hello, Activity! 這個 sample code 做為 base.<br />
在 Run 之前, 要先用 create a Launch configuration</p>
<p>順利的話, 就可以叫出 Android Emulator.</p>
<h2>== Android Image Development ==</h2>
<p>這一段是編 image 的.</p>
<p>Update System Package<br />
==============</p>
<p>http://source.android.com/download</p>
<div style="margin-top: 0px; margin-bottom: 0px;">
<div style="margin-top: 0px; margin-bottom: 0px; font-family: arial,sans-serif;">
<div style="margin-top: 0px; margin-bottom: 0px;">
<ul style="margin-top: 0px; margin-bottom: 0px;">
<li style="margin-top: 8px; margin-bottom: 8px; font-family: arial,sans-serif;">安裝 Git</li>
</ul>
</div>
</div>
</div>
<blockquote style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;"><p><span style="font-family: arial;"><span style="font-weight: normal; font-size: 13px; word-spacing: 0px; text-transform: none; text-indent: 0px; line-height: normal; font-style: normal; white-space: normal; letter-spacing: normal; border-collapse: separate; font-variant: normal; color: #000000;"><span style="font-family: courier new,monospace;">$ </span></span><span style="font-family: courier new,monospace;">sudo apt-get install git-core gnupg</span></span></p></blockquote>
<div>
<div style="margin-top: 0px; margin-bottom: 0px;">
<div style="margin-top: 0px; margin-bottom: 0px; font-family: arial,sans-serif;">
<div style="margin-top: 0px; margin-bottom: 0px;">
<ul style="margin-top: 0px; margin-bottom: 0px;">
<li style="margin-top: 8px; margin-bottom: 8px; font-family: arial,sans-serif;">JDK 5.0, update 12 or higher. 個人用了以後, 用 java5 jdk 似乎比較容易成功.</li>
</ul>
</div>
</div>
</div>
</div>
<blockquote style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;"><p><span style="font-family: arial;"><span style="font-weight: normal; font-size: 13px; word-spacing: 0px; text-transform: none; text-indent: 0px; line-height: normal; font-style: normal; white-space: normal; letter-spacing: normal; border-collapse: separate; font-variant: normal; color: #000000;"><span style="font-family: courier new,monospace;">$ </span></span><span style="font-family: courier new,monospace;">sudo apt-get install sun-java5-jdk</span></span></p></blockquote>
<div>
<div style="margin-top: 0px; margin-bottom: 0px;">
<div style="margin-top: 0px; margin-bottom: 0px; font-family: arial,sans-serif;">
<div style="margin-top: 0px; margin-bottom: 0px;">
<ul style="margin-top: 0px; margin-bottom: 0px;">
<li style="margin-top: 8px; margin-bottom: 8px; font-family: arial,sans-serif;"><span style="font-family: arial,sans-serif;">The following packages: </span><span style="line-height: 16px;"><span style="font-family: arial,sans-serif;">flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl. </span></span></li>
</ul>
</div>
</div>
</div>
</div>
<blockquote style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;"><p><span style="font-family: arial;"><span style="font-family: courier new,monospace;">$ sudo apt-get install flex bison gperf </span><span style="word-spacing: 0px; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; text-transform: none; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; font-family: courier new,monospace; color: #000000;"><span style="line-height: 16px;">libsdl-dev libesd0-dev </span></span><span style="font-family: courier new,monospace;">libwxgtk2.6-dev build-essential zip</span><span style="font-family: arial,sans-serif;"><span style="font-family: courier new,monospace;"> curl li</span><span><span style="font-family: courier new,monospace;">b</span></span><span><span style="font-family: courier new,monospace;">ncurses5-dev zlib1g-dev<br />
</span></span></span></span></p></blockquote>
<div>
<div style="margin-top: 0px; margin-bottom: 0px;">
<div style="margin-top: 0px; margin-bottom: 0px; font-family: arial,sans-serif;">
<div style="margin-top: 0px; margin-bottom: 0px;">
<ul style="margin-top: 0px; margin-bottom: 0px;">
<li style="margin-top: 8px; margin-bottom: 8px;"><span style="word-spacing: 0px; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; text-transform: none; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; font-family: courier new,monospace; color: #000000;"><span style="line-height: 16px;"><span style="font-family: arial,sans-serif;">You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc. </span></span></span></li>
</ul>
</div>
</div>
</div>
</div>
<blockquote style="border: medium none ; margin: 0pt 0pt 0pt 40px; padding: 0px;">
<div><span style="border-collapse: separate; line-height: 16px; font-family: courier new;">$ sudo apt-get install valgrind<br />
</span></div>
</blockquote>
<ul>
<li><span style="word-spacing: 0px; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; text-transform: none; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; font-family: courier new,monospace; color: #000000;"><span style="line-height: 16px;"><span style="font-family: arial,sans-serif;">Intrepid (</span></span></span>8.10) users may need a newer version of libreadline: (原文有問題, 應該是 libreadline5-dev 才對)</li>
</ul>
<p style="padding-left: 30px;"><span style="font-family: courier new,monospace;">$ sudo apt-get install libreadline5-dev</span></p>
<p>Get repo tools<br />
==============</p>
<p>* repo is not a new tools. It is just a wrap for git command.</p>
<p># mkdir ~/bin<br />
# curl http://android.git.kernel.org/repo &gt; ~/bin/repo<br />
# chmod a+x ~/bin/repo<br />
Get Android Source<br />
==================</p>
<p># cd /home/mydroid<br />
# repo init -u git://android.git.kernel.org/platform/manifest.git</p>
<p># repo sync</p>
<p>Compile Android Source<br />
==================</p>
<p># cd /usr/lib/jvm/java-1.5.0-sun<br />
# export JAVA_HOME=`pwd`<br />
# export PATH=$JAVA_HOME/bin:$PATH<br />
# cd /home/mydroid<br />
# make clean<br />
# make</p>
<p>如果中間 compile 有 JVM core dump or compile failed, 記得多試幾次.</p>
<p>(待續)</p>
<p>Ref. <a href="http://virtuallyshocking.com/2008/12/20/building-android-for-the-asus-eeepc-701/" target="_blank">Building Android for the Asus Eee PC 701</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richliu.com/2009/01/09/681/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
