关于Android驱动开发与Android系统开发这两种岗位一些杂谈

Android上的驱动开发与linux驱动本质上是一样的,只不过谷歌加了一些自己的东西,比如Binder驱动。

不同的芯片平台释放的安卓源码在驱动上都会有所差异,比如MTK平台点屏跟在高通上点屏,点屏框架完全不一样,代码路径也不一样。

安卓驱动开发的任职资格:

  1. C语言要懂,懂C++,java更好,一些辅助性的工具比如shell , python , makefile这些也需要了解下
  2. 基础硬件知识要有,电路图要能看懂并能够分析
  3. 会用万用表,示波器,逻辑分析仪
  4. 掌握linux驱动框架,字符设备,platform总线等等
  5. 理解硬件通信协议,i2c,spi, uart等以及需要理解arm架构,寄存器等概念
  6. 具备调试camera,lcd,tp,sensor,指纹,按键,spk,马达,i2c,spi , uard, led, 蓝牙,gps, wifi ,nfc, pmic,网口等外设驱动的能力

安卓驱动在企业中的实际工作内容说白了就是新设计了一款主板,主板上接了各种外设,有显示屏,触摸屏,camera,喇叭,按键等等,这些硬件外设接到主板上没有驱动程序的适配并不能直接工作。
驱动开发人员的工作就是移植各类驱动程序或者编写驱动程序(大部分时候是移植驱动)来让显示屏,触摸屏等等这些硬件工作起来,以及修改一些驱动程序的bug或者内核bug , 驱动相关的需求定制比较少,不过也有,比如开机指示灯这类。
但是在大公司,驱动的岗位是细分的,有专门搞LCD的驱动岗位,也有专门研究camera的驱动岗位,还有专门研究充电的驱动岗位。
驱动只是内核中一个子模块,驱动工程师研究到深处时必然要去了解linux内核代码
以下是大公司对驱动岗位的具体划分:

  1. lcd&TP驱动工程师,大部分工作偏向于优化驱动而不是点亮显示屏和移植触摸屏(本人了解到和主观认为的,可能不正确)
    要优化的内容包括显示屏条纹,花屏,闪屏,防静电,TP上报速率等问题
  2. 指纹/人脸识别驱动
  3. camera驱动,camera是最复杂的外设,所以除了做camera驱动的,还有专门做camera isp的,还有其他的好几个camera岗位,后续补充
  4. 电源驱动
  5. sensor驱动 ,也就是传感器驱动
  6. audio驱动

暂时列举以上几个,有遗漏的后续补充。个人认为camera方向是最吃香的

----------------------------------------------------------------------分界线-----------------------------------------------------------------------------------------
Android系统开发,偏向于定制和修改系统Bug,而不是像驱动那样目的很明确的去完成某件事。如果是做电子产品的公司,系统开发的工作是偏向于特色功能的开发,比如分屏,开机速度,动画等等。

安卓系统开发的任职资格:

  1. java要懂,懂C/C++ 更好,hal层和jni涉及到C/C++ , 一些辅助性的工具比如shell , python 这些东西也需要了解
  2. 安卓平台自带的四大组件要理解,还有handler,binder通信以及aidl等等,需要理解安卓架构,了解数据是如何从驱动层,hal层,native层,framework层一层一层上传的
  3. 具备framework层系统服务源码阅读和分析的能力,熟悉一到两个模块,如AMS,WMS,input,recovery等等,但是实际上中小公司里基本是哪个模块有问题就要去改哪里,也就是说会因为工作需要各个模块都不得不去了解一下,但是又不够深入,成为一个技术杂家。
  4. 会安卓APP开发,这个不是必须,因为有的公司APP与系统开发是分开的。但是懂APP更好。

系统开发在一些公司里是需要同时兼做安卓app开发,在大公司中系统开发也会被细分,比如有专门做WMS,AMS模块的,也有专门做GMS认证的,也有专门做input模块的,还有专门做第三方应用兼容的
也有些其他的分法,比如:
1 系统应用开发,对SystemUI,Settings,Launcher等系统应用进行定制,这类更偏向于应用开发
2 . 基础框架,也就是AMS,WMS,PMS,input这些
5. 音视频编解码,这种需要对音视频的专业知识理解够深
6. Audio服务,Audio策略,Audui驱动,有个专门的岗位是做音频的
7. 短距开发,只研究蓝牙,WiFi,FM,GPS , NFC这几个模块,需要对模块的通信协议理解够深才有能力优化系统和修改bug,这类岗位不同的公司分法不同,有的专门划分到驱动工程师的工作范围,有的划分到系统工程师的工作范围。
8. 稳定性,性能优化,处理卡顿流畅等问题以及功耗问题,还有处理硬件死机重启黑屏无法开机等问题。这类岗位不同的公司可能归类不一样,有的公司分到驱动工程师的工作范围,有的公司分到系统工程师的工作范围。

总结一下,个人认为驱动开发的难度和门槛比系统开发更高一点,因为驱动除了学习软件还需要学习硬件。
不过从招聘软件上来看,有经验的安卓驱动开发与安卓系统开发的工资范围其实是差不多的,这两者大多数公司都是15K起步,30K封顶。
所以大家可以根据自己的兴趣去选择方向学习

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值