做驱动的知识背景

来源:互联网 发布:edu域名注册 编辑:程序博客网 时间:2024/05/21 09:46
写驱动程序必须了解硬件机理。与PC机的驱动程序开发不同的是,PC上的驱动程序开发一般主要需要PC上装的操作系统的实现和要做驱动的那个外设的硬件构[52RD.com]
成;而作嵌入式驱动开发很多是没有操作系统的,很多只有一套简单的监控程序,所以需要了解整个板子的硬件构成。这就要求你最起码的几门功课要过关:电路基[52RD.com]
础、模拟电路技术、数字电路技术。这只是个起步,之后呢,如果做控制类的板子肯定要懂自动控制原理、现代控制理论,如果做通讯类的板子肯定要了解通讯原[52RD.com]
理、高级通讯原理、信号调制方面的知识,其中知识的复杂不是两三年能搞定的。据个例子说,做手机驱动的如果连直流漂移都不知道,肯定看不懂硬件资料,能写[52RD.com]
出来代码才怪呢。[52RD.com]    [52RD.com]
驱动程序是小而精的程序,它要求对数据结构、算法、构架、编译原理各个方面都有深入了解和丰富的实践经验。如果做复杂的带有操作系统的板子,那么肯定还要[52RD.com]
了解操作系统的内存管理、线程调度等知识。虽然PC机的开发上有很多常用算法模块已经有很优化实现,但是这些代码往往不能直接套用在嵌入式设备的代码里,[52RD.com]
原因可能因为这段代码太大、太全、或者不符合项目的要求。嵌入式设备的RAM很小,因此我们编写代码必须仔细把握大小,甚至要关注到Byte级。嵌入式系[52RD.com]
统承受不了很多冗余的代码,所以很多常用算法都没有现成合适的函数库,需要你重新实现,根据硬件有针对性的重新编写。因此,精湛的编码技术、周密的代码规[52RD.com]
划都是必备的基本功。[52RD.com]    当然最为重要的还是综合能力。比[52RD.com]
如一串口程序握手时出现错误失败了,原因可能有很多:线断了?接头脱焊了?程序有问题?芯片中代码有问题?等等等等。要做出判断很难。这时候我们就应该具[52RD.com]
备审查入微的能力,要能仔细判断出问题出在那,或者给出若干种Debug问题的方案逐个去突破。一般来说,我认为在开发过程中用脚本来辅助开发是一种效率[52RD.com]
很高的手段,比如windows下的wsh或者linux的shell[52RD.com]
script都能够用来辅助代码的生成,或者用于构建自动测试环境。另外,由于做的很底层,技术很前卫,所以很多情况下我们手头上只有一些硬件的电气资[52RD.com]
料,或者有一大篇别人编写好的代码去参考。这时候,自学很重要,独立分析别人代码的能力也很重要。诸如SlickEdit、SourceInsight之[52RD.com]
类的辅助分析工具一定要熟练运用才行。(不过,幸好这些东东看看联机帮助就能搞定了,并不复杂)[52RD.com]    [52RD.com]
整个研发中最最需要必备的能力就是外语能力了,尤其是英文。因为几乎所有的硬件资料都是纯英文的,等待别人翻译成中文根本不可能(翻译出来估计也都过时[52RD.com]
了),甚至有些是硬件厂商提供的绝密资料,能指望谁翻译去?我觉得外语能力也是我今后最需要加强的,至少应该以下4点:1)[52RD.com]
不借助词典能够基本看懂英文技术文档;2) 老外开讲座的时候能够跟得上并随手做笔记;3)[52RD.com]
用英文写工作总结轻松自如,写代码注释表述精确无误;4)和老外电话或者当面聊天很顺当。[52RD.com]
[52RD.com]
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××[52RD.com]
[52RD.com]
感觉咱们这个论坛怎么这么冷清,上面的引用一位版主的帖子,发起一个话题,给大家增加点热气。我做驱动两年了,认为做驱动在不同的公司会是不同的层次,引[52RD.com]
用的这个帖子可能要求太高了,应该是平台提供商做的层次,我认为处于design house这个层次的话,做驱动需要以下的知识背景:[52RD.com]
[52RD.com]
1、语言基础[52RD.com]
[52RD.com]
ASM,C,C++,c语言必须要熟悉,(我不说精通),因为驱动大部分都是c写的,因此你首先要看懂别人的代码,才能集百家之长。这只是入门条件哦,如果要深入的话,估计到时候自己就知道自己的差距在哪里了。[52RD.com]
[52RD.com]
2、硬件基础[52RD.com]
[52RD.com]
模拟电路,数字电路,肯定是要有基础的。因为做驱动肯定要与大量的datasheet打交道,没有这点知识背景,连电路图都看不懂,估计会很吃力的。[52RD.com]
[52RD.com]
3、英语能力[52RD.com]
[52RD.com]
至少能看懂datasheet和技术资料吧,哈哈,别的就不说了[52RD.com]
[52RD.com]
4、工具的使用[52RD.com]
[52RD.com]
souce in signt,TRACE32,示波器,等等等,分别是代码编辑工具,仿真调试工具,硬件调试工具,这应该是我们debug时候的朋友了,当然还有更好用的工具,就要看你公司的状况了,当然高手也不一定必须用这些工具,不过善假于物,总会事半功倍的![52RD.com]
[52RD.com]
[52RD.com]
[52RD.com]
不敢称是一家之言,小小体会。欢迎大家交流。[
原创粉丝点击