Linux驱动面试
1. 如何成为优秀的linux驱动工程师
首先要定义,我所认为的一个优秀的驱动开发工程师,应该具备什么样的能力,这里列一下按照从易到难的顺序,个人认为应该会有几个方面的要求吧:
能够独立完成驱动的功能开发任务
能够分析和优化驱动的性能,针对特定硬件扬长避短
能够充分了解模块相关软硬件能力、发展方向,辅助应用工程师最大化利用硬件能力
能够辅助硬件工程师规划硬件设计,预防问题,谋求功能模块的最佳方案
能够协助定义系统架构,合理规划软硬件,谋求产品实现的最佳方案
作为一个驱动工程师,很多时候不是完全从头开发一个完整的子系统,而是针对特定硬件和平台移植驱动,增加功能,解决Bug等等,如果从这方面外在的表现来看:
解决问题的境界,大概会有这么几个阶段:
不知道哪里存在BUG
不知道如何解决BUG
知道如何解决BUG
知道如何发现BUG
知道如何规划BUG
知道如何发现BUG(而不是撞上BUG)其实并不简单,需要你对系统有足够的了解,能够察觉可能出问题的地方。而规划Bug更难,需要你能对问题的轻重缓急做出准确的判断。没有的完美的世界,只有适当的取舍,规避和预防。
而从解决问题过程的角度来看,我认可以分为几个阶段:
BUG发生 -> 大量跟踪调试代码 -> 终于发现并解决BUG
BUG发生 -> 理论推测可能原因 -> 迅速定位并解决BUG
阅读代码 -> 预测可能出现的BUG -> 证实并解决BUG
号称能光凭瞄一遍代码就找到问题的高手,我想我是没希望了。
应该具备怎样的素质
那么要达到上诉最佳境界,需要具备和发展哪些素质和能力呢?
足够的硬件知识
能看简单的原理图,能够分析硬件异常的可能原因,能够使用常见的硬件调试工具,我想这是做为优秀的驱动工程师,区别与其它软件工程师,所不可避免、必须具备的专业素质。当然取决于你具体从事的工作,对这方面的要求不尽相同。
对于驱动开发者来说,不了解所开发驱动外设的硬件原理和相关背景知识,也许很多时候,也能够完成一些移植,修补的工作任务,但这就好比无源之水,无根之木,我相信是很难走远的。
多多益善的操作系统知识
做驱动开发,特别是纯粹的外设的驱动移植工作,刚开始的时候,也许你并不需要了解很多操作系统本身的知识(像内存管理,进程调度,锁,各种内核子系统的原理框架等等),也能顺利完成手头的一些工作。
但是,如果一但需要优化驱动,需要完善软件框架,或者是遇上疑难问题需要跟踪解决,对操作系统,内核本身的了解,就体现出它的价值了。
对于Linux内核驱动开发者,尤其如此,首先,代码是完全开源的,你有条件去了解背后的运行机制,其次,Linux内核和各个组成子系统总是在迅速的进化发展中,不进则退,你也有必要跟上时代发展的脚步。
强烈的好奇心,持续的热情
如果驱动开发不仅仅是你的爱好,更是你养家糊口的途径,我想,很多时候,你大概不会有机会专注于一两个你最有经验的模块的开发和维护。随着能力的成长,势必会要求你接触和掌握越来越多的各式各样的驱动模块的开发。
对于这件事,包括我自己,有时候大概都会有如下几种反应:
哇,原来的工作做太久了,太乏味了,很高兴能做不同的工作。
啊?又要做别的模块啊?我手头的工作已经太多了!
这个模块没意思,我不想做。
相信多数有志青年们都是第一种表现了 8 )不过,有些时候,我发觉,很多人的这种热情其实并不持久,一个新的模块没做多久,就再次厌倦了,是已经炉火纯青了么,未必,或许只是修改了几个BUG以后不甚其烦。很多时候,我面试前来求职的工程师时,发现简历上这个也做过,那个也做过,但是一但问到解决了什么问题,所做过的驱动,框架、流程、原理之类的问题的时候,就一问三不知了。
我觉得如果自己的目标是优秀,那么最起码的标准应该是对具体驱动模块相关的子系统的整体工作流程,框架,具备足够的好奇心,乐于去了解和学习,而不仅仅是为了完成任务而工作,否则的话,很难积累下扎实的经验和技术。
清晰的逻辑思维能力
这一点,也许是个软件开发人员都应该具备吧,不过,做为驱动开发工程师来说,有时候,大多数情况下,工作的硬件环境并不是完美的,遇到问题需要分析判断错误的原因是硬件问题还是驱动Bug,这时候,清晰的逻辑思维能力尤其重要。
良好的工作习惯
大多数人都不是天才,要成为优秀的开发工程师,一需要持续努力,二需要时间积累经验,而这过程中,很重要的一点,就是要有良好的工作习惯。譬如,注意设计文档的维护,对工作中遇到的问题的记录,过往经验的及时记录,适当的软件开发流程等等。文档工作,可能很多人很不愿意去做,它的确很花费时间。不过,唉。。。老啦,好记性不如烂笔头啊 8 )。当然,其实设计文档更多的是为你提供思考的机会,而过往经验的总结,也可以起到和大家交流技术,共同进步的目的。
英语
这个也是必须的啦,没有办法,邮件列表,技术文档,社区,精通英语肯定是很大的优势,做开源项目尤其如此。阅读各种Spec标准文档之类的速度还是很重要的。阅读无障碍是一回事,能和母语一样一目十行,那才爽呀,唉,人生苦短,效率啊!光读文档,就不知道要比老外多花多少时间。。。。
了解更多开源相关,去LUPA社区看看吧
2. 嵌入式Linux驱动程序开发学习路线
关于这个方向,我认为大概分3个阶段:
1、嵌入式linux上层应用,包括QT的GUI开发
2、嵌入式linux系统开发
3、嵌入式linux驱动开发
嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等
Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。
所以你可以尝试以下路线:
(1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。
推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本。
(2) 操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。
(3)Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。
推荐书籍:《UNIX环境高级编程》(第2版)
(4) 了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。
(5) 系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。
(6) 驱动开发
linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。
linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。
以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!
…………………………………………
嵌入式非常难,看书的话比较晦涩难懂,不容易入门,我个人比较偏向于看视频教程,因为有老师带着比较容易入门。给看看一篇文章是关于一位专科生怎么自学嵌入式的。
做个自我介绍,我07年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了。09年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学了。
退学后我也迷茫,大专都没有毕业,我真的不知道我能干什么,我在纠结着我能做什么。所以辍学后我一段时间,我想去找工作,因为我比较沉默寡言,不是很会说话,我不适合去应聘做业务。我想应聘做技术的,可是处处碰壁。
一次偶然的机会,我才听到嵌入式这个行业。那天我去新华书店,在计算机分类那边想找本书学习。后来有个女孩子走过来,问我是不是读计算机的,有没有兴趣学习嵌入式,然后给我介绍了一下嵌入式现在的火热情况,告诉我学嵌入式多么的有前景,给我了一份传单,嵌入式培训的广告。听了她的介绍,我心里痒痒的,确实我很想去学会一门自己的技术,靠自己的双手吃饭。
回家后,我就上网查了下嵌入式,确实是当今比较热门的行业,也是比较好找工作的,工资也是相对比较高。我就下决心想学嵌入式了。于是我去找嵌入式培训的相关信息,说真的,我也很迷茫,我不知道培训是否真的能像他们宣传的那样好,所以我就想了解一段时间再做打算。
后来,我在网络知道看到一篇让我很鼓舞的文章,是一个嵌入式高手介绍没有基础的朋友怎么自学入门学嵌入式,文章写的很好,包含了如何学习,该怎么学习。他提到一个方法就是看视频,因为看书实在太枯燥和费解的,很多我们也看不懂。这点我真的很认同,我自己看书往往看不了几页。
我在想,为什么别人都能自学成才,我也可以的!我要相信自己,所以我就想自学,如果实在学不会我再去培训。
主意一定,我就去搜索嵌入式的视频,虽然零星找到一些嵌入式的视频,但是都不系统,我是想找一个能够告诉我该怎么学的视频,一套从入门到精通的视频,一个比较完整的资料,最好能有老师教,不懂可以请教的。
后来我又找到一份很好的视频,是在IT学习联盟网站推出的一份视频《零基础嵌入式就业班》(喜欢《零基础嵌入式就业班》的可以复制 sina.lt/qKh 粘贴浏览器按回车键即打开)。里面的教程还不错,很完整,可以让我从基础的开始学起。视频比较便宜。
下面介绍下我的学习流程,希望对和我一样完全没有基础的朋友有所帮助。
收到他们寄过来的光盘后,我就开始学习了,由于我没有什么基础,我就从最简单的C语言视频教程学起,话说简单,其实我还是很多不懂的,我只好请教他们,他们还是很热心的,都帮我解决了。C语言我差不多学了一个礼拜,接下来我就学了linux的基本命令,我在他们提供linux虚拟机上都有做练习,敲linux的基本命令,写简单的C语言代码,差不多也就三个礼拜。我每天都在不停的写一些简单的代码,这样一月后我基本掌握了C和linux的基本操作。
接下来我就去学习了人家的视频的培训教程,是整套的,和去参加培训没有多大的区别,这一看就是两个月,学习了ARM的基本原理,学习嵌入式系统的概念,也掌握了嵌入式的环境的一些搭建,对linux也有更深层次的理解了,明白了嵌入式应用到底是怎么做的,但是驱动我只是有一点点的了解,这个相对难一点,我想以后再慢慢啃。
这两个月,除了吃饭睡觉,我几乎都在学习。因为我知道几乎没有基础,比别人差劲,我只能坚持努力着,我不能放弃,我必要要靠自己来养活自己,必须学好这门技术,然后我就把不懂的问题总结记下来,这样慢慢积累了一段时间,我发现自己真的有点入门了。
最后的一个月,我就去看关于实践部分的内容,了解嵌入式项目具体的开发流程,需要什么样的知识,我就开始准备这方面的知识,也就是学习这方面的视频,同时他们建议我去找了找一些嵌入式面试的题目,为自己以后找工作做准备。我就到网上找了很多嵌入式的题目,把他们理解的记下来,这样差不多准备了20天左右
我觉得自己差不多入门了,会做一些简单的东西了。我就想去找工作看看,于是我就到51job疯狂的投简历,因为我学历的问题,专科没有毕业,说真的,大公司没有人会要我,所以我投的都是民营的小公司,我希望自己的努力有所回报。没有想过几天过后,就有面试了,但是第一次面试我失败了,虽然我自认为笔试很好,因为我之前做了准备,但是他们的要求比较严格,需要有一年的项目经验,所以我没有被选中。
后来陆续面试了几家公司,终于功夫不负有心人。我终于面试上的,是在闵行的一家民营的企业,公司规模比较小,我的职务是嵌入式linux应用开发,做安防产品的应用的。我想我也比较幸运,经理很看重我的努力,就决定录用我,开的工资是3500一个月,虽然我知道在上海3500只能过温饱的生活,但是我想我足够了。我至少不用每天都要靠父母养,我自己也能养活自己的。我想只要我继续努力,我工资一定会翻倍的。
把本文写出来,希望能让和我一样的没有基础的朋友有信心,其实我们没有必要自卑,我们不比别人笨,只要我们肯努力,我们一样会成功。
3. 想学习Linux 驱动,需要什么知识
首先,接触linux操作系统,在你的电脑上装一个linxu操作系统(建议ubuntu,比较友好),熟悉经常要用的命令,熟悉环境(建议看“鸟哥的linux私房菜”)。
其次,阅读经典书籍是不可少的,建议先看ldd前四章,大概了解linux驱动的框架,驱动是做什么的,该如何写驱动,那本书上有一些例子,可以在你的电脑上编译,执行看看。后面的章节在结合自己的情况而定。
第三,建议阅读ulk(understanding the linux kernel)所有的内容,了解linux内核的一些基本知识,在心中建立一个框架,不必完全懂,深入了解就好,以后经常翻翻,受益无穷!
第四,别着急,这才是你真的进入linux驱动的第一步,花点钱买个开发板吧,然后了解代码的编译,下载,看看板子的datasheet,针对自己感兴趣的深入研究。建议学习流程,led灯控制---tp---i2c总线-----lcd-----camera----flash----wifi/bt等。因为这个里面牵涉了甚多内核的子系统(input,v4l2,fb等
),所以可能要多话时间看代码,了解代码的框架,设计的思想等,只要一步一个脚印,一定会有所成。
第五,因为现在的移动设备大多数都是android的了,所以你就要看看linux kernel在android的作用,然后往上看看,看看hal层的代码,这些在调试中都是需要的,如果有兴趣,更加可以看看framework的代码了,学习android一些工作机制,类似于surfaceflinger,audioflinger等等。。
4. 做linux设备驱动的工作和前景如何
做驱动,环境跟公司大小并没有什么太大的关联。比如有些公司主做vxworks, 招linux驱动工程师,则有可能你进去就是一个人做这块。楼主在面试过程可向考官了解下公司的概况,再决定是否加入。
5. 手机linux驱动的流程是什么主要想在手机驱动开发方面发展,请问我下一步怎么学习
我现在是从事linux驱动这块的,现跟你说说在公司我的主要工作内容吧。
驱动开发,就是去驱动一个设备,比如公司的一个产品,一个手机,公司老大说这个屏显示不好,要换一个,找屏的厂家,屏提供硬件,软件,这个软件就是所谓的驱动代码,当然这个在你的产品上是跑不起来的,你需要根据你的产品来修改驱动代码,其实驱动开发就是大部分工作就是驱动移植,当然关键是你要知道怎么移植,这个是重点。通常驱动代码的分类:字符、块、网络,这些分类是从软件上来分类的,实际上应用最多的是硬件接口的分类:i2c 驱动,spi驱动,uart驱动,内核中有对应的子系统:比如说i2c系统。
想快速出去工作,我个你提供一条路,看i2c设备驱动:i2c协议(这个当面试的时候肯定会问你的,如果你说你会i2c驱动)、linux系统的i2c子系统,市面上很多设备都是i2c的,而且这部分设备也经常改动,因为硬件电路简单。
6. 怎么达到linux驱动职位要求
我可以给出一些见解,我是通过培训,然后在此行业工作了近一年。针对你的问题,不同的公司有不同的录取规则,没有一个定式。当时找第一份工作前,我也有你的这种困扰,我把我的想法说一下,希望能帮到你。
如果你作为初级驱动工程师去面试,你只需要熟悉一些重要的驱动,比如I2C、SPI,而且自己做过此类驱动的小项目,再针对公司供应职业的需求好好做足功课。这个阶段是入职后更专业地学习驱动。
如果你作为资深工程师,有多年经验,自然地对大部分驱动十分了解,比如USB、网卡、存储设备等等。
对于驱动框架啊,你一定是要了解并十分熟悉框架的,这样才可以对相应驱动程序进行填充实现其功能。在面试找工作时这个方面会更重要些,但是我认为只要你认真地研究驱动代码,是很容易掌握的,关键是信心与毅力。
“还有对驱动编写完后的配置和编译需要到达什么程度?”这个问题问的好,这是企业和公司都关心的问题,它关心着产品的市场,至于到什么程度,基本的功能你一定要很好地实现,如果时间充裕,尽量优化你的代码,使驱动占用更少的资源、更省电、数据传输更好等等。
以上为个人见解,祝成功!
7. 搞嵌入式linux驱动开发面试应该做哪些准备
软硬件的基础知识一定要扎实,比方中断的原理,串口通信的原理什么的。。。
最重要的还是你自己在这一年中做过什么,把你自己做过的东西讲清楚的话,
一般人家HR就能判断你这个人到底肚子里是不是有真材实货,不要像很多
华而不实的人一样,自己什么代码都没写过的项目也往简历里面凑,这样没好处。
至于薪水,我们相信做驱动开发的工作永远也不会差,关键还是得能在工作
中出成绩才能对得起人家的高薪水。另外除了薪水之外,公司能具有的工作学习
气氛更加重要,毕竟,你也只有一年的工作经验,还是处于经验的积累期。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
杭州巨立安技术(JulianTec),专注于提供Linux相关的项目研发和技术培训服务。
8. Linux 内核和驱动开发工程师的发展前景怎么样
或许这样的标题,应该是由像Linus或Greg KH这样的大师级的高手才有资格写的吧。但是作为我来说,也许我更想把这个标题作为一个疑问句来使用,整理一下自己的认识,用来勉励自己,和大家一起努力实现这个目标。认识肤浅的地方,还请大家见谅。
从事嵌入式开发是当下比较热门的一个领域,做职业规划的时候,比较清晰的是有三条路可以走:
C1、嵌入式软件开发工程师
C2、嵌入式硬件开发工程师
C3、嵌入式驱动开发工程师。
其中
C1是计算机相关专业的同学可以选择的,因为学习的课程相对偏软,平时在PC上编程比较多,做软件开发会相对轻松。
C2是学习电子电路的同学可以考虑,对模拟电路比较熟悉,可以设计出质量好的电路板。
C3的难度比较大,需要同时熟悉软件和硬件,真正的做到软、硬相结合,搭建软件和硬件互通的桥梁,当然了在业界的待遇也是相对来说比较高的。
我们可以去一些招聘网站查看相关企业的岗位要求,这样学习的时候就有了一个比较明确的目标。今天看到一位前辈的博文,谈究竟应该如何成为优秀的驱动开发工程师,很受鼓舞,在此与大家分享共勉。
--------------------------------------------------------------
何谓优秀的驱动开发工程师
首先要定义,我所认为的一个优秀的驱动开发工程师,应该具备什么样的能力,这里列一下按照从易到难的顺序,个人认为应该会有几个方面的要求吧:
能够独立完成驱动的功能开发任务
能够分析和优化驱动的性能,针对特定硬件扬长避短
能够充分了解模块相关软硬件能力、发展方向,辅助应用工程师最大化利用硬件能力
能够辅助硬件工程师规划硬件设计,预防问题,谋求功能模块的最佳方案
能够协助定义系统架构,合理规划软硬件,谋求产品实现的最佳方案
作为一个驱动工程师,很多时候不是完全从头开发一个完整的子系统,而是针对特定硬件和平台移植驱动,增加功能,解决Bug等等,如果从这方面外在的表现来看:
解决问题的境界,大概会有这么几个阶段:
不知道哪里存在BUG
不知道如何解决BUG
知道如何解决BUG
知道如何发现BUG
知道如何规划BUG
知道如何发现BUG(而不是撞上BUG)其实并不简单,需要你对系统有足够的了解,能够察觉可能出问题的地方。 而规划Bug更难,需要你能对问题的轻重缓急做出准确的判断。没有的完美的世界,只有适当的取舍,规避和预防。
而从解决问题过程的角度来看,我认可以分为几个阶段:
BUG发生 -> 大量跟踪调试代码 -> 终于发现并解决BUG
BUG发生 -> 理论推测可能原因 -> 迅速定位并解决BUG
阅读代码 -> 预测可能出现的BUG -> 证实并解决BUG
---------------------------------------------------------------
应该具备怎样的素质
那么要达到上诉最佳境界,需要具备和发展哪些素质和能力呢?
一、足够的硬件知识
能看简单的原理图,能够分析硬件异常的可能原因,能够使用常见的硬件调试工具,我想这是做为优秀的驱动工程师,区别与其它软件工程师,所不可避免、必须具备的专业素质。当然取决于你具体从事的工作,对这方面的要求不尽相同。
对于驱动开发者来说,不了解所开发驱动外设的硬件原理和相关背景知识,也许很多时候,也能够完成一些移植,修补的工作任务,但这就好比无源之水,无根之木,我相信是很难走远的。
二、多多益善的操作系统知识
做驱动开发,特别是纯粹的外设的驱动移植工作,刚开始的时候,也许你并不需要了解很多操作系统本身的知识(像内存管理,进程调度,锁,各种内核子系统的原理框架等等),也能顺利完成手头的一些工作。
但是,如果一但需要优化驱动,需要完善软件框架,或者是遇上疑难问题需要跟踪解决,对操作系统,内核本身的了解,就体现出它的价值了。
对于Linux内核驱动开发者,尤其如此,首先,代码是完全开源的,你有条件去了解背后的运行机制,其次,Linux内核和各个组成子系统总是在迅速的进化发展中,不进则退,你也有必要跟上时代发展的脚步。
三、强烈的好奇心,持续的热情
如果驱动开发不仅仅是你的爱好,更是你养家糊口的途径,我想,很多时候,你大概不会有机会专注于一两个你最有经验的模块的开发和维护。随着能力的成长,势必会要求你接触和掌握越来越多的各式各样的驱动模块的开发。
对于这件事,包括我自己,有时候大概都会有如下几种反应:
哇,原来的工作做太久了,太乏味了,很高兴能做不同的工作。
啊?又要做别的模块啊?我手头的工作已经太多了!
这个模块没意思,我不想做。
相信多数有志青年们都是第一种表现了,不过,有些时候,我发觉,很多人的这种热情其实并不持久,一个新的模块没做多久,就再次厌倦了,是已经炉火纯青了么,未必,或许只是修改了几个BUG以后不甚其烦。很多时候,我面试前来求职的工程师时,发现简历上这个也做过,那个也做过,但是一旦问到解决了什么问题,所做过的驱动,框架、流程、原理之类的问题的时候,就一问三不知了。
我觉得如果自己的目标是优秀,那么最起码的标准应该是对具体驱动模块相关的子系统的整体工作流程,框架,具备足够的好奇心,乐于去了解和学习,而不仅仅是为了完成任务而工作,否则的话,很难积累下扎实的经验和技术。
四、清晰的逻辑思维能力
这一点,也许是个软件开发人员都应该具备吧,不过,做为驱动开发工程师来说,有时候,大多数情况下,工作的硬件环境并不是完美的,遇到问题需要分析判断错误的原因是硬件问题还是驱动Bug,这时候,清晰的逻辑思维能力尤其重要。
五、良好的工作习惯
大多数人都不是天才,要成为优秀的开发工程师,其一需要持续努力,其二需要时间积累经验,而这过程中,很重要的一点,就是要有良好的工作习惯。譬如,注意设计文档的维护,对工作中遇到的问题的记录,过往经验的及时记录,适当的软件开发流程等等。文档工作,可能很多人很不愿意去做,它的确很花费时间。不过,唉。。。老啦,好记性不如烂笔头啊 。当然,其实设计文档更多的是为你提供思考的机会,而过往经验的总结,也可以起到和大家交流技术,共同进步的目的。
六、英语
这个也是必须的啦,没有办法,邮件列表,技术文档,社区,精通英语肯定是很大的优势,做开源项目尤其如此。阅读各种Spec标准文档之类的速度还是很重要的。阅读无障碍是一回事,能和母语一样一目十行,那才爽呀,唉,人生苦短,效率啊!光读文档,就不知道要比老外多花多少时间。
9. 请问做嵌入式linux驱动开发的工作需要对驱动熟练到什么程度才行
你好,楼主:
我可以给出一些见解,我是通过培训,然后在此行业工作了近一年。针对你的问题,不同的公司有不同的录取规则,没有一个定式。当时找第一份工作前,我也有你的这种困扰,我把我的想法说一下,希望能帮到你。
如果你作为初级驱动工程师去面试,你只需要熟悉一些重要的驱动,比如I2C、SPI,而且自己做过此类驱动的小项目,再针对公司供应职业的需求好好做足功课。这个阶段是入职后更专业地学习驱动。
如果你作为资深工程师,有多年经验,自然地对大部分驱动十分了解,比如USB、网卡、存储设备等等。
对于驱动框架啊,你一定是要了解并十分熟悉框架的,这样才可以对相应驱动程序进行填充实现其功能。在面试找工作时这个方面会更重要些,但是我认为只要你认真地研究驱动代码,是很容易掌握的,关键是信心与毅力。
“还有对驱动编写完后的配置和编译需要到达什么程度?”这个问题问的好,这是企业和公司都关心的问题,它关心着产品的市场,至于到什么程度,基本的功能你一定要很好地实现,如果时间充裕,尽量优化你的代码,使驱动占用更少的资源、更省电、数据传输更好等等。
以上为个人见解,祝成功!
10. 从事linux 设备驱动开发工作.需要什么样的学历和英语等级
您好,我个人估计学历没有也罢,但是要脑子好使,有一些编程的基础,不是英语好就行的。是要专门学习的,专科学校里出来的人最好的。不过有的地方就是看重文凭,所以您必须要到正规的地方考一个文凭。
在我看来只要能编程就可以了,别的我还是不看重的。