在2000年前后,嵌入式软件工程师有着一套非常具体的技能,他们通常是电气工程师,不仅了解底层硬件的工作原理,还可以再底层编写汇编代码或者C语言代码,以使系统满足实时需求。嵌入式软件工程师不仅要了解诸如C语言的软件开发,还要了解硬件。位、字节、寄存器的世界,正是嵌入式软件工程师的领域。
但是如今不再那么简单了。
在早期,嵌入式开发人员通常使用 8 位或者16位的体系结构,这些结构比较简单,因此开发人员一般在几个月的开发周期内便能掌握这些结构。
但是近些年来,许多嵌入式开发团队已经转向更加复杂的 32 位体系结构,不仅包括一些用于数据采集的采样传感器,以及外围的通信设备,还包括日益繁多的各种协议,例如 USB、DMA、 TCP/IP、蓝牙等。这些复杂的体系架构,或者相关的通信协议,开发人员往往需要数年才能真正的完全掌握。
嵌入式系统已经变得复杂
显然,嵌入式系统已经变得极其复杂。将硬件设备连接到互联网,以创建物联网的巨大需求,在以往传统的嵌入式C语言程序开发中是没有出现过的。所以,这一“巨大需求”导致了一个真空——相关公司找不到足够的嵌入式C语言软件开发工程师了。
为了应对“真空”,有些公司并未大力培养嵌入式C语言软件工程师,而是开始依赖具有Windows应用程序或者移动设备程序开发经验的人员来开发他们的实时嵌入式软件。这会导致另外一个较为致命的问题出现:这些开发人员大都只了解公司分配的任务所需的高层应用程序框架,对底层硬件却不够了解。
这样的公司并不在少数。因此微控制