高考考试网
当前位置: 首页 高考资讯

驱动开发具体做什么(驱动工程师成长历程分享)

时间:2023-05-22 作者: 小编 阅读量: 1 栏目名: 高考资讯

个人爱好等不一样,后面一直专注于linuxkernel。开发难度上层最大,但是驱动是基础,所以稳定性等要求比较高。尤其是usb驱动的休眠是最不好处理的,涉及到runtime机制。从去年开始可以给公司解决一些比较难的底层问题到现在领导把LCD等外设交给新入职的调试,个人能力慢慢成长,现在还是很关注linuxkernel里面一些驱动等研究,解决一些有难度的问题。但是做linux驱动的感觉与平台关系也不是很大

写在最前面,本文前半是一位工作近三年驱动工程师的经历,后面一部分是网友对成为驱动工程师一些想法,分享给大家希望能有些帮助。

正文

这3年学习到很多,老大或者同事们的指教,针对性通过百度等搜索等,还有就是自己一边工作一边自己研究到的知识,解决问题的能力也是慢慢积累起来的。

由开始开始接触调试LCD TP等等,每次会重复做事,但是自己学习到的也很多,学会分析关键问题,掌握一些驱动调试方法,其实调试驱动来说一个printk真的够了,再强大不过了,调试过高通modem侧代码后发现kernel是多么好调试。

在调试LCD中首先研究懂得了一些平台操作display的流程与kernel背光操作,之后解决问题就很熟手了。比较难的就是调试qct的lk里面的lcd显示与开机logo保持,这些感觉对于刚开始做驱动还是蛮吃力的那段时间压力很大,期间会使用delay来调试lk与kernel刚启动出现的问题。

比与说在lk里面logo消失或者kernel刚启动时消失,调试过一次lcd lk display后后面不亮的或者其它问题的都很好解决了,当然是qct的,调试qrd就轻松多了,主要是问题比较少。启动时显示出现问题使用delay就很好查了,有的可能说串口输出,但是实践证明delay是最实用的。

当然串口输出调试确实很好比如死机等等,很强大,个人感觉只要可以输出log,就很难存在解决不了的问题。

对于TP,无非采样上报,属于i2c设备同时属于input设备,调试期间遇见的更多是FAE优化抗干扰与报点,睡眠电流,唤醒不能工作等问题。相比lcd简单的多。搞lcd tp差不多了,感觉掌握的很好,问题出现可以快速解决了,之后又搞了charge与batt,同时像休眠问题也在搞,后面一直从事电源管理方面的。

charge与batt个人感觉功能ok后后续还是需要试用期间慢慢优化的,特别是电量不准确问题,做qct出现过插上charger后不能充电问题,还有许多其他的问题量产前都会慢慢出现,个人觉得只要熟悉Linux power部分解决不是很难的,还是那句话linux kernel出现的问题由于有printk最容易解决的,除非是硬件问题。

是的驱动与硬件经常相互指责,当出现问题的时候。再说camera,只记得第一年搞过高通realease出来的一个sense模组,还有一个需要在其它平台移植过来的驱动,调试过程中无非上上电,拉下RST,移植中出现空指针等,解决完遇见的问题后camera最终会亮起来,当然之后还需要tunning。

这个是个很费力的活,同时很耗时间。以后没有干过camera了,个人觉得还是继续研究linux kernel里面的为好,毕竟是做驱动,而不是去为了camera效果一直去tunning。tunning需要专门的人去做,一旦专门tunning就很难有时间做别的活了。当然有些公司给tunnning camera的待遇很好,即使这样我也不会动心去深入搞这块。个人爱好等不一样,后面一直专注于linux kernel。

所在公司不光做手机还会集成其它的模块,这样开发起来相比只做手机的难度大了许多,很多东西自己得去研究。比如集成第三方modem,驱动工程师活也多,虽然一般厂家会提供驱动但是适配到新的平台难免有许多问题,甚至很严重的问题需要分析解决。

开发难度上层最大,但是驱动是基础,所以稳定性等要求比较高。

比如集成UART挂载的模块,会涉及到串口通讯驱动与数据流等问题。还有sdio接口的模块比如网卡 特别功能的T卡等模块,这里简单的说下可热插拔的sdio设备,当插入设备时,首先sdcc host会出发中断,在core.c里面会根据协议来detect是什么接口设备是sd还是sdio还是mmc,检测到后会出现log:new high speed xxxx,之后就加载驱动。

说下usb,拿usb接口的网卡来说下usb流程,首先当kernel启动时hub会检测到usb设备,通过2次RST port来获取设备描叙符,设置address,我们在驱动里面需要找到对应的驱动,对于usb网卡来说,在driver/net/usb下面有许多类似的驱动程序,可以找到最匹配的一个来使用,加入获取到的PID VID CALSS等信息,host会通过这些信息来match对应的usb设备接口。

当然许多usb设备不止一个接口,usb通讯可以理解为多个高通串口,这里很可能需要根据不同的CLASS或者INTERFACE来加载不同的驱动,对于网卡驱动来说有自己driver模型而不需要字符设备等供上层交互,usb设备驱动是linux最复杂点的,就说这么多。

等到集成到AP上的模块可以正常工作后,你会发现几乎每个模块由于使用到了linux下面的总线,会导致休眠不了,不同的接口都需要自己研究处理,让kernel休眠下来,这部分很多需要自己的摸索。尤其是usb驱动的休眠是最不好处理的,涉及到runtime机制。对于手机厂家来说调驱动更多的是他们家的外设,通常都有模板。

但是对于集成更多功能的嵌入式产品来说,功能很丰富,附加值高,开发难度更多,大量的上层需要自己做,就做驱动而言,首先底层需要提供一个类似字符设备或者misc设备接口等供上层读写,驱动写好后需要写个简单的测试程序来open write read文件,再跟下kernel里面的数据流,查查硬件通讯有没有问题,模块接收到没有,会不会丢数据等等,这些稳定性会在后期暴漏出来慢慢改进。

等一切ok后就是kernel里面的睡眠与唤醒了,当然还有第三方模块自己的功耗问题这个第三方负责了。

去年经历过一个很难解决的问题就是高端平台上1080P LCD偶尔会蓝屏的问题,但是通常一周可能才出现一次左右,甚至不会出现。当时顶着压力花费很久最终还是解决了。提case给高通,他们给的不能解决,最后是自己硬着头皮解决的,这个问题难在复现bug很难,后来发现某个大厂这个平台上都有这个问题,很庆幸自己能解决大厂不能解决的问题。

解决后高通支持反过来问如何解决的?倒是很滋润。对于高通支持工程师我想说,他们支持越来越慢,很多时候完全靠自己,居然有时说没有机器,但是每次关闭case还是习惯性好评。

从去年开始可以给公司解决一些比较难的底层问题到现在领导把LCD等外设交给新入职的调试,个人能力慢慢成长,现在还是很关注linux kernel里面一些驱动等研究,解决一些有难度的问题。虽说说不上精通linux kernel但是可以说非常熟悉,产品底层出现问题可以快速定位分析。

个人感觉即使做驱动十年也谈不上精通,毕竟linux kerne是个系统内核,精髓在内存管理等等,说精通恐怕只有那些提交linux改进优化系统内核的人。

前段时间看过别人评价做mtk驱动的,说怎么怎么简单,害了年轻人,个人很庆幸当时入职选择了做高通驱动。

之前也是可以选择做mtk驱动的或者wince的。再加上这家公司技术实力还是比较牛逼的在业界。自己做高通,就我熟知的kernel代码确实很漂亮,外国人写的质量很高,同时设备驱动很丰富,对于刚参加工作的人确实很有益处,学到的非常的多。

对于mtk自己没有做过,虽然别人说怎么怎么样,但是国产的毕竟跑起来的也是很牛逼的。个人觉得知识在于深入研究才会长能力。以后有机会倒是想多接触几个平台。但是做linux驱动的感觉与平台关系也不是很大,毕竟Linux大的框架摆在那里。

记得刚入职时干活很急很浮躁,恨不得一下功能就ok。但是现在干活更多的是享受,一种积累,一种深入发掘的过程。做产品更多的是关注是自己后期试用来找出或者测试出来的问题,同时定位解决问题。

后续个人发展方向:研究音频方面,之前自己也学习了不少,但是没有亲自做过,这些都是别人负责的,自己也会拿手机去debug比如耳机插拔 按键 speaker等。这些都是简单的,软件上更多的是底层通道切换等等。

网友评论

下面是网友们对于驱动工程的一些看法,欢迎大家留言多多交流~

网友一

做驱动工程师有一年时间了,不过总是很迷茫,我本身对硬件了解甚少,机会凑巧,做了驱动工程师,还是没有人带的那种。到现在,我都没有搞清楚,驱动到底是在干什么?难道就是诸如联系FAE调试效果这类工作?觉得实质性的东西都没有学到,好像不知道从什么地方开始学,该学写什么。

网友二

驱动工程师就是为外围设备写驱动程序,比如LCD屏的驱动,Sensor的驱动等等。

网友三

工作半年了UI的人叫驱动都叫系统, 以前做嵌入式的时候驱动就是让外围器件跑起来就行了,现在发现在我们公司不是这样。很多驱动高通都给写好了,自己写的很少,大部分在读懂高通的代码然后维护了。AT指令指令的,要看DS 这些总不能让UI的人看吧。

感觉就是cdma里面自己能写的代码很少了,都需要去看高通的软件构架及实现方法。很累。

网友四

首先驱动是介于系统和硬件之间的一块,也就是说驱动是个纽带。那么如果想做一名合格的驱动工程师就要懂系统的架构和硬件的基本原理。现在由于满足用户快速开发各大公司发出的方案基本上是把能集成的外设驱动都写好了,所以搞得很多工程师觉得没做什么技术含量的事。

每个平台千差万别,我个人认为Linux平台由于其开放性,让我们更好的了解内核,从而更清晰的了解整个系统而MTK的内核是封装好的,所以如果你了解MTK的系统架构,还是要下很多功夫的。

网友五

要有四个要点:1、硬件基础:主要是数电。次要是电路、模电、物理。2、处理器基础:主流是ARM、单片机、DSP、微机原理。3、软件编程基础:主要是C语言。其次是C。和驱动关系不大的是Java、C#、Objective-C。4、操作系统基础:操作系统原理(驱动框架)、数据结构、编译原理。

数电 ARM/单片机 C语言,这三样最重要。数电:通过看数字器件的说明书(datasheetpec)知道一个数字器件的工作条件:1.上电;2.使能;3.设不同值使器件进行不同工作;ARM/单片机:1.会用GPIO控制设备(比如LED)2.会用中断(让键盘正常工作)3.一些常用通信协议(I2C/SPI/等等);C语言:没什么好说的,指针相关的都比较难,面试基本考这个为主。驱动框架,比如linux驱动框架(module_init>init>probe>fops/sysfs,device driver bus)等等。

网友六

个人认为是这样的,首先得有一些基础,比如C语言,电路等,有了基础之后,再学起驱动比较不那么费力。重要的是你的态度:你想不想学,你怎样学!技术行业更新换代很快,要时刻保持学习的姿态。至于你想了解的成长经历,我个人解读是前途或者钱途?技术牛人不差钱,只要你牛逼。说的不太具体,请见谅。

第4届中国IOT大会不仅邀请到微软、高通、华为、Silicon Labs、周立功、和而泰高层发表主题演讲,而且成功导入以色列创新元素,现已邀请到8家以色列创新IOT技术公司CEO到深圳发表主题演讲和参加融资路演。

扫描下方二维码

立即报名第4届中国IOT大会

    推荐阅读
  • 臭氧的作用与功效(臭氧的作用与功效是什么)

    臭氧的作用与功效是什么臭氧的化学式是O₃,是氧气的一种同素异形体,有鱼腥味的淡蓝色气体,特点就是它是一个强氧化剂有水存在的时候,臭氧也可以是强力漂白剂,所以日常生活中经常作为漂白剂、净化剂、消毒剂应用在化工生产中也可以用臭。

  • 家庭如何做葡萄汁(做葡萄汁方法)

    家庭如何做葡萄汁首先,我们将买来的葡萄洗净,除去残渣和破碎的坏葡萄,注意不要用力过大,尽可能保留多的果粉,果粉中的含有天然的葡萄酵母菌,有利于糖分的转化。将洗干净的葡萄,放置到干燥的桌子上晾干,最好是平铺,然水分尽快散去,或者用电风扇吹干,然后用搁置半天,目的是为了促使淀粉尽快转化为糖,提高它的甜度。前第一次过滤好的葡萄汁,再重复过滤一次,以确保葡萄汁的浓度和纯度。

  • 红枣烘干的最佳方法(红枣烘干的最佳方法和时间)

    务必做到60℃以上,便于水份很多挥发,并注意通风祛湿,在每一个班生产期开窗通风放气5~10次。自然通风祛湿后务必关掉进气口和出气口,使室温快速上升,便于持续不断地挥发水份。当枣果表层出現皱褶时,表明干躁一切正常。但留意中后期火不能很大,不然易烤糊或大枣湿区不均。这时还务必对烘盘替换位置,并要持续颤动,使每一个烘烤盘上的枣溫度均一。

  • 王者荣耀鹰眼护卫队怎么申请(王者荣耀鹰眼护卫队的申请方法)

    王者荣耀鹰眼护卫队怎么申请《王者荣耀》信誉等级达到7级的玩家点击个人主页里的“信誉”,即可看到“护卫队”选项,接着打开鹰眼护卫队界面,满足入队条件后点击下方的“申请入队”就可以提交入队申请了。模拟裁决测试的位置就在“申请入队”按钮旁边,玩家需要通过测试才能申请入队。《王者荣耀》是一款MOBA类国产手游,于2015年11月26日在Android、IOS平台上正式公测,游戏前期使用名称有《英雄战迹》、《王者联盟》。

  • 红利etf最高pe是多少(韭菜公社0825一字板研究)

    22年8月11日晚公告,公司上半年实现净利润1852.49万元,同比增长8.11%。公司专注于成为全球领先的厨卫电器及热水热能系统整体解决方案供应商。报告期内,公司锂电池业务产品订单量大幅增加,净利润6482万元,同比增长296.08%。22年7月29日公告,拟以最高不超过38.5亿元现金收购瑞福锂业70%股权及东力矿业70%股权。

  • 转向灯没坏但闪烁过快 转向灯没坏但闪烁过快怎么修

    闪光继电器毁坏最先大家必须检查一下闪光继电器是不是一切正常,立即用万能表测闪光继电器的输出线,看一下是不是有12v输出。如果有间断的输出转变就表明是常规的,那要是没有输出或是一直都是12v输出得话,就表明闪光继电器早已发生破坏了,必须拆换一个新的上来。灯泡输出功率过大假如以前拆换转向灯,很可能是由于灯泡输出功率跟原厂的闪光继电器不配对,以至于发生一些不正常的状况。

  • 水的软化方法及原理(干货分享洗涤用水软化的几种方法)

    化学软化法化学软化法又称为水剂法,是在水中加入纯碱磷酸三钠或六偏磷酸钠、乙二胺、四乙酸钠等化学药剂,他们与水中的钙离子作用生成不溶性沉淀,使之从水中去除。在水中加入纯碱或磷酸三钠,都能与钙、镁离子作用而生成沉淀物。在水中加入六偏磷酸钠,能与钙镁离子作用形成稳定的水溶性结合物,在温度不高的情况下不再具有硬水的性质。

  • 开学期间的校园安全(请收好这份校园安全提示)

    开学季到了,在防疫安全、交通安全、人身安全、课间活动、课堂安全、日常安全6方面有哪些校园安全事项需要注意?为感谢粉丝互动,小e妹特定制了一批“湖北e家庭限量笔记本”,作为奖品送出。获取方式:每个自然月内精选留言数不低于30条的粉丝,将获得限量笔记本噢;每人限领一本,数量有限,赶紧参与哦~THEEND本文来源:上海宝山官方微信本文属于政务公益宣传,对于文字或者图片有异议的,请联系删除!

  • 菠菜汁面家常做法(给大家整理这些步骤)

    以下内容大家不妨参考一二希望能帮到您!菠菜汁面家常做法菠菜去根洗净晾干水分。锅内煮开水将菠菜烫一分钟后捞出。加少许盐搅拌均匀,切碎。用纱布包住菠菜碎,用力挤出水分。打入两个鸡蛋到菠菜汁,搅拌均匀倒入面粉。和成光滑的面团,醒二十分钟。根据你的喜好程度切成面条。锅内煮开水,将面条下入,调入少许盐和香油即可,也可以加点你喜欢的蔬菜,或者捞出后拌酱料吃。

  • 60岁的老人还能找老婆吗(92岁的老人该不该再娶老婆)

    大姑老年痴呆有六七年了,去年又摔了一跤,在医院里住了十几多天,去世了。最近几年两个儿子都比较孝顺。两个儿子每个月给两个老的1500块钱。请姑父女儿回来照顾两个老人.女儿远嫁江苏,但是为了两个老的,还是情愿回来照顾他们。但是这个嫂子做了半年不愿意做了。但是身体还是非常健康。去年夏天,大姑过世了。遇到一个50多岁的女人。两个儿子想父亲已经90多岁了。因为意见不一样,很难形成一样的意见。