前言
为什么想聊这个?
因为今天参与面试碰到一个手机大厂来面试驱动开发的;
刚开始聊得还行,说了做了两年触摸屏然后做了几年linux系统开发,
主要是内核方面、解决一些疑难bug之类的,然后就开始有点飘了;
然后说驱动开发很简单的,主要也就是那几个步骤搞搞就差不多了
过程
开始提问!
我先没有反驳;
我说手机行业,跟驱动开发相关性最大的两块功能feature是视频输入和视频出;
也就是camera和显示屏;
提问1: 那您参与过camera相关开发过吗?camera选型?高速接口驱动开发?
camera基本接口功能开发,AE AWB AF之类?
或者配合过应用开发功能feature之类的吗,比如长曝光、 WDR、高帧率、多场景等等?
回答: 没有,那部分都是专门团队负责的。
好的,大公司是这样的可以理解
提问2: 那您参与过显示屏相关开发过吗? 接口驱动等之类的?
回答: 没有,那部分属于多媒体组的。
好的,也理解
提问3: 那您做系统方面,配合camera组解决过图像异常方面问题吗?
类似绿屏、闪屏、花屏、丢帧等问题吗?
回答: 没有,这边主要是解决一些空指针、内存泄露等问题;
未涉及图像视频方面
提问4: 那USB驱动开发? 网络驱动,蓝牙wifi之类的呢?
回答: 这些也没有,这些大驱动也是专门小组负责;
END
纯自己想法
1. 我也不是说驱动开发有多难,确实很多I2C SPI等外挂的外设调试起来是很简单,但那只是很小一部分;
我觉得驱动开发更应该和大方向结合才算是一个体系,
毕竟专业理论知识的增长才算是核心竞争力,才是经验的积累行业的积累,也是公司一时无法替代的;
比如:
(1)和图像视频结合
主要就是camera和显示屏了;
这里面涉及很多图像知识;
各种高速接口;多功能开发;以及很多图像异常方面解决方案等;
向后发展也是可以的 编解码算法? 流媒体协议? 框架类---gstreamer等
(2)和网络
以太网、WIFI、蓝牙;
这些主要是协议的复杂,已经使用场景的复杂性;
就会提升自己的经验
其它就不说了,什么USB、电源管理等等
2. 我觉得大公司能轮岗最好要轮岗,如果是想出来的话;
不过也不一定。。。