嵌入式开发模式,求前辈们分享看法和心得、、
我是今年今年刚毕业的菜鸟,想往嵌入式发展,在校时只学过C语言,单片机、模电、数电自动控制等课程。本科是非科班出身的,现在的想自学嵌入式,目前正在就着天嵌TQ2440的开发板学习内核移植的东西。今天到一个做嵌入式产品的公司参观学习,是做交换机和路由器的,也跟他们请教了些嵌入式开发的一些问题。他们说现在的嵌入式开发的模式和从前不一样了,现在都是搭积木式的开发。卖芯片的人会提供驱动等一系列相应模块的源代码。除非他给的驱动出问题了才去debug,或者他给的源码不能满足自己要求才会去做相应的改进,如果有的功能模块没有也是先到网上下一些源码然后再整合进去。而且现在没有公司专门分做驱动,做系统,做应用,一般都是全做的,即一个工程师可以玩转整个产品,整个开发过程工程师们要做的更多的是前期的评估,中期的整合,和后期的测试等等。整个过程不需要嵌入式软件开发工程师写多少代码。
而关于嵌入式的学习他们说基本上都是linux编程比较多,他们建议如果我要自学嵌入式的先看《linux程序设计》和《Unix环境高级编程》,然后如果想往驱动走的话再看《linux设备驱动程序》,往应用的话则要看从事什么行业,做什么产品。
各位前辈们,望多多分享你们的看法和心得,给菜鸟一点指导。我真心的感谢今天和我分享这些东西的工程师们,我不是对他们的话持怀疑的态度才又在这里发帖的,我只是想更全面的了解一些,真心求指导啊、、、
[解决办法]
作为有个多年开发经验的通信设备嵌入式开发人员我来说几句吧,我刚开始工作时第1年基本上是打杂,改改应用程序,做做一些手工测试。从第2年开始正式接触到完整的嵌入式系统(非Linux),而这个系统BSP基本上不需要更改,解决方案提供商已经提供了现成的demo,我们唯一需要做的只是在上层改应用程序,虽然只是更改没有编多少代码,不过阅读的代码量可就大了许多,也正是通过这个项目接触到嵌入式系统的方方面:bootloader,RTOS,driver,TCP/IP Stack。第3年才又回到嵌入式Linux,也是先从应用层开始,慢慢深入到kernel,改driver, 改bootloader,优化协议栈,netfilter防火墙,到目前自己能独立编写driver,基本上从应用层到内核都能独当一面。感觉个人的发展也要看机遇和公司环境,国内的公司基本上都买现成的解决方案来做二次开发,所谓的解决方案就是Turnkey Solution,包含从bootloader,kernel,driver到application,WEB UI都给你做好了,而所谓的设备商只需要拿过来做做定制,改改UI换下logo把产品包装一下就卖出去。外企普遍要好一些,Intel,qualcomm,WindRiver,Fujitu,EMC什么的,做的东西还是有技术含量的,可以接触到核心的东西。当然不同的公司对业务层面的偏重不一样,通信设备商偏重于各类协议,通信知识,要求对协议栈的了解比较深刻。而像EMC这种存储厂商偏重于存储,要求熟悉Filesystem。不管什么厂商,只要他要求嵌入式Linux开发人员,对kernel有深入了解的人都是他们prefer的。所以,我的建议是先application后kernel,只有对应用层编程熟练后,再进入kernel才能水到渠成易于理解,反过来对kernel的理解也会帮助你更好的写应用层程序。
[解决办法]