最近在自己的blog写了篇文章:
http://tinyurl.com/cn5oaxd
(无广告但有自制流程图)
主要陈述的内容是这一年多来在Android BSP team的工作心得
同时我也想推荐这样的职务内容
理由也有在文章中提到
不外乎是Android行动装置正当红
BSP学的东西从底层到上层都有可能会涉略到
因此可学习到的范围涵盖较广
虽然工作内容是比较偏繁琐一点
但是对于整个Android的架构 会比较了解些喔
所以如果对于Android的软件开发(非Framework层)有兴趣的人
可以试试看BSP的职务~
个人觉得只要具备以下的能力即可胜任:
(1) 对C语言有最基本的熟识
(2) 有耐心
这是我个人的心得~
虽然会碰触到大量的Linux指令,build code环境,以及linux Kerenl的相关知识,
但我觉得到了里面之后再学就好,之后自然也会熟稔。
也许有些关公面前耍大刀~
不过可以分享给对于这领域还尚未了解以及想更了解的朋友们~
如果不想点blog连结的朋友,我也将本文内容贴在下面,还请多指教:)
==================本文内容==================
工作到现在也一年七个月了...
虽然自己研究所的专业是多媒体方面(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