Find me...

若有寫開箱文食記合作需求...
請mail至我的信箱
謝謝!

2013年4月4日 星期四

A good choice - Android BSP team

工作到現在也一年七個月了...
雖然自己研究所的專業是多媒體方面(Major in CS)

但因緣際會,我到後來選擇了ASUS Android BSP team
選擇的原因不外乎:
(1)看好Android行動裝置會紅
(2)BSP學的會比較多
(3)有學長的實際經驗分享

從一開始完全不知道BSP在幹嘛的...
到現在大概也懂個至少6~7成了

小弟拋磚引玉,來大概介紹一下BSP是甚麼,以及工作的內容為何。
也分享給可能想來、想來,或即將要來做BSP工作的人們,做為參考~

讓我們看下去...

BSP的全名為Board Support Package

BSP可以想成它就是一包source code,而這包source code透過linux所建構出來的firmware(韌體),可以在Android裝置上開機。

那BSP到底是怎麼形成的呢...
在此簡單解說一下

我們知道,所有的Android行動裝置上,都有一個非常重要的核心角色-CPU
而一些眾所皆知的CPU晶片大廠,像是Qualcomm、Nvidia、TI、MTK...等等,都會提供他們自己的Pure BSP,讓各晶片廠自己的公版能夠開機。

那麼,像一些OEM系統廠(ASUS、HTC、Samsung...etc)是怎麼開發出來他們自己的BSP以及其產品的呢?

首先,在硬體上,OEM產品就會跟某晶片廠的公版有差異。
這些差異可能包含:
Camera、RAM、Display Panel、Touch Panel、Audio、Sensor...etc

而OEM系統廠的BSP team,其最主要的工作,就是將這些差異,基於Pure BSP,作所謂Porting(移植)的動作。

雖然只是簡單的一句話...但其實做起來並不容易
我之前有提到,BSP會學的比較多一點...
在說明為什麼之前,先看以下這張圖:
(這是Android裝置開機大概的流程)
















































我們可以想像越前面的stage越底層,而到越後面的stage是越上層。
而BSP的工作從Bootloader、Kernel,到Android OS層都會碰到。

底層方面,會常常跟硬體方面的人cowork,了解硬體線路的設計,軟體的人才能夠作對應的改變,使得某些function能夠work且穩定。

上層方面,APP層的研發人員,也會蠻常跟kernel driver作互動的,所以也必須常常跟BSP team的人cowork。

因此,我才會說,BSP team的人,是底層跟上層都能夠touch到的~

BSP的工作只有讓Android裝置能夠開機起來就夠了嗎?
絕對不是這樣的!!!!!

能夠開機而且各function work只是基本而已,最重要的是要夠穩定。
穩定的定義為:
(1) 不能常當機
(2) 要夠省電

所以這之間,我們會跟CPU晶片廠有著非常密切地往來,
也就是會開bug問他們說:
"為什麼某function會crash,為什麼會這麼耗電..."之類的

也因此,BSP team也需要常常做系統的穩定度測試以及電量的量測。

看到這裡,退卻了嗎...? 關於BSP的工作內容?
其實能夠撐下去的話,我覺得能夠學的東西還蠻多的喔,而且對於瑣事的容忍程度也會大增XD

以上,是個人目前粗淺的心得... 提供給大家

總心得:
簡單回憶一下目前學到的技巧:
(1) 了解Android整個系統的架構
(2) Linux指令變得較熟些 (完全無經驗也可入門喔,像我就是)
(3) Kernel、boot loader相關知識
(4) 寫說明文件的技巧 (自己看懂跟讓別人看懂是兩回事)

大概就...以上這些拉 其他還沒想到@@"

總之,BSP team的工作,就是產生一包屬於某個Android裝置的BSP code,並且產生firmware讓此裝置開機且穩定地使用。

對於標題的詮釋:
A good choice --> 這是我目前的感想~ for me
但其實自己還是只有學些皮毛而已,希望之後能了解更多方面的知識~!



9 則留言:

  1. 嗯。。原來一年七個月了呢。。
    在Asus待了一年七個月的時候,離開了XD.

    加油,Asus很棒!你也很棒!

    回覆刪除
  2. 時間真的過得好快~!
    真的很感謝你的推薦...QQ

    回覆刪除
  3. 謝謝您的分享, 我覺得您寫得很流暢易懂, 期待您更多文章!!

    回覆刪除
  4. 感謝作者無私分享

    回覆刪除
  5. 感謝分享!! 很棒~ 期待您更多文章哦~

    回覆刪除
  6. 感謝您分享
    謝謝

    回覆刪除
  7. (1) 了解Android整個系統的架構


    --> 可否就這點在寫一篇文章稍微分享一下~?
    因為目前我對這個完全沒概念.
    如果有bootloader跟kernel相關知識更好

    回覆刪除
  8. 好喔~ 之後有時間我會寫看看的

    回覆刪除
  9. 您好~~想請問做BSP的人是不是都比較少
    如果要找這塊的人通常要往哪個方向找??
    不好意思 打擾了

    回覆刪除