做嵌入式驱动的前途何在
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
做嵌入式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
相关文章推荐
- 做嵌入式驱动的前途何在
- 做嵌入式驱动的前途何在
- 做嵌入式驱动的前途何在
- 做嵌入式驱动的前途何在
- 做嵌入式驱动的前途何在
- 做嵌入式驱动的前途何在
- 做嵌入式linux驱动的前途何在
- 在嵌入式学习困惑:做驱动开发还是做应用开发更有前途
- 嵌入式驱动开发之usb 无线网卡驱动---RT2870STA dm368
- 嵌入式驱动开发的前期Linux 和C学习(二)
- 嵌入式学习-驱动开发前奏-lesson3-linux内核链表
- 做一个理直气壮的嵌入式驱动开发者
- 嵌入式学习-驱动开发-lesson4-按键混杂设备驱动
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- 嵌入式Linux驱动——SPI子系统解读(一)
- 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一)
- arm嵌入式开发之ramdisk与IDE驱动
- 嵌入式linux下CC1101的驱动 arm9 tq2440开发板
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】中断服务下半部之tasklet详解
- 基于S3C2440的嵌入式Linux驱动——Framebuffer子系统解读