Email me: jollen # jollen.org

more: Jollen 的 Embedded Linux 教育訓練

« July 2010 | (回到Blog入口) | September 2010 »

August 2010 歸檔

August 2, 2010

Android GSM Phone:長江二號 (CJ-2) 開機囉

執行 Android 2.1 的智能手機「長江二號」開機囉。目前使用起來還算順暢,雖然 Engineering Build 的開機時間有點長,不過能看到 Linux 小企鵝,是一件興奮的事情。

長江二號(CJ-2)是使用 Rockchip RK2808 的 Android GSM 智能手機,目前正在測試中的「長江三號」是令人更興奮的版本。長江二號的團隊(Zinn.Mobi)正在很努力地催生三號中,希望 3G 版本也能儘快與大家見面。

August 3, 2010

Jollen 的 Android Booting 解析, #3: 製作 Android Bootchart

前一則日記提到的 Bootchart 是典型的開機量測工具,主要能進行開機過程以及開機時間的量測。由於 Bootchart 的原理是取代 init process 或是內建在 init process 裡,所以只能取得 initial script 的開機過程報告。不過,這已經很有幫助了。

關於 Android Bootchart

以下是一份使用 Bootchart 所製作的 Android 開機流程圖。過去有一些以 C 重寫 Bootchart 的專案,而 Android 也有一份 C re-implementation,放置於 [system/core/init/bootchart.c]。由此可知,Android init 已經內建一份 C re-implement 的 Bootchart。

android bootchart
圖一:使用 Bootchart 製作的 Android 開機流程圖

以下說明如何製作 Android Bootchart。

1. 編譯 Android Bootchart

Android 的 init process 雖然已內建 Bootchart,但編譯系統預設並不會將 Bootchart 編譯至 init 裡。因此,需要重新編譯 init.c 才能加入 Bootchart:

jollen@android:~/try/mokoid_elcair-20100511$ touch system/core/init/init.c
jollen@android:~/try/mokoid_elcair-20100511$ . build/envsetup.sh 
including vendor/aosp/vendorsetup.sh
jollen@android:~/try/mokoid_elcair-20100511$ m INIT_BOOTCHART=true PRODUCT-dma6410xp-eng -j 8
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-update1
TARGET_PRODUCT=dma6410xp
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ECLAIR
============================================

完成後,使用 Android 模擬器開啟製作好的 image file。

2. 設定 Bootchart Timeout 時間

要讓 Bootchart 在「下一次開機」時開始運作,以進行取樣並紀錄開機過程,需要指定 Timeout 時間:

$ adb shell 'echo 120 > /data/bootchart-start'
$ adb shell 'mkdir /data/bootchart'

重新啟動模擬器。對 /data 目錄進行的變動,「可以」寫回 userdata.img 裡。這裡指定 Timeout 時間為 '120' 秒;實際測試時,可以視情況自由調整。

3. 取得 Bootchart 紀錄檔

在 Android 系統裡的 /data/bootchart 取得開機紀錄檔:

linux@android:~/android/mokoid$ adb shell
# ls -l /data/bootchart
-rw-rw-rw- root     root          389 2010-07-28 11:06 header
-rw-r--r-- root     root            0 2010-07-28 11:06 kernel_pacct
-rwxr-xr-x root     root       589824 2010-07-28 11:08 proc_diskstats.log
-rwxr-xr-x root     root      2293760 2010-07-28 11:08 proc_ps.log
-rwxr-xr-x root     root       196608 2010-07-28 11:07 proc_stat.log
# 

接下來,必須取出這幾個檔案,並製作成漂亮的統計圖檔。貼心的 Android 已經幫我們準備好一個 script 檔了,因此,先切換到 system/core/init 目錄下,直接執行 grab-bootchart.sh:

linux@android:~/android/mokoid$ cd system/core/init/
linux@android:~/android/mokoid/system/core/init$ ./grab-bootchart.sh 
7 KB/s (389 bytes in 0.048s)
1439 KB/s (405771 bytes in 0.275s)
2014 KB/s (3861856 bytes in 1.872s)
1936 KB/s (979391 bytes in 0.493s)
look at bootchart.tgz

最後的統計報告存放於 /tmp/android-bootchart/bootchart.tgz。

4. 製作精美 Bootchart 報告

Bootchart 包含一個以 Java 寫成的圖表製作工具,因此,還是必須取得原始的 Bootchart 套件。在 Ubuntu 環境下,可以用 apt 直接安裝:

$ sudo apt-get install bootchart

接著,將 bootchart.tgz 製作成圖檔:

$ java -jar /usr/share/bootchart/bootchart.jar /tmp/android-bootchart/bootchart.tgz
Parsing /tmp/android-bootchart/bootchart.tgz
Wrote image: ./bootchart.png

最後,得到如圖一的精美報告。接下來的工作,就是對 Bootchart 的內容進行分析。

延伸閱讀

2010.07.28: Jollen 的 Android Booting 解析, #1: 整體開機流程
2010.07.29: Jollen 的 Android Booting 解析, #2: 關於開機的評估
分享您的 Android Bootchart 筆記:Build Android Bootchart

August 10, 2010

Nexus One 晉升 Android Developer Phone 3

Nexus One 雖然在日前停止網路銷售,不過,根據幾天前在的 Android Developer Blog 上的一則新聞來看,Nexus One 榮獲「Android Developer Phone」頭銜。也就是,雖然 Nexus One 下架了,但改以 ADP3(Android Developer Phone 3)的名稱對開發者進行銷售。第一代 Android Developer Phone 就是由 T-Mobile G1(aka HTC Dream)換名而來,並且做了解鎖動作;Android Developer Phone 2(aka G2 or HTC Magic)於去年 11 月推出,同樣也是 Unlocked Phone。ADP3 則是將 Nexus One 下架上架再解鎖(Unlocked)。

這是 Android 開發者的一大福音(除了它的價格之外),Google 總是提供好用的開發者手機(Developer Phone)。ADP3 的購買方法還是一樣,需要 Android Developer 帳號。

關於 August 2010

此頁面包含了在August 2010發表於Jollen's Blog的所有日記,它們從老到新列出。

前一個存檔 July 2010

後一個存檔 September 2010

更多信息可在 主索引 頁和 歸檔 頁看到。

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org