0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于一位驱动工程师的感悟

工程师人生 来源:网络整理 作者:工程师4 2018-06-01 18:04 次阅读

不知不觉做驱动再过2个月就3年了,可以说这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后不能充电问题,还有许多其他的问题量产前都会慢慢出现,个人觉得只要熟悉Linuxpower部分解决不是很难的,还是那句话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等。这些都是简单的,软件上更多的是底层通道切换等等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4275

    浏览量

    164038
  • 驱动
    +关注

    关注

    11

    文章

    1717

    浏览量

    84338
收藏 人收藏

    评论

    相关推荐

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

    如何搞崩个硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    优秀电源工程师需要哪些必备技能?

    随着电源市场的不断扩张,开关电源行业飞速发展,企业对电源工程师的需求日益增加,对电源工程师的技能要求也日渐提高,相信没有一位电源工程师会错过让自己变得更优秀的机会。作为
    发表于 01-29 11:29

    #人工智能 #FPGA 怎么成为个合格的FPGA工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年12月18日 21:19:01

    电子工程师天上班就暴揍师傅。。。#科普 #示波器 #电子工程师 #打工日记

    电子工程师示波器
    安泰小课堂
    发布于 :2023年12月18日 17:36:12

    中高级【嵌入式驱动工程师】年薪50w内可谈

    中高级【嵌入式驱动工程师】 年薪50w以内可谈 工作​地点:北京市 了解更多 ‼5年以上内核驱动开发经验 ‼​需要有国产化操作系统/芯片平台的驱动开发经验(必须) 交换机/交换芯片驱动
    发表于 11-23 13:35

    FPGA工程师需要具备哪些技能?

    ,需要具备系列的技能,才能胜任日益复杂的设计工作。因此,本文将从设计思路、硬件语言、EDA工具、数字信号处理、通信协议、测试验证等多个方面,探讨FPGA工程师需要具备哪些技能。
    发表于 11-09 11:03

    #FPGA 本科生也能成为FPGA研发工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年09月23日 08:05:36

    热门推荐:硬件工程师必备工具

    硬件开发的工作流程般可分为:原理图设计、PCB Layout设计、采购电子BOM、PCB板生产、PCBA组装、功能调试及测试、小批量试产、大批量生产正式投放市场等步骤。 作为名优秀的硬件工程师
    发表于 06-21 10:15

    电子工程师必看书籍推荐#知识分享 #知识科普 #交流#硬声创作季

    电子工程师
    也许吧
    发布于 :2023年05月24日 10:47:34