您的位置:首页 > 理论基础 > 计算机网络

做嵌入式驱动的前途何在

2012-07-05 17:36 176 查看
问:

做嵌入式linux驱动的前途何在?

或者说,怎么才能做好这一行?

我做嵌入式驱动开发已经一年多了,感觉没学到多少东西。

从网络驱动到CAN驱动、从dataflash驱动到NAND/NOR FLASH驱动、从CF/IDE驱动到各种嵌入式文件系统、从LCD/VGA驱动到音频驱动、从IAR到ADS再到GCC、Ucos到linux、从I2C总线到SPI再到SSC以及TCP/IP协议,感觉一个字:累!

做了这么多事,很少有驱动是自己动手写的,基本都是找来相近的代码改过来的。

感觉自己现在做什么都是半桶水,对自己超级没信心了现在。对linux也是一知半解,对启动脚本,系统配制,shell、makefile以及应用程序编程,都了解一点点但没有一样精通的;工作主要使用C语言,可是有时候写个测试程序也是一堆错误;英语自我感觉还不错,但是有时候看datasheet也会发懵,唉!

最近驱动一块wm8731花了两个多月了,那东西死活不出一点声音,烦燥死了!

现在好迷惘,不知道大家有没有类似的经历,欢迎各位老大指教!

 

答:

看得出来,你还是做了不少东西的。

我可以给你一些建议:

1) 为了今后的发展,你除了考虑广度以外,更重要的是注意知识的深度。

譬如,做过网络驱动,那么是不是只停留在会写驱动的表层上,有没有对Linux内核的网络结构,TCP/IP协议作过深入的了解。

2) 在Linux下开发很多时候都要利用现成的东西,没必要reinvent the wheel from scratch。关键是变成自己的驱动后是否了解原作者编写时背后的一些东西。 我觉

得不止是简单的让它工作。写驱动的时候就要考虑它的性能问题,并给出测试的方法(当然可以利用现成的许多工具,譬如测试网络性能的netperf等)。

你写过Flash驱动,可能会知道Flash的性能有时候有多重要。

3) C程序的自我修炼,是否考虑到软件工程方面的一些东西,程序的可维护性和扩展性,譬如LCD驱动,是不是从Sharp到NEC的只需要集中修改很少的几个地方?

对于不同品牌的Flash,如果使得Flash的驱动做的更具有灵活性。

4) 如果有时间结余,可以关注Linux内核的发展。譬如LCD的驱动有没有考虑到V4L2通用架构,譬如网络驱动用到了NAPI了吗?当然在此之前,假设已经对LDD3, ULK2理解

的比较熟了。

5) 现在所作的这些驱动还算不得非常核心的东西。如果你想有更好的发展,可以考虑往audio,video,net方面发展(当然你已经在开始看audio了),如果你稍微留意,

会注意到非常多地方都需要这样的人才,主要是因为上述每一项都需要很厚的底蕴,譬如video,需要了解MPEG4, H.264等,怎么也要个1到2年才能算个入行阿,所以我建

议不要只顾闷头做东西,要适当关注目前的一些应用(尽管现在一些名堂很多,什么PMP,V2IP,说到底都与这些有关的,人的世界不就是看和听嘛)。还有一个,这些技能

对以后跳槽也很有利。

6) 对硬件知识的补给,做嵌入式Linux这一行不可能不读硬件的Spec,如果你对硬件的工作机制理解的比较透,会有助你写出性能好的驱动程序。

顺便提一点,适时的提高你的英语水平,对你的职业生涯绝对有帮助(不要等需要的时候再补,来不及)。

7) 如果有时间,平时注意对Linux应用程序编写的了解/积累,也将有助于你写出很好功能很好的驱动程序。

 永远不能以为自己做了很多东西,就驱动而言,像TVIN/TVOUT, USB, SDIO等等,好多未知领域呢。

来源:http://bbs.chinaunix.net/thread-2161454-1-109.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息