很多人问我嵌入式到底是什么,是不是很难学,学了嵌入式能做什么?总之这群人认为嵌入式是一个神秘的学科,呵呵。
个人认为嵌入式Linux是一条漫长的路,并不是短短的几个月就可以搞定,在学习的过程中还要不断的循序渐进,积累知识,虽然网上有一大堆的学习资料,但是个人认为学习还是要有自己的一套学习方法,别人可以给你指路,但是并不会带你走向成功,到最后还是靠自己。
总结网上的几点学习经验,个人非常的赞同:
(1)、学习linux系统的安装、常用命令、应用程序的安装。
(2)、学习linux下的C编程,本人写了很多代码还是发现在windows下的C跟linux下的有些不同之处,学习linux编程有些书籍还是必须要看的,就相当与你需要用key去打开linux的大门,推荐几本好书:《UNIX 环境高级编程》、《UNIX网络编程》,如果想成为C语言高手你就要好好的去研读《C 和指针》、《C 缺陷与陷阱》、《高质量C/C++编程指南》、《C 专家编程》、《The C programming Language》,这些都是非常经典的书。没那有金刚钻就别揽瓷器活,这是忠告。一定要把语言学好了。
(3)、程序员要掌握的基本技能数据结构,嵌入式程序员也不例外,数据结构必学!各种算法、排序方式、链表等能够让你在编程的时候有全新的思路,熟练掌握这些知识可以给你在编程的时候带来很大的方便。
(4)、嵌入式底层开发人员则需要学习:微机原理、计算机体系结构。
(5)、单片机是我从事软件开发第一次碰到的MCU,从单片机中我们可以了解如何去操作一个硬件,非常有必要学习下,因为一开始就从ARM入手,我认为会让你非常的迷茫,有点不太现实。
(6)、学习ARM体系结构,其中的ARM汇编一定要去了解下。
(7)、数字电路个人认为还是有必要学习的,不然你在做底层开发时会不知所措,至少肯定看不懂原理图,这个起码也要懂一个与或门,呵呵。
(8)、ARM+Linux应用程序开发,我认为这时有必要买一块开发板,虽然也有很多解决方案比如ARM模拟器Skyeye解决方案(我的博客里有“天眼”的解决方案)可以让你省下一笔开发板的开销,但是有必要自己动手实践操作一下。
学到这里,你才勉强算是在嵌入式Linux这个行业有了初步的入门,初出茅庐总免不了想要大展一下身手,你会遗憾的发现这远远不够!我曾今在这一阶段徘徊了很长时间,主要是发现后续要学的东西好多不知该从何处入手。
(9)、要做嵌入式底层开发,就必须知道软硬件之间是如何通信、衔接和配合工作的,那么电子技术应该好好学习下,很多时候还是需要用到模拟电路知识,这是区别好手和菜鸟的不同之处,以前看到过一个没有学过这方面只是然后直接做串行的朋友,死活发不出数据,最后发现没有共地。
(10)、Linux下的汇编要学习,这样你就可以把你的Linux内核移植到任何一个特定的硬件上跑了。学会内核的移植和UBOOT的移植也非常的重要。虽然很多开发板买来的时候官方已经给你提供了一套完整而稳定的系统,但是有必要自己学习下移植系统,在这过程中你会学习到很多知识。
(11)、所有的嵌入式高手需要掌握的一门技能就是各种协议,比如TCP/IP、SPI、IIC、USART、USB等这类各类协议和Socket网络编程。掌握这些东西并不是一下子就可以搞定的,需要长期的积累,其实在学习单片机期间就开始接触这类东西了。
(12)、有了各类协议的知识,拿下Linux驱动已经不在话下、需要你去学习Linux内核源代码和Linux驱动程序设计,前期不要被Linux的内核源文件给震撼了,我现在所使用的Linux内核版本3.3.5经过编译之后已经达到了4万多个源文件,当然其中大多数是驱动源代码文件和编译项目,理清Linux内核源代码是首先要做的事情。这个学习过程是一个技术升华,看Linux内核源代码可以让你在编程上有很大的提高(前提是你要有良好的C语言功底,不然很难看懂)。技术升华也是一个漫长的过程。
讲到这里我想,应该到达Linux世界的中级人物了。我可以说还在Linux内核的世界了游荡,简单驱动已经不再话下,特别是USB驱动学起来可以说是难上加难。
(13)、学习音频、视频编解码技术。
(14)、各种IC、各种bootloader你能够参与其中的开发和设计。
(15)、自行设计开发新产品、新技术。
(16)、.............................
我还没有到这么高的境界呵呵,我想学到这里你已经是一个Linux高手了,至少是世界级的嵌入式Linux人物了。
学习这些东西要靠自学入门,说实话这个路程实在太漫长了。真正的嵌入式入门门槛还是比较高的,学习之前要有充分的心里准备,进培训机构学习也是有必要的(除非有人手把手教你),我在培训机构当助教期间发现,培训不一定就意味着你真能学好,能找到好的工作,要因人而异,能入门就算不错了。主要是靠个人,你要有自己的一块开发板,你就有必要投入一笔钱,还有各类书籍你也得花钱买,这些钱还是不能省的。最重要的一点,自己做要喜欢嵌入式,喜欢专研,能够静下心来研究要有耐心。
本人算是自学Linux成长起来,但是这个路实在是太漫长了,无数次的失败和再次站起来已经数不清了,不知道渡过了多少个不眠之夜,至少每晚睡觉时间都在12点以后,寒暑假继续学习。学习Linux这个过程就是一个在自学中成长的过程,最终我要想成为Linux高手还是的靠自学,多多分享,多多总结自己的学习过程。
本人今年就要毕业,即将走入一个真正的社会去走我未来的Linux之路。