找回密码
 注册
搜索
查看: 6905|回复: 52

[讨论] 做驱动的知识背景

[复制链接]
发表于 2006-3-24 11:19:00 | 显示全部楼层 |阅读模式
写驱动程序必须了解硬件机理。与PC机的驱动程序开发不同的是,PC上的驱动程序开发一般主要需要PC上装的操作系统的实现和要做驱动的那个外设的硬件构
成;而作嵌入式驱动开发很多是没有操作系统的,很多只有一套简单的监控程序,所以需要了解整个板子的硬件构成。这就要求你最起码的几门功课要过关:电路基
础、模拟电路技术、数字电路技术。这只是个起步,之后呢,如果做控制类的板子肯定要懂自动控制原理、现代控制理论,如果做通讯类的板子肯定要了解通讯原
理、高级通讯原理、信号调制方面的知识,其中知识的复杂不是两三年能搞定的。据个例子说,做手机驱动的如果连直流漂移都不知道,肯定看不懂硬件资料,能写
出来代码才怪呢。[52RD.com]   
驱动程序是小而精的程序,它要求对数据结构、算法、构架、编译原理各个方面都有深入了解和丰富的实践经验。如果做复杂的带有操作系统的板子,那么肯定还要
了解操作系统的内存管理、线程调度等知识。虽然PC机的开发上有很多常用算法模块已经有很优化实现,但是这些代码往往不能直接套用在嵌入式设备的代码里,
原因可能因为这段代码太大、太全、或者不符合项目的要求。嵌入式设备的RAM很小,因此我们编写代码必须仔细把握大小,甚至要关注到Byte级。嵌入式系
统承受不了很多冗余的代码,所以很多常用算法都没有现成合适的函数库,需要你重新实现,根据硬件有针对性的重新编写。因此,精湛的编码技术、周密的代码规
划都是必备的基本功。[52RD.com]    当然最为重要的还是综合能力。比
如一串口程序握手时出现错误失败了,原因可能有很多:线断了?接头脱焊了?程序有问题?芯片中代码有问题?等等等等。要做出判断很难。这时候我们就应该具
备审查入微的能力,要能仔细判断出问题出在那,或者给出若干种Debug问题的方案逐个去突破。一般来说,我认为在开发过程中用脚本来辅助开发是一种效率
很高的手段,比如windows下的wsh或者linux的shell
script都能够用来辅助代码的生成,或者用于构建自动测试环境。另外,由于做的很底层,技术很前卫,所以很多情况下我们手头上只有一些硬件的电气资
料,或者有一大篇别人编写好的代码去参考。这时候,自学很重要,独立分析别人代码的能力也很重要。诸如SlickEdit、SourceInsight之
类的辅助分析工具一定要熟练运用才行。(不过,幸好这些东东看看联机帮助就能搞定了,并不复杂)[52RD.com]   
整个研发中最最需要必备的能力就是外语能力了,尤其是英文。因为几乎所有的硬件资料都是纯英文的,等待别人翻译成中文根本不可能(翻译出来估计也都过时
了),甚至有些是硬件厂商提供的绝密资料,能指望谁翻译去?我觉得外语能力也是我今后最需要加强的,至少应该以下4点:1)
不借助词典能够基本看懂英文技术文档;2) 老外开讲座的时候能够跟得上并随手做笔记;3)
用英文写工作总结轻松自如,写代码注释表述精确无误;4)和老外电话或者当面聊天很顺当。

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

感觉咱们这个论坛怎么这么冷清,上面的引用一位版主的帖子,发起一个话题,给大家增加点热气。我做驱动两年了,认为做驱动在不同的公司会是不同的层次,引
用的这个帖子可能要求太高了,应该是平台提供商做的层次,我认为处于design house这个层次的话,做驱动需要以下的知识背景:

1、语言基础

ASM,C,C++,c语言必须要熟悉,(我不说精通),因为驱动大部分都是c写的,因此你首先要看懂别人的代码,才能集百家之长。这只是入门条件哦,如果要深入的话,估计到时候自己就知道自己的差距在哪里了。

2、硬件基础

模拟电路,数字电路,肯定是要有基础的。因为做驱动肯定要与大量的datasheet打交道,没有这点知识背景,连电路图都看不懂,估计会很吃力的。

3、英语能力

至少能看懂datasheet和技术资料吧,哈哈,别的就不说了

4、工具的使用

souce in signt,TRACE32,示波器,等等等,分别是代码编辑工具,仿真调试工具,硬件调试工具,这应该是我们debug时候的朋友了,当然还有更好用的工具,就要看你公司的状况了,当然高手也不一定必须用这些工具,不过善假于物,总会事半功倍的!



不敢称是一家之言,小小体会。欢迎大家交流。





[br]<p align=right><font color=red>+5 RD币</font></p>
发表于 2006-3-24 12:06:00 | 显示全部楼层
强烈支持楼主,这种帖子真是太好了
做手机驱动确实需要很广的知识面
点评回复

使用道具 举报

发表于 2006-3-25 17:46:00 | 显示全部楼层
有点理想化,不过还是有道理的
点评回复

使用道具 举报

发表于 2006-3-26 13:08:00 | 显示全部楼层
<P>还是需要环境,和工具支持,需要团队,单个人没法实现自学啊。</P>
点评回复

使用道具 举报

发表于 2006-3-28 11:23:00 | 显示全部楼层
<P>精辟.</P><P>我就是做软件时间太长了, 硬件知识都忘掉了, 所以现在写驱动比较吃力.</P>
点评回复

使用道具 举报

发表于 2006-3-28 11:56:00 | 显示全部楼层
厉害,看来差距还很大!!有目标了!!
点评回复

使用道具 举报

发表于 2006-3-30 18:06:00 | 显示全部楼层
<P>看样子我这么多年的驱动是白做了,连一半的功力都达不到。</P><P>其实写驱动根本没多少复杂,基本上硬件厂商会有参考代码</P><P>实际上对软件基本功的要求远大于硬件,</P>
点评回复

使用道具 举报

发表于 2006-3-31 12:41:00 | 显示全部楼层
楼上的这么说也对,现在都是在应用,真正的开发已经算不上[em03]
点评回复

使用道具 举报

发表于 2006-4-16 20:53:00 | 显示全部楼层
总结的还是可以的啊,把握整个环境的背景还是很重要的
点评回复

使用道具 举报

发表于 2006-5-4 12:32:00 | 显示全部楼层
经典好文呀。有点头绪了呢
点评回复

使用道具 举报

发表于 2006-5-11 15:20:00 | 显示全部楼层
<P>在看到这篇文章的时候,我才发现做技术也并不是那么好做,做什么都要从基础的做起,我是做MTK平台的,虽然我入行不长时间,需要的学的东西还很多,但是我觉得这篇文章是我未来努力奋斗的目标了,也是我要埋头苦干的时候了.谢谢楼主的文件,</P><P>我还想提一个非常菜的问题:关于调试LCD的问题,能不能把调试的步骤例一下呢,我一个刚入行这一行两个月的学徙,希望得到楼主的指导.我的MSN是:steven_ssc437@hotmail.com</P>
点评回复

使用道具 举报

发表于 2006-5-16 13:06:00 | 显示全部楼层
周期太长了
现在公司都是短、频、快啊
点评回复

使用道具 举报

发表于 2006-5-17 10:58:00 | 显示全部楼层
<P>我也深有体会啊 两位搂主有道理</P>
点评回复

使用道具 举报

发表于 2006-5-18 11:18:00 | 显示全部楼层
一般IC的驅動程式,IC Provider都會提供,有Bug可用scope or logic analizer量一下訊號,可加快debug的速度。
点评回复

使用道具 举报

发表于 2006-5-18 15:38:00 | 显示全部楼层
<P>这样的话太恐怖了,搞得我一点自信都没有了。。。</P>
点评回复

使用道具 举报

发表于 2006-5-20 23:14:00 | 显示全部楼层
<P>好.今天的楼主就是明天的我!!!~</P><P>I HOPE!!~!</P>
点评回复

使用道具 举报

发表于 2006-5-21 17:20:00 | 显示全部楼层
努力ing
点评回复

使用道具 举报

发表于 2006-6-6 14:39:00 | 显示全部楼层
看了文章俺还差很远哦!
点评回复

使用道具 举报

发表于 2006-6-12 22:59:00 | 显示全部楼层
<P>我现在感觉到我知道还没有一半啊 </P>
点评回复

使用道具 举报

发表于 2006-6-13 12:58:00 | 显示全部楼层
顶,很不错的帖子!
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-7-2 13:17 , Processed in 0.056797 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表