硬件基础到底要补到什么程度呢?
大家好了,从毕业到现在我做Driver开发已经几个月的时间了,做的内容就是按照Datasheet的内容来设定寄存器(例如完成无线芯片的某个功能,看懂寄存器,设置寄存器,然后测试功能是否有了就OK了)可能是由于工作中暂时没有用到<数电、模电、信号>等知识,所以暂时对这些东西有些怀疑,即使如此,但是我还是知道<数字电路中的时序这个概念>在驱动中还是相当重要的,一定要能看得懂时序,只是目前工作暂时还没有涉及到这么底层的东西。
先问一个问题吧:
既然Driver开发就是按照Datasheet里面的规定来设定寄存器,为什么还要看得懂电路图?我们只是从供应商那买了一个芯片,芯片的原理别人也不会告诉我们啊,那我们还要看懂什么电路图?(硬件工程师可能要把芯片装到板子上,但是软件工程师没有相关事情可以做吧?)
再问一个问题:
我知道我问上面的问题,对于一个驱动开发人员有些不负责任,只是我在大学里面这方面的课程没有学好,所以我打算要长久地补下去,但是在这补习的过程中,我想先把Driver开发中用到的”数电”,”模电”,”信号”相关的地方告诉我(就像数电中的“时序”一样),让我至少可以应付下工作(不能让别人瞧不起自己)
硬件基础差,要补习内容太多,任重而道远啊,希望在校同志们引以为戒啊。
大家就照顾照顾新手,多多发言哈。
[ 本帖最后由 qiangqiang02 于 2009-11-11 18:51 编辑 ] 我也有相似的困惑.
不过我觉得驱动的层分很多,如果是系统级以上的,主要补计算机体系结构,处理器,汇编,总线原理等,主要集中在软件层面上,如通信协议之2-3层.如果驱动的涉及到一些物理传输特性上,那就加些下面的概念,这个无须太深入.
还有种就是驱动控制的,控制的设计到模拟特性,那就多些具体的模拟电路方面的专业知识,不过这已经是带硬件特性了,在软件上算不得系统.
另一种就是高速数字硬件直接打交道的软件如dsp,网络处理器的微代码编程,这些基本也不讲究软件系统工程,还是归在硬件里.
你前面讲的那些比较杂,原则应该是工作需要什么就学什么.
至于无线芯片和传输原理,无线信号原理,如果不是做芯片不需要了解很精确.,但是初步的概念有助你的工作,比如遇到信号质量差,传输效应差,即使不是你工作的范围,当问题压到你头上时,你也可以成功的退避之.
回复 #1 qiangqiang02 的帖子
我觉得看你在扮演一个什么样软件工程师的角色,为什么要看得懂电路图?给你一块板子,一张电路图,让你在上面跑一个OS,并把驱动都弄起来。你觉得不需要看电路图么?哪个外设接哪个管脚,哪个接口又该怎么控制,都是基于电路图来的。当然,如果你想做的更深一些,给你一个产品设计的雏形,让你去选择芯片、外部设备等,你可能还涉及到要画电路图了,所以,这个要求是看你在做什么样的工作,以及你的职业规划了。偏软一点,就往OS方面走,把OS弄得通一些,写驱动才能真正的得心应手。 还是学学fpga和dsp的知识吧,有其实fpga,基本上fpga会了,就明白多了
回复 #1 qiangqiang02 的帖子
如果你做的系统里离散原件比较多,模拟部分比较多,那么你要看懂电路图,因为你才知道“对这个I/O口置一会产生什么效果,置零又会产生什么效果”,甚至芯片手册里并不会说置零置一会对这个I/O Port怎样怎样,它只会画出这个I/O口其实就是个推免三极管,置1就是基极到3.3伏,所以电流从集电极(I/O外的那个引脚)导通到射极接地,是吸电流的,所以,这个发光二极管就亮了.你也许会说,用得了这么麻烦?做硬件的可以告诉我啊,但你不觉得这点小事都去麻烦他们不会让人觉得很naive.楼下的说得对,大部分都是控制系统才需要这样.就是那些16位单片机做的工控啊之类的产品.单片机嘛,主要就是起控制作用的.还有就是地址解码,你怎么知道你的外置DRAM的总线地址是多少?当然这个很简单了,学过微机原理就行.你举的无线的例子我没做过,但我做过图形芯片驱动,和你说的差不多,这类非控制类的确实不需要看电路图,更重要的是domain knowledge,比如图形芯片就是opengl,你配置那些寄存器就是为了能让它能输出正确的像素到framebuffer中,和电路图没啥关系...而那些寄存器总是能和domain knowledge如opengl, directx一一对应的.无线的应该也差不多. 谢谢大家的回复,感觉受益良多,期待新的回复,毕竟这东西对一个初学者来说还是很值得关注的东西。 这么快就没人回复了?:shock:
页:
[1]