电子数字计算机诞生于1946年,在其后漫长的历史进程中,计算机始终是供养在特殊的机房中,是只能实现数值计算的大型昂贵设备。直到20世纪70年代,微处理器的出现,计算机才出现了历史性的变化。以微处理器为核心的微型计算机以其小型、价廉、高可靠性特点,迅速走出机房;基于高速数值解算能力的微型机,表现出的智能化水平引起了控制专业人士的兴趣,要求将微型机嵌入到一个对象体系中,实现对象体系的智能化控制。现在你看到到的一些智能设备大多数都是嵌入式开发出来的,可以说嵌入式无处不在。
嵌入式的发展大大改善了人们的状态,人们可以让机器代替我们去生产,也可以使用更先进的设备来娱乐生活,让我们的生活变得更智能化,可以说嵌入式代表着最先进的生产力。而未来对智能设备和自动化设备的需求肯定也是越来越高,毕竟人总是懒惰的,也总是爱享受的,机器干活了人就可以歇着了,更高端的智能设备也能丰富人们的生活,所以成为一名嵌入式工程师常有前途的!
要学习嵌入式就要先学习C和C++这两门编程语言。其实要成为“代码搬运工”,我觉得还是很简单的,为什么呢?编程语言其实也是语言,我们只要将要执行的动作翻译成芯片的语言就可以了。举个例子我们要拿起一个苹果,但是我们不是自己去拿,我们要让一个只听得懂英语的工人去拿,怎么办呢?你要用英语告诉他“pick up this apple”,只有这样讲他才会去拿起苹果;现在我们把这个工人换成了只听得懂C语言的芯片,你该怎么办呢?同样的,你要用C语言告诉芯片去拿起苹果,道理都是一样的,只是C语言有C语言的用法,我们只要按着他的规则写就OK了。
对于嵌入式底层工程师来说,我们要学习的不仅仅是C语言的基本语法,更重要的是如何通过C语言这个工具,去理解我们的计算机系统、CPU架构:
5)不同的开发平台、IDE、编译器,C语言的编程有何差异和不一样的地方,如何做到跨平台、增强程序的可移植性和鲁棒性?
搞懂了这些语言背后计算机系统知识,还远远不够,还要去学习操作系统相关的知识:进程、线程、中断、内存管理等。
对于嵌入式开发来说,还要学习ARM等处理器架构知识、GCC编译器对C标准的各种扩展,各种生僻的用法,否则你去看linux内核代码、驱动代码,总感觉“怪怪的”,好像哪里不对,跟平时的C语言不太一样,感觉自己学的是一门假C语言......
C语言的精华是内存、存储管理。各种隐藏很深的bug其实也跟内存有关:内存越界、内存泄露、维基解密黄菊自杀野指针等等,一个不经意的疏漏,就可能阴沟里翻船。就是有多年工作经验的工程师也不敢自己写的代码一定没有问题。C语言默认大家都是大牛、计算机专家,可惜现实中往往太多挖坑小能手,太多猪一样的队友。如何养成良好的编程习惯,避免各种bug,也是C语言进阶学习的一个重点。千锋教育的嵌入式学习大纲,内容很丰富,学习的同学可以参考,想了解更多实战的项目信息可以登录千锋教育官网查询。