※ 引述《kill2400 (wei)》之铭言:
: 最近有收到华硕 手持部门的email offer
: 没记错应该是跟padfone 相关的
: 不知道这个部门的风气是如何
: 我知道华硕都还满晚下班的
: 但是会到几点啊??
: 话说 BSP 大概是什么啊??
: 可以学到很多东西吗??
: 希望版上大大可以帮忙回答
: 谢谢
BSP是什么? 英文缩写是board support package
它是怎么来的? 一般来说,就是芯片供应商给的一包code
以Android系统来说,芯片供应商最大的几家就是Qualcomm, TI, Nvdia等等, 台湾就MTK
这一包code其实从Linux到Android都有,也就是说他是一包完整可以用的code
那你说,都能用了还要BSP team干麻?
以系统厂来说,BSP的主要工作就是"处理"供应商的这包code。推文说到BSP工作很杂,
的确,因为光是要"处理"这包code就够麻烦了。BSP team的工作首先是要让这包code
烧进这个project的板子可以开机,开完机进android后,各个function (touch, LCM,
keypad, camera, BT, WIFI, USB, blablabla...)可以动。这是project前期的工作。
运气好,板子没问题的话,这些components都好点亮。但是代志绝对没有长官们想的那么
简单,板子,单体元件总是会有一堆问题(我们简单的说就是hardware问题,但是通常都是
要BSP帮他们找出问题)。光是点亮这些components就要很多时间与心力来debug。那要怎么
点亮这些东东? 以SW的解释来说就是要靠driver来让它动起来。如果产品规划的人有跟BSP
team讨论过,尽量挑芯片供应商有support的driver会让你少花很多力气(但是不见得就不
会有问题)。如果没有呢? 想办法抄,改,K书,google,自己找reference code来搞,
当然这其中还包含了跟各元件供应商的co-work。
这个是project前期,我们姑且简单称之为让你负责的component"动起来"或是"点亮"。
用假掰的英文就叫做"bring-up"。
接着,project开始run,pilot run一直打。有些公司的BSP除了上述的工作,还得负责
工厂端的验证程式,这先不做赘述。project中期开始会收到QA们陆陆续续发的bug or
issue,然后你的工作就是debug,要在最短的时间内解决最多的bug,这其实就是系统厂
RD的价值(其实也就是工作内容)。你可能会问,不都会动了,有啥bug好解?
是阿,理想上是这么说没错,但是总是会有"很多"bug是来自 1.自家的硬件(版端)问题
2. 元件供应商的问题 3.芯片供应商的问题 4.自家driver没写/tune好 (code是人写的
,即使是芯片供应商给的driver不见得就没问题) 5.google Anroid本身的问题 6.AP的问
题等等...问题来源绝对不只这些,但是你要有办法分析出来问题的来源。硬件问题要请
HW改,来自供应商的问题就请他们帮忙解,或是有些经验或够强的话就自己解。BSP守备
范围大抵上是driver到HAL (HAL是什么? google看看吧~) 那当然为了要分析问题也要顺便
喵一下Framework在搞些什么鬼让我们底层出问题,这样才好把问题丢给别人看以不至于
被凹说是BSP的问题。那要做这些事情你"最好"要有一些电路学的基本认识,然后对作业
系统(OS)也要了解一点,最好也要有一些基本的物件导向概念(for HAL, Framework, AP)
。会说"最好",意思也就是非必要,因为很多人没有这些概念也是在系统厂做BSP,我自
己就是^^"。
到了后期,产品出货了,不代表你没事,因为新的案子又开了。旧的案子还有很多bug没
解完(赶着出货咩~),还会有客户跟自家反应的新问题要继续看。虽然说BSP team是归类在
"软件"部门,但是做的事情很多都跟软件无关,工作内容也是改code而非写code。如果想
像学生时代自己写很多code,那建议你去找纯软件的公司会有比较多机会。
大致上介绍就是这样,有错误的部份还请乡民们补充与改正囉XD