1. windows驱动开发工程师工资收入多少
不能笼统的说linux驱动软件开发工资多少,这个还是看你自己的实际水平的以及工作经验等因素。水平不行,公司都不会要你,水平好,那价钱不会是问题。但相比而言,做驱动开发的工资还是比应用层的会高一点。
2. 驱动工程师是干什么的,与测试或者开发链%
驱动工程师:是为计算机硬件设备(比如网卡、声卡、鼠标、键盘、网卡等等)编写的底层接口程序,使操作系统更好的对硬件设备使用和管理,驱动硬件工作。这些人的职称达到工程师的级别。就叫驱动工程师。
测试工程师:编写计算机软件的人写好的程序,需要有人测试一下,评估一下软件工程师写的程序有没有问题,有没有偷懒等的人是测试工程师。就象你写了本书,你感觉你写的书很棒了,你准备发表,你先把书给一个爱挑别人毛病的人看一下,把错字,错词等等给你挑出来,这样才能让你的书对的起大家的眼睛。
开发链%:这个词我也不知道,如果你写错字了,那你就对不起我的眼睛了。我也会对你说:“啥球水平吗!怎么上学的,字都写不对”。
现在应该明白了吧。
3. 底层C/驱动开发工程师是什么职位
前端工程师的主要职责有: 解决浏览器的兼容性,可能还要包括移动端; 利用html,css,js(包括js的各种框架)实现网站的功能; 保证良好的用户体验,各种优化等; 和后端进行数据交互。需要熟悉php,数据库甚至于linux操作等
4. Windows驱动工程师是做什么的
岗位职责:
负责windows 系统的USB底层驱动开发。
岗位要求:
1、熟悉Windows内核,有Windows USB驱动程序开发经验(包括WDM,DDK的开 发)。
2、熟练掌握驱动程序调试方法和调试工具。熟悉USB接口协议,有USB设备开发经验者优先。
3、精通硬件驱动、硬件USB驱动协议开发,扎实的C/C++以及多线程程序设计功底;
4、吃苦耐劳,有良好的团队合作能力。
5. 如何成为优秀的linux驱动工程师
首先要定义,我所认为的一个优秀的驱动开发工程师,应该具备什么样的能力,这里列一下按照从易到难的顺序,个人认为应该会有几个方面的要求吧:
能够独立完成驱动的功能开发任务
能够分析和优化驱动的性能,针对特定硬件扬长避短
能够充分了解模块相关软硬件能力、发展方向,辅助应用工程师最大化利用硬件能力
能够辅助硬件工程师规划硬件设计,预防问题,谋求功能模块的最佳方案
能够协助定义系统架构,合理规划软硬件,谋求产品实现的最佳方案
作为一个驱动工程师,很多时候不是完全从头开发一个完整的子系统,而是针对特定硬件和平台移植驱动,增加功能,解决Bug等等,如果从这方面外在的表现来看:
解决问题的境界,大概会有这么几个阶段:
不知道哪里存在BUG
不知道如何解决BUG
知道如何解决BUG
知道如何发现BUG
知道如何规划BUG
知道如何发现BUG(而不是撞上BUG)其实并不简单,需要你对系统有足够的了解,能够察觉可能出问题的地方。而规划Bug更难,需要你能对问题的轻重缓急做出准确的判断。没有的完美的世界,只有适当的取舍,规避和预防。
而从解决问题过程的角度来看,我认可以分为几个阶段:
BUG发生 -> 大量跟踪调试代码 -> 终于发现并解决BUG
BUG发生 -> 理论推测可能原因 -> 迅速定位并解决BUG
阅读代码 -> 预测可能出现的BUG -> 证实并解决BUG
号称能光凭瞄一遍代码就找到问题的高手,我想我是没希望了。
应该具备怎样的素质
那么要达到上诉最佳境界,需要具备和发展哪些素质和能力呢?
足够的硬件知识
能看简单的原理图,能够分析硬件异常的可能原因,能够使用常见的硬件调试工具,我想这是做为优秀的驱动工程师,区别与其它软件工程师,所不可避免、必须具备的专业素质。当然取决于你具体从事的工作,对这方面的要求不尽相同。
对于驱动开发者来说,不了解所开发驱动外设的硬件原理和相关背景知识,也许很多时候,也能够完成一些移植,修补的工作任务,但这就好比无源之水,无根之木,我相信是很难走远的。
多多益善的操作系统知识
做驱动开发,特别是纯粹的外设的驱动移植工作,刚开始的时候,也许你并不需要了解很多操作系统本身的知识(像内存管理,进程调度,锁,各种内核子系统的原理框架等等),也能顺利完成手头的一些工作。
但是,如果一但需要优化驱动,需要完善软件框架,或者是遇上疑难问题需要跟踪解决,对操作系统,内核本身的了解,就体现出它的价值了。
对于Linux内核驱动开发者,尤其如此,首先,代码是完全开源的,你有条件去了解背后的运行机制,其次,Linux内核和各个组成子系统总是在迅速的进化发展中,不进则退,你也有必要跟上时代发展的脚步。
强烈的好奇心,持续的热情
如果驱动开发不仅仅是你的爱好,更是你养家糊口的途径,我想,很多时候,你大概不会有机会专注于一两个你最有经验的模块的开发和维护。随着能力的成长,势必会要求你接触和掌握越来越多的各式各样的驱动模块的开发。
对于这件事,包括我自己,有时候大概都会有如下几种反应:
哇,原来的工作做太久了,太乏味了,很高兴能做不同的工作。
啊?又要做别的模块啊?我手头的工作已经太多了!
这个模块没意思,我不想做。
相信多数有志青年们都是第一种表现了 8 )不过,有些时候,我发觉,很多人的这种热情其实并不持久,一个新的模块没做多久,就再次厌倦了,是已经炉火纯青了么,未必,或许只是修改了几个BUG以后不甚其烦。很多时候,我面试前来求职的工程师时,发现简历上这个也做过,那个也做过,但是一但问到解决了什么问题,所做过的驱动,框架、流程、原理之类的问题的时候,就一问三不知了。
我觉得如果自己的目标是优秀,那么最起码的标准应该是对具体驱动模块相关的子系统的整体工作流程,框架,具备足够的好奇心,乐于去了解和学习,而不仅仅是为了完成任务而工作,否则的话,很难积累下扎实的经验和技术。
清晰的逻辑思维能力
这一点,也许是个软件开发人员都应该具备吧,不过,做为驱动开发工程师来说,有时候,大多数情况下,工作的硬件环境并不是完美的,遇到问题需要分析判断错误的原因是硬件问题还是驱动Bug,这时候,清晰的逻辑思维能力尤其重要。
良好的工作习惯
大多数人都不是天才,要成为优秀的开发工程师,一需要持续努力,二需要时间积累经验,而这过程中,很重要的一点,就是要有良好的工作习惯。譬如,注意设计文档的维护,对工作中遇到的问题的记录,过往经验的及时记录,适当的软件开发流程等等。文档工作,可能很多人很不愿意去做,它的确很花费时间。不过,唉。。。老啦,好记性不如烂笔头啊 8 )。当然,其实设计文档更多的是为你提供思考的机会,而过往经验的总结,也可以起到和大家交流技术,共同进步的目的。
英语
这个也是必须的啦,没有办法,邮件列表,技术文档,社区,精通英语肯定是很大的优势,做开源项目尤其如此。阅读各种Spec标准文档之类的速度还是很重要的。阅读无障碍是一回事,能和母语一样一目十行,那才爽呀,唉,人生苦短,效率啊!光读文档,就不知道要比老外多花多少时间。。。。
了解更多开源相关,去LUPA社区看看吧
6. 嵌入式软件工程师和驱动软件工程师有什么区别吗
做硬件的需要掌握的知识:
模电,数电,高频,绘图软件如ORCAD,PADS,EMC,EMI,各种安检如FC,EC等,处理器的
架构,各种协议如IIC,SPI,USB,IIS,UART等,NAND,NOR,SDRAM,DDR,DDR2的
区别及接法等,最重要的是焊接水平要过硬,小到0805,0603,0402的电阻
电容,以及SOP,QFP封装的密脚IC,大到BGA,都要能焊。具有很强的硬件电路,高频,
高速电路的检测排除故障的技能。
做底层软件的需要掌握的知识:
C语言,C++,系统架构如WINCE,数据结构,各种通讯协议,还要对硬件有很大的了解
做硬件的需要掌握的技能:在ADS或MDK下调试程序的技能,使用仿真器排除故障的技能,
能够看得懂底层驱动程序,能够写底层驱动程序来解决,分析硬件上的问题。只是很多公司
的软件硬件分得很明确,搞硬件的不能碰软件。
7. 驱动工程师是干嘛的
驱动工程师:是为计算机硬件设备(比如网卡、声卡、鼠标、键盘、网卡等等)编写的底层接口程序,使操作系统更好的对硬件设备使用和管理,驱动硬件工作。这些人的职称达到工程师的级别。就叫驱动工程师。
测试工程师:编写计算机软件的人写好的程序,需要有人测试一下,评估一下软件工程师写的程序有没有问题,有没有偷懒等的人是测试工程师。就象你写了本书,你感觉你写的书很棒了,你准备发表,你先把书给一个爱挑别人毛病的人看一下,把错字,错词等等给你挑出来,这样才能让你的书对的起大家的眼睛。
开发链%:这个词我也不知道,如果你写错字了,那你就对不起我的眼睛了。我也会对你说:“啥球水平吗!怎么上学的,字都写不对”。
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. Camera驱动开发工程师是做什么的
负责windows 系统的USB底层驱动开发。
10. 如何成为优秀的驱动开发工程师
你首先需要了解WDM和WDF的驱动framework和他们的具体工作流程,windows的DDK有大量的例程,你可以作为参考和起始点。
然后你需要理解你要做驱动的总线架构和芯片的具体spec,这样的话,你才能知道怎么才能进行控制操作和数据传输。
最后你需要了解windbg软件的使用,只有你了解了debug的技术,你才能有效的分析你软件的问题和解决问题。
实践出真理,多动手。写一些filter驱动和USB,BT之类的软件,对于提高你的水平也是很有帮助的。