1.7 基于单片机的嵌入式系统和基于复杂操作系统的嵌入式系统的区别
嵌入式系统定义为以应用为中心,以计算机技术为基础,软硬件可裁剪,以满足用户对功能、可靠性、成本、体积、功耗等的严格要求的专用计算机系统。我们现在只讲基于单片机的嵌入式系统(简称单片机)和基于复杂操作系统(如Linux操作系统、Android操作系统,分别简称Linux系统、Android系统)的嵌入式系统的区别。
1.7.1 芯片平台对比
主流的单片机平台有51单片机、PIC、STM32、AVR、MSP430等。现在很多公司仍使用单片机来开发产品。科技发展得越来越迅速,基于复杂操作系统的嵌入式系统的应用随之越来越强大、使用得越来越广泛,如今主流的平台有ARM、PPC、MIPS等。
1.7.2 片上资源、价格、应用领域上的对比
单片机的片上资源有限,价格低,主要应用在小家电、终端设备、需要实时控制的系统等上面。从性能和价格来看,单片机的应用非常广泛。基于复杂操作系统的嵌入式系统使用的芯片的片上资源丰富、价格较高、应用领域广,如智能手机、平板计算机、游戏机、路由器、摄像机、智能电视机、广告机、智能手表、收银机等,这些应用领域一般都需要比较复杂的系统。
1.7.3 开发模式对比
单片机开发多使用裸机,程序规模小,常由单个软件工程师独立开发。有些复杂产品也会使用STM32之类的高性能单片机,并使用实时操作系统(µC/OS、FreeRTOS等)。然而基于复杂操作系统的嵌入式系统几乎全部基于复杂操作系统来开发,目前使用最多的是Linux系统和Android系统。
1.7.4 技术特征对比
编程语言方面,单片机主要使用C语言(少量用汇编语言),但是它和标准的C语言略有不同。例如51单片机在开发中很少使用结构体、函数指针等,而STM32单片机会使用一些结构体和函数指针。而基于复杂操作系统的嵌入式系统开发较复杂,一般分为底层开发和应用层开发。底层使用C语言,应用层使用C、C++、Java等语言。基于复杂操作系统的嵌入式系统所使用的C语言对结构体、数据结构、算法、函数指针等高级特性使用得比较多。
软硬件组件方面,单片机多涉及一些简单外设,如串口、I2C(Inter-Integrated Circuit,也写作I2C)总线、模数转换器(Analog to Digital Converter,ADC)、液晶显示(Liquid Crystal Display,LCD)屏等;而基于复杂操作系统的嵌入式系统则涉及更多复杂的外设,如网络(有线网卡、Wi-Fi、蓝牙等)、USB接口的外设、音视频编解码器等。
1.7.5 职业发展对比
单片机的学习周期和基于复杂操作系统的嵌入式系统的学习周期不一样。单片机学习路线短,职业发展平缓,薪资很容易达到瓶颈。基于复杂操作系统的嵌入式系统学习路线长,职业生涯久,薪资需多年才会达到瓶颈。