其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。
还有应该学习嵌入式系统,如linux 或者wince 下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、 Android 等操作系统,Android 是以后发展的趋势,现在很热门,Android 也是基于linux 系统封装的,所以建议先学习下linux。
还有应该学习下单片机或者ARM 或者MIPS,很多人说我没有单片机的经验,直接学ARM 可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM 就更简单了。
最后如果你把以上的知识都有所了解后,就该去阅读一些优秀的代码,比如结合 arm 芯片手册学习去学习下 UBOOT 的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux 的源代码,当然如果你直接阅读2.6 的代码,我想你会很痛苦的,可以先看看 linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程师。
至于上面说的知识如何学习呢?每个人都应该去找自己最好的方法,所谓的最好的方法就是最适合自己的方法。很多人看不进书,那就去看看视频吧。视频也应该要选择,不是随便看看,应该要有所选择,有所挑选。
其他:
要懂较底层软件(例如操作系统级、驱动程序级软件)
对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高)
必须懂得硬件的工作原理
嵌入式应用程序工程师和底层的驱动内核工程师两种。 后者是一个公司真正的技术核心。
比如学习嵌入式开发,就要从基础Linux,C语言,数据结构开始,到ARM,汇编,Linux内核、驱动等,更重要的是更多的项目练习, 设计至少5个项目,多达10000行强制核心代码的编写可以让你真正获得知识。