顯示廣告
隱藏 ✕
※ 本文轉寄自 ptt.cc 更新時間: 2016-06-27 13:02:12
看板 Tech_Job
作者 agmoagmo (小銘)
標題 [心得] Android BSP RD新人的10個FAQ
時間 Fri Jun 24 20:38:57 2016


沒圖只有上色純文字版網誌:
http://tinyurl.com/zodd2p4

突發奇想寫出來的一篇心得文...
希望是能幫助想去面試或著才剛剛進去公司的BSP RD新人

這3~4年來有寫了幾篇在板上
也有不少人寄信問我問題
所以整理了一下這樣的FAQ
期許能夠解掉一些人的疑惑
至少要知道自己是在什麼的

我的回答也許不是最準確,但也算是一種經驗之談
可以當作一個參考就好

共勉之囉!



以下為原文,不想點網誌的可直接看:
--------------------------
最近剛好是一個案子的尾聲...
突發奇想地,想整理一下之前因為發文章在ptt上而不少人寄信問我的一些問題

姑且就整理成10個FAQ吧~!
如果是已經準備要進去,或著是剛進去成為BSP RD的新人們
希望以下的這些問與答,能夠多少幫助你們~
現在就來看個問題大綱~

[1] 如果去BSP部門會不會有很大的門檻要克服?所需要的domain knowledge是什麼?
[2] BSP具體上到底是在做什麼?
[3] IC Design House薪水比較高,為何我要到薪水較低的系統廠?
[4] 所以說薪水大概是多少...?
[5] 大家都說BSP是打雜的,那我能夠學到什麼?
[6] 工時長不長啊?
[7] 被取代性高嗎?
[8] 有機會可以出差嗎?
[9] (離職)之後的發展性好不好?
[10] 我該保持的心態是什麼?

對了,BSP是"Board Support Package"的意思喔!
隨著時間越來越久,越能體會它字面上的意思了
就是能夠(suuport)讓某個機台(board)開機的一包(package)原始碼



想當然...
其實問題沒有多到有10個...
有些是我自己有感而發自問自答的XD
好拉,這不是重點,就來回答看看以下的問題吧!

[1] 如果去BSP部門會不會有很大的門檻要克服?所需要的domain knowledge是什麼?
這算是大家最常問的問題,大概要看甚麼書先惡補一下呢...之類的
在我身邊的同事們,大學研究所都是EE/CS背景
以程式語言來說,基本上只要會C我覺得應該就OK了
然後,如果能夠多了解一些作業系統(Operating System)的觀念,我覺得會有加分

另外如果對Linux跟git使用熟練的話,也是有加分,
但就算完全不會也可以進去再學,像我就是這樣XD

[2] BSP具體上到底是在做什麼?
一個產品,主要可以分作CPU以及各個componet這兩大部分

CPU廠商有像是美商Qualcomm,台灣的MTK,大陸的海思,韓國的三星...etc
各個componet,例如像是camera,display panel,touch panel, USB,wifi,audio..etc

每個componet又有多個廠商,例如display面板有台灣的友達,日本的JDI..etc

以上只是前言介紹..
簡單來說,BSP指的就是一包特定的程式碼,
而這包程式碼可以讓CPU廠商在搭配某個特定CPU的「公板」上開機。

那一般像是ASUS,HTC這樣的系統廠生產的手機或平板
即便用的是同一顆CPU型號(如Qualcomm的MSM8996)
其他的componet也一定會不一樣
像是camera如果公板用的是A廠商,公司產品用的是B廠商
那BSP RD做的工作之一,就是將差異性做個feature porting (移植)的動作
使得這樣的軟體改動,也讓B廠商的camera能夠在同一顆CPU上面使用。

剛有提到工作"之一",那是因為不只是做feature porting,能夠動就好了
之後還必須要兼顧到穩定性的問題...
所以常常做些壓力測試,逼出bug也是BSP RD常需要做的事情。

因此,在部門裡面,大部分都是by componet去分工作內容的
有的人負責camera
有的人負責display panel
也有的人負責eMMC

除了負責componet的人之外
以我的部門來說,還有另外一個team,叫做system team。
主要是負責開機相關(bootloader)、電源管理相關(power management)、安全性相關(security)這些比較難以用component來分的function

好吧,有點講太多了...XD
總之,一句話搞定的話就是:
"透過軟體上的改動,使得產品能夠正常且穩定的使用,而這樣的產品是跟公板有差異的。"
-->這就是BSP RD要做的事情

如果還是不太懂的話,可參考在下過去寫過的一篇文章:
http://donotfeelup.blogspot.tw/2013/04/a-good-choice-android-bsp-team.html


[3] IC Design House薪水比較高,為何我要到薪水較低的系統廠?
其實我自己本身也只待過系統廠..
目前的感覺是,兩者生態差蠻多的

直接講結論,目前覺得有趣的地方是:
在系統廠裡面是直接做出一個產品出來,例如像是手機或平板
是可以直接用的東西,有看到一個東西從無到有產生,然後賣到世界上各個人的手中,我覺得還蠻有成就感的...XD

系統廠之於IC廠的關係,就是客人之於老闆的關係。
一個好的老闆,通常應該要有好的售後服務。
而這樣的售後服務,就是IC廠RD在做的事情
系統廠產品有什麼bug無法解時,通常就會request IC廠幫忙看

當然IC廠不是只有在幫忙客戶解issue而已,也是還有自己研發產品的部分
但我只是說明,看到一個產品從無到有的產生,是自己願意待在系統廠的原因之一。

[4] 所以說薪水大概是多少...?
這大概是最多人關切的部分了...
在華碩,以台清交成碩士EE/CS畢業的人來說,新鮮人的話,只能說三年內年薪幾乎都會破百吧 只要表現正常的話
就這樣了 我不能再多說了XD

[5] 大家都說BSP是打雜的,那我能夠學到什麼?
一言以蔽之,我覺得是「整合」的能力。
BSP RD,是個蠻特殊的存在,上有APP軟體team,下有EE硬體team。
假設以camera這個function來說的話,可能有些訊號之類的,需要請EE幫忙量,硬體線路的部分也需要跟EE一起討論。
好了,現在相機能動了,上層APP team可能需要加一些feature,例如像是人臉辨識,微笑拍照,美肌等等的功能,也是需要跟BSP team一起cowork。

當然,真的有時候會覺得很雜很煩。
所以磨練自己的耐性,也算是連帶的一種成果吧..

最後,特別提一下關於coding的部分。
BSP首重改程式,幾乎不太原創寫程式 (coding控慎入..)
不過這樣不代表不常看程式,反之,當然必須先看懂別人寫的程式,才能夠改得動啊
所以培養出trace code的能力,也是BSP所必須具備的部分。

[6] 工時長不長啊?
我只能這樣說...
"Depending on what kind of function you will own"
以及各部門的風氣之類的 (雖然我個人不喜歡有所謂的"風氣",沒事了就閃才對啊。)

就跟公車每天有離峰跟尖峰時間一樣
一個產品的週期裡面,一定有比較忙的時候,跟比較不忙的時候
這些都是自己可以去拿捏的

一個原則就是,沒事的時候多去study,trace code
這樣有事的時候,處理事情起來就會比較快,工時自然就會短

不過有些時候真的還是會做不完,這樣的情況就另當別論了...
也許可以適時地跟leader反應,盡量不要忍氣吞聲。


[7] 被取代性高嗎?
不高,因為擁有這樣同時跟軟體還有硬體部門cowork的機會不是太多
所以有這樣實戰經驗的RD,我覺得是蠻可貴的。
必須要有自信

[8] 有機會可以出差嗎?
當然有,不過有不小的機會是往大陸工廠跑。
除非剛好有跟Google合作到,也許有機會可以到美國出差...
或著是說某個issue一定要你飛到國外跟當地的vendor cowork,也許也是個機會。

[9] (離職)之後的發展性好不好?
雖然我還沒離職..
但就身邊已離職的同事來說
有去其他家系統廠的(我有位學長的經歷是ASUS->HTC->Samsung...)
有去IC design house的 (我覺得這佔蠻多數的,畢竟BSP比較算是學廣,到了IC廠可以繼續選擇自己喜歡的領域學精)
更有去Google的 (我的強者前輩同事...)

這部分我覺得修行在個人,凡走過必留下痕跡,經驗的累積真的會影響到未來!!

[10] 我該保持的心態是什麼?
這條是我額外加的,也是最想特別提的部分..

有兩句話分別從兩位不同的前輩口中說出:
"正面思考,不要常抱怨"
"勇敢去面對問題,即使逃避了,issue還是在那邊,依舊解決不了"

這兩句話,其實蠻有連帶關係的
我遇過一些人,可能會比較負面思考,然後常抱怨,所以遇到問題只要解不了,有時候常常就逃避了

其實你不會是只有一個人
遇到問題時,應該會有人可以一起討論
(當然不是指完全的伸手牌,自己必須先去試著理解問題)
重點其實就是要讓自己保持著有"next action"的決心以及狀態
不然問題停在那裡,它不會乖乖變成解答給你看啊

所以,我覺得如果要做的長久的話 (也許不僅僅限於BSP RD..)
至少要保持樂觀,正面積極的態度
培養良好的人際關係(這樣跟大家討論也比較有動力吧..!?)
給自己去追問題的動力,而不是常常處於被動的那一方

最後,呼籲新人們要以早下班為目標
不是說只有早下班,而工作就擺爛了。
而是早點把事情做完,沒事的話就早點走
這樣也是對地球環境的一種維護 (一直開空調很不環保阿...)

裝忙是現在科技業很可憐的一種現象
只有你我他互相提醒,實際去執行沒事就早下班的行動,才能改善外界對於科技業"很忙"的刻板印象!


以上,就是我給新人的一些建議,也是常見問題之中,以在下的角度之下的一些解答...
希望能對讀者有幫助到!

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.121.91
※ 文章代碼(AID): #1NRIdb-c (Tech_Job)
※ 文章網址: https://www.ptt.cc/bbs/Tech_Job/M.1466771941.A.FA6.html
comie: 感謝您的分享1F 06/24 20:50
k900421: 我好像認識你2F 06/24 20:51
mixfuture: 感謝分享3F 06/24 20:53
JeremyLin17: 推4F 06/24 20:56
LinkCoffin: 很棒的資訊  感謝5F 06/24 20:57
wads5566: 感謝分享,我也是看過您的文章決定捨IC廠去系統廠6F 06/24 21:01
badyy: 不coding的porting聽起來好像哪裡怪怪的7F 06/24 21:15
QQFOX: 感謝你的分享~幾年前剛進出社會就看過你文章 受益良多8F 06/24 21:20
powertodream: 寫的不錯 幫你推個9F 06/24 21:36
cphe: 不是不coding,是相較於純軟寫程式的量少很多,大部分都是在10F 06/24 21:39
cphe: trace code,找方式debug,其實有能力的話也可以在code裡面
cphe: 寫一些能夠輔助你debug的機制,無論是kernel或user space
cphe: OS的觀念很重要,尤其是你還必須面對system memory的使用
derayxu: Google算簡單,簡單的說確實是如此14F 06/24 21:46
nick9063937: 過來人 推一個15F 06/24 21:47
badyy: 所以其實是在debugging的意思?!16F 06/24 21:57
nabachizuru: 不忍噓,但是看起來還是覺得IC廠的SA比較有技術..17F 06/24 22:00
benedict76: 你們需要看framework嗎?18F 06/24 22:02
michael0728n: 那客人自已兜壞了可以不要叫老闆看嗎...XD19F 06/24 22:09
derayxu: 玩的很淺,去linuxdev版看一下深入一點20F 06/24 22:18
derayxu: 不是說深就好,能走的路上不一樣,走錯會很苦
limitlesscit: porting還是以改code居多,不太會是整個重寫22F 06/24 22:26
cphe: 不覺得linuxdev有多高深阿XD  平常都會接觸到的東西23F 06/24 22:36
cphe: 但說實話,系統廠雜事不是普通多,尤其菜鳥打雜更多
cphe: 想要專精一項技能建議還是往design house走吧
fishintosky: 小銘哥~26F 06/24 22:51
david1229: 大推!! 願意分享就是一百分~~27F 06/24 23:03
hopesong: 要專精一項技能要往design house? 不同意28F 06/24 23:21
moneygo822: 推29F 06/24 23:30
bire: 推30F 06/24 23:31
transforman: 推!!!31F 06/24 23:45
askacis: 應該說在design house有IP designer可以問XD32F 06/24 23:46
askacis: 有些限制連designer自己都忘記有這回事,沒他去review
askacis: FW解再久也解不出來
iamonmyway: 寫的不錯,但待系統廠CP值真的每況愈下35F 06/25 00:07
yamikiri: 我也是系統RD,7我覺得取代性不低就是。大廠裡的只能精一36F 06/25 00:13
yamikiri: 項,但也沒辦法多深入,不過可以看到大軟體的架構,這點
yamikiri: 是比較好的,真的要比較全面性的要去新創系統,或是想深
yamikiri: 入的,還是要去當豬屎屋的SW
yamikiri: 5年系統,小小心得
stu51211: 推41F 06/25 00:29
seel: 好文 謝謝分享42F 06/25 00:48
lookat1205: 推43F 06/25 00:58
badyy: 在debugging基礎上談取代性 XD44F 06/25 01:41
i386: 現在的design house幾乎都做好Turnkey了,系統廠需要改的東西45F 06/25 01:46
i386: 越來越少了, 甚至很多bug是直接叫原廠解決(單子夠大的話)
i386: 系統廠的RD要跳去design house最容易的管道是跳去FAE or AE
i386: 想跳去design house SW RD,請趁年資還淺的時候(<3年)
i386: 因為超過3年以上, 其他Design house SW RD的資歷輕鬆贏過
i386: 你在系統廠的資歷..
i386: 另外不要再有Design house RD只專精某一塊這種迷思了.
i386: Design house幾乎都最成trunkey了,裡面有點實力的SW RD,
i386: 從最底層的Rom code到最上層的應用程式都有一定的涉獵
i386: 以上是在Design house SW混了10年的心得
i386: PS:賺錢的系統廠比不賺錢的design house薪水來的高.
yamikiri: 我覺得豬屎屋SW的優點在於有設計HW的人可以直接cowork,56F 06/25 03:50
yamikiri: 其他不予置評
rany2015: BSP大概就相當於BIOS做的事相似58F 06/25 04:35
Csir: 系統廠就是吵架吵架再吵架  最後還是自己把屎吃下去XD59F 06/25 09:04
A4P8T6X9: 推60F 06/25 09:08
iamonmyway: 推內文, 要跳豬屎SW的要趁早61F 06/25 09:33
joker9526: 受益良多62F 06/25 09:44
chiwa: 我自己是從系統廠做BSP跳到別的領域,如i386說的,turnkey63F 06/25 09:57
chiwa: 太完整,讓我覺得自己的能力成長有限
eatyou: 推這篇 & i386大大!65F 06/25 10:54
MrChildren: 推學長66F 06/25 12:29
powertodream: design house 有些ip是買的 改起來也是黑盒子一個67F 06/25 13:35
doranako: 以前bsp都是從無到有,現在原廠包好然後porting改code,68F 06/25 14:26
doranako: 調效能debug
besmartAE: BSP工作生態幾乎跟BIOS一樣! 新人進來要想好70F 06/25 19:48
RD5566: 同推,大部分BSP已經變成另外一個BIOS71F 06/25 20:55
trikilo: 華碩算改得大的,其實還是學得到東西72F 06/25 22:25
cphe: BSP跟BIOS一樣雜,但還是有差~有經驗的ODM OEM BIOS RD一73F 06/26 02:29
cphe: 個人就可以扛一個案子,BSP分工很細,至少不同function 是
cphe: 不同人負責,所以BIOS更賽,因為什麼奇怪跟sw有關的問題都
cphe: 需要處理
cphe: 不過如果是小公司bsp就不一定,人少事情就更雜,就更沒時間
cphe: 專注在該domain深入的地方
cphe: 然後就是BIOS是封閉的系統,要大改幾乎更沒機會,其實也比
cphe: 較無趣
cphe: Android  Linux kernel都是只要有心有能力都可以大改,可以
cphe: 找到的資源也多
cphe: 以上是兩個領域都各待快四年以上的心得
kevin925: 做了兩個月 看了這篇才恍然大悟XDDD 推84F 06/26 23:14

--
※ 看板: K_hot 文章推薦值: 0 目前人氣: 0 累積人氣: 101 
作者 agmoagmo 的最新發文:
點此顯示更多發文記錄
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇