嵌入式的成长之路

对于嵌入式来说,C语言是一个工具。

如应该掌握C语言:C语言基础部分的难度并不大,只要有时间,估计正常的初学者1-2个星期的认真学习,就可以掌握基本语法和语句。

C语言的关键在于“数据结构”,例如:链表、图、位、树等等,这些都是实际工作中变化性比较大的知识点,但是实际工作中,根据你的工作类别,要求并不会非常高。

还应掌握什么基础:当你的C语言(包括数据结构)等有了一定的知识积累,那么你就可以学习系统编程和网络编程了,这是日后应用类程序开发公司比较常用的知识点。

然后就是学习汇编语言、C++、内核、嵌入式系统开发等,当然,你的操作平台首先是需要你了解的,基本上常用的是linux平台,而你对linux的熟悉程度,也需要时间的积累,以上这些知识都不是几天、几个星期或者几个月就可以完全掌握的,要根据你未来想从事的工作具体去学习,因为每一个知识点都可以工作。

数据库 :如果你会当然最好,基本上一般工作单位不会要求你学习,因为毕竟嵌入式开发跟数据库开发是两个不同的类别。最后送你一句话:请根据自己的实际情况考虑是否进入这一行,因为如果你想从事嵌入式开发工作,以上说的每一个知识点你都需要掌握,这是一个非常漫长的过程,不要心急,多看好的参考书,不要乱看书。

推荐你基本书:C语言初学者——谭浩强《C程序设计》、C语言进阶者——Stephen Prata《C Primer Plus》、系统和网络编程初学者——童永清《Linux C编程实战》、系统和网络编程进阶者——W.Richard Stevens/Stephen A.Rago《UNIX环境高级编程》。

 你可以尝试以下路线:

(1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本。

(2) 操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。

(3) Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。推荐书籍:《UNIX环境高级编程》(第2版)

(4) 了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。

(5) 系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。

(6) 驱动开发linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。

只要能坚持下来一定会取得成功!

原文地址:https://www.cnblogs.com/linux-huYZ/p/3224898.html