2013年10月12日 星期六

[BBB] Android 4.2.2 / Debian 7 Porting 心得

Android 4.2.2 Porting guide

工作環境:Debian 7 Wheezy (AMD64)
移植平台:Beaglebone black (A5B)

實驗結果:


實驗器材:
Beaglebone black:

Micro HDMI to HDMI 線/ HDMI to DVI轉接頭:

變壓器(110V to 5V /2.5A):


在大學的課程中我接觸到了porting的作業,其實我第一次寫這個文章的時候,是寫成step by step的,但是我覺得,我實在很難寫得像TI的wiki一樣好,所以就索性整個砍掉 寫寫心得吧!

這篇文章通篇以心得為主,而其中衍生的一些問題,有些我已經解決了,我會盡快另開網誌把他們補齊,如果需要Step by step的文章的人,請參閱TI的wiki 網址如下,他提供了非常棒的索引與介紹。

TI-Android-JB-4.2.2-DevKit-4.1.1 ReleaseNotes
http://processors.wiki.ti.com/index.php/TI-Android-JB-4.2.2-DevKit-4.1.1_ReleaseNotes

TI-Android-JB-4.2.2-DevKit-4.1.1 DeveloperGuide(直接實作請看這)
http://processors.wiki.ti.com/index.php/TI-Android-JB-4.2.2-DevKit-4.1.1_DeveloperGuide

Debian 7 (wheezy)
http://www.eewiki.net/display/linuxonarm/BeagleBone+Black

大學時使用的是Pandaboard來做,但是這篇文章我是採用Beaglebone black來做,其實如果是倚靠別人做好的source,其實是沒什麼差別的,基本上你會需要build 3個東西:

Android :
    1. u-boot
    2. Linux Kernel
    3. Android

Debian :
    1. u-boot
    2. Linux kernel
    3. Debian file system (其實不用bulid 載下來就好)

最後再把這3個東西包在一起,燒入到你的SD卡之中,整個過程其實別人提供的Source已經都做得很完全的,我們需要的只是把make的指令下一下而已,我個人是建議一定要做Debian的實作,因為裡面提到了如何使用指令設定SD卡,以及如何配置SD卡之中的內容,當然,你也可以把Android中負責燒入的mkmmc-android.sh shell 打開來看,我認為這是這個實作中最重要的部分了。

其實以靠別人的soruce著實會覺得有點不夠過癮,但是我認為這是一個不錯的踏腳石啦,這個實作可以瞭解到一些基本的方法來構成一個OS,我覺得做完這個實作之後,我內心的就萌生了一些小火花,想要更進一步的來探討OS的構成方式。


而在這個實作中,我碰到了一個問題,在這裡個Note:

1. 無法使用usb cable來進行console的連線

在BBB的包裝內都有一條usb的cable,其實如果使用BBB eMMC內原本的Ångström Linux,然後將這條cable裝到你的Linux的主機(不是BBB)上,你是可以使用以下指令,透過console的方式來進到BBB之中:

# screen /dev/ttyACM0 115200

但是使用上述的TI source和Debain,是不行的,因為你接上usb cable到你的Linux主機之後,他根本偵測不到ttyACM0這個裝置,導致你無法連線。

這讓我一開始要進行ip設定時,過的有點痛苦,當然你可以在燒入進去SD卡時就設定好IP,然後以後透過SSH連線,但是...難免有設定失手的時候,像是我一開始就把IP從192.168.0.5打成191.168.0.5,SSH到天荒地老....又因為我的螢幕沒有DVI的接頭...............有接頭的螢幕要走到隔壁房間....相當的麻煩,所以我覺得這是個挺重要的功能,至少讓我能少走點路....

而這個問題目前我已經解決,在Android與Debain中均可以透過console的方式來進行連線操作,相關的做法我會另外開一個網誌來做紀錄。


而透過這些實作,我想到了幾件事情來做,一樣在這裡做Note:

1. 讓BBB有wifi功能

沒錯,讓BBB有wifi功能,雖然他有Ethernet的介面,但是有時候總會碰到需要wifi的時候,所以有多個連線方式,其實也不壞阿。

最主要還是為了練習Android的wifi功能porting,因為如果你照上面的source做完,你在setting的畫面中,wifi/藍芽連按鈕的影子都看不到....而下圖是已經弄好的畫面,你可以看到原本消失的Wifi介面已經出來了,也是能夠正常運作的!


為什麼要做這個呢? 其實我想做個陽春電視棒! 但是我家的網路在2樓,電視在1樓,想拉線拉到1樓實在是..........所以這時候無線便派上用場,但是當我完成後我發現:

「我家電視沒有HDMI輸入 ........」

恩................well,這也是個不錯的體驗,我這樣告訴自己。

這個研究已經有了初步的結果,我會另外開一個網誌來紀錄。


2. 將BBB做成Network Bridging

BBB上面只有一個Ethernet的介面,但是他有USB,可以安裝轉接器來充當Ethernet介面,當我完成Debain的安裝之後,這是我第一個想到要做的實驗,因為我曾經做過一陣子小網管,每次User的主機出問題,造成大流量時,我一直都很好奇是為什麼,但是又沒辦法跟他借電腦來研究,所以我一直想試試看如何抓別人的封包,因為如果要帶台電腦蹲在那邊抓,不是很怪又很麻煩嗎! 而BBB這麼小,就可以插著就閃啦!! 是不是!! 這樣我就能夠把問題封包抓回來慢慢研究了。

這個研究已經有了初步的結果,我會另外開一個網誌來紀錄。