嵌入式与单片机的差异究竟在哪?

时间:2026-04-23
  在电子技术领域,单片机和嵌入式是两个经常被提及的概念,但对于它们的区别,并没有一个标准的定义。对于有单片机和嵌入式开发经验的开发者来说,各自有着不同的理解。下面将对这两个概念进行深入探讨。
  什么是单片机
  单片机是一种集成电路芯片,它运用超大规模集成电路技术,将具备数据处理能力的中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、多种 I/O 口和中断系统、定时器 / 计数器等功能(可能还涵盖显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上,构成一个小巧且完善的微型计算机系统,在工业控制领域应用广泛。
  从上世纪 80 年代起,单片机从当时的 4 位、8 位发展到如今 300M 的高速单片机。以经典的 51 系列单片机为例,它外观是拇指大小的长方体芯片,有 40 个引脚,内部包含逻辑运算单元,实际上就是一个 CPU。初接触单片机时,有人会疑惑其为何是黑色,这是受单片机材料的限制。
  对单片机而言,一个芯片就是全部,单片机系统是为保证其正常运作而添加其他元件,如晶振、5V 电源、电感电阻等。不过,系统仅能确保单片机正常运行,几乎无法实现基于单片机的任何应用。为使单片机实现应用,必须添加其他外设,如按键、LED 灯、LED 屏、蜂鸣器、各种传感器等,这也是市面上众多公司制作单片机开发板的原因。
  综上所述,单片机是完成运算、逻辑控制、通信等功能的单一模块,名副其实的 “单” 片机。数字信号处理器(DSP)芯片也可视为单片机,尽管它们性能强大,但功能依然单一,主要用于处理数据和逻辑。
  什么是嵌入式
  一般所说的嵌入式指的是嵌入式系统,美国电气和电子工程师协会(IEEE)对嵌入式系统的定义为:“用于控制、监视或者辅助操作机器和设备的装置”。
  嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,它是一个控制程序存储在 ROM 中的嵌入式处理器控制板。嵌入式系统将应用程序、操作系统和计算机硬件整合在一起,是以应用为中心,以计算机技术为基础,软硬件可裁剪,针对用户应用对功能、可靠性、成本、体积、功耗和使用环境有特殊要求的专用计算机系统。
  实际上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统。有些嵌入式系统包含操作系统,但大多数由单个程序实现整个控制逻辑。这是因为嵌入式系统常用于工业控制,对外设的控制是固定的,无需人工干预,同时也是为保证系统的稳定和可靠。
  在招聘中,常能看到对嵌入式软件工程师或嵌入式硬件工程师的需求,这表明嵌入式系统包括软件和硬件。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
  嵌入式的硬件层
  硬件层包含嵌入式微处理器、存储器(SDRAM、ROM、Flash 等)、通用设备接口和 I/O 接口(A/D、D/A、I/O 等)。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式控制模块,操作系统和应用程序可固化在 ROM 中。
  嵌入式微处理器是,它与一般电脑 CPU 有所不同,大多工作在特定设计的系统中。例如,TI 或者 Atmel 公司有很多定位不同的处理器,Atmel 的 SAM 系列专为物联网设计,AVR 因性能突出,广泛应用于工业领域。
  嵌入式微处理器有各种不同的体系,同一体系中也可能有不同的时钟频率和数据总线宽度,或集成不同的外设和接口。据不完全统计,全世界嵌入式微处理器已超过 1000 多种,体系结构有 30 多个系列,主流体系包括 ARM、MIPS、PowerPC、X86 和 SH 等。与 PC 市场不同,没有一种嵌入式微处理器能主导市场,仅 32 位产品就有 100 种以上的嵌入式微处理器,其选择取决于具体应用。
  在嵌入式领域,ARM 架构的处理器占据重要地位,ARM 公司虽不生产处理器,却提供 IP,体现了一流公司做标准的理念。此外,SPARC、PowerPC 等架构也有较多应用。例如,ARM 公司的 Cortex 系列属于 ARMv7 架构,这是到 2010 年为止 ARM 公司的指令集架构,ARMv7 架构定义了分工明确的三大系列:“A” 系列面向的基于虚拟内存的操作系统和用户应用;“R” 系列针对实时系统;“M” 系列用于微控制器。
  嵌入式系统与外界交互需要通用设备接口,如 A/D、D/A、I/O 等,外设通过与片外其他设备或传感器连接实现微处理器的输入 / 输出功能。外设功能单一,可在芯片外或内置芯片中,种类繁多,从简单的串行通信设备到复杂的 802.11 无线设备都有。嵌入式系统常用的通用设备接口有 A/D(模 / 数转换接口)、D/A(数 / 模转换接口),I/O 接口有 RS - 232 接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA 视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和 IrDA(红外线接口)等,这与单片机类似。
  image
  嵌入式的软件层
  软件层主要指操作系统,包括内核和文件系统,以及更顶层的应用程序。嵌入式操作系统一般是 Linux 或其他类 Unix 系统,还有一些实时操作系统(RTOS),如 VxWorks、RTEMS、ucOS 等。
  Linux 有不同的发行版,如 Ubuntu、Redhat、Debian、CentOS 等,它们采用 Linux 内核,不同之处在于上面的软件和工具。不过,开发者无需过于担心标准问题,这些 Linux 发行版选择的软件大多通用,如网页服务器的 Apache、电子邮件服务器的 postfix、sendmail、文件服务器的 Samba 等,此外还有 Linux Standard Base 等标准规范开发者。类 Unix 系统主要有 FreeBSD 以及 Solaris 等。
  嵌入式领域常用实时操作系统,其是实时性,本质是任务处理时间的可预测性,即任务需在规定时限内完成。IEEE 对实时系统的定义是 “那些正确性不仅取决于计算的逻辑结果也取决于产生结果所花费时间的系统”。
  实时操作系统分为硬实时和软实时,硬实时要求在规定时间内必须完成操作,这在操作系统设计时保证;软实时则按任务优先级尽可能快地完成操作。通常使用的操作系统经过一定改变可变成实时操作系统。
  实时操作系统与 Linux 这种分时操作系统的区别如下:
  多路性:实时信息处理系统与分时系统一样具有多路性。系统按分时原则为多个终端用户服务;实时控制系统的多路性主要体现在对多路现场信息的采集以及对多个对象或执行机构的控制。
  独立性:实时信息处理系统与分时系统一样具有独立性。每个终端用户向分时系统提出服务请求时,操作彼此独立、互不干扰;实时控制系统中信息的采集和对对象的控制也互不干扰。
  及时性:实时信息系统对实时性的要求与分时系统类似,以人能接受的等待时间确定;实时控制系统的及时性以控制对象要求的开始截止时间或完成截止时间确定,一般为秒级、百毫秒级直至毫秒级,甚至有的低于 100 微秒。
  交互性:实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某些特定的专用服务程序,不像分时系统能向终端用户提供数据处理服务、资源共享等服务。
  可靠性:分时系统要求系统可靠,实时系统则要求高度可靠。因为任何差错都可能带来巨大经济损失甚至灾难性后果,所以实时系统采取多级容错措施保证系统和数据安全。
  由于更加可靠和及时,嵌入式实时操作系统在工业控制、航空航天、军工等领域应用广泛,如美国航天局(NASA)近几年发射的火星探测器采用的是 RTEMS 实时操作系统。
  嵌入式的中间层
  中间层是软件层和硬件层之间的接口层,严格来说属于软件层,开发者通常称之为板级支持包(BSP)。这一层主要负责向下提供硬件驱动、硬件配置等操作,向上向软件开发者提供标准 API,进行中间层开发的开发者通常被称为嵌入式驱动工程师。
  由此可见,嵌入式设计与软硬件都密切相关,开发者既要掌握底层硬件特性及驱动方法,也要了解操作系统相关知识,才能编写相应功能的应用。判断一个操作系统是否支持某个芯片或开发板,只需查看其源码中是否包含相应芯片或开发板的板级支持包。
  嵌入式系统的硬件选择
  谈及嵌入式硬件或开发板,很多人首先会想到树莓派(Raspberry Pi),它是信用卡大小的微型电脑,虽体积小但功能强大,具备视频、音频等功能。树莓派推出后,许多厂商推出类似产品,如香蕉派等。
  还有 TI 的 Beaglebone Black 板子,体积与树莓派相近,外设包括 USB host 和 USB mini 以及网卡接口,背面有 SD 卡槽和 HDMI 接口。BBB 的处理器采用当前嵌入式系统的 ARMv7 指令集,采用广泛使用的指令集的处理器能获得更多软件支持。例如,一些操作系统已不支持在 ARMv6 指令集上运行,如 Ubuntu 在 2012 年 4 月放弃了对 ARMv6 指令集的支持。
  ARMv7 相对 ARMv6 指令集有诸多优势,如实现了超标量架构、包含 SIMD 操作指令、改进了分支预测算法,从而显著提高了某些性能。
  与单片机相比,嵌入式板性能更优。单片机处理能力较低,主频大多在几十 M,而嵌入式处理器处理速度动辄上百上千 M。此外,单片机缺乏图形界面处理能力,即缺乏 GPU,几乎无法带动图形界面。单片机存储空间也远小于嵌入式处理器,通常片内存储只有几 k 大小,受外设限制难以大范围增加外设 eMMC,而嵌入式处理器通常有几百兆的 RAM。这种巨大差异导致单片机几乎无法像嵌入式处理器那样运行操作系统,甚至连 TCP/IP 协议栈和 USB 协议栈都难以运行,一些高端单片机如 ST 公司的 STM32 系列,可能可以运行一些轻量级的系统 OS 和嵌入式网络协议栈,如 IwIP 协议栈。
  嵌入式处理器丰富强大的性能使其能完成更多单片机无法完成的应用,如网络通信功能、视频传输处理功能等。当外设存储增加后,嵌入式处理器能轻松运行各种 Linux 系统以及图形 GUI 界面。
  在开发方式上,单片机和嵌入式也有较大差别。单片机主要在 Windows 等图形界面下开发,有很多成熟的 IDE 工具,如 Keil、IAR、TI 的 CCS 等,这些工具集编译、汇编、链接、仿真为一体,因在 Windows 下开发,具有友好的用户界面,开发者只需编写 C 代码,点击编译链接按键即可,出现错误还可进行 debug 或仿真,上手较快。
  而嵌入式开发一般在 Linux 下进行,需将 C 代码在主机上编译完成,然后通过系统镜像或 uboot 引导将编译好的文件烧入开发板。由于主机处理器是 x86 架构,而编写的代码要运行在 ARM 架构或 SPARC 架构的处理器上,因此需要安装交叉编译链。此外,Linux 下没有 Windows 那样的 IDE,编译、链接源代码需开发者自己完成,一般利用 GNU make 脚本编写 Makefile 以及 configure 文件,Makefile 文件中要编写如何对 C 或 H 文件编译,即编译规则和依赖文件,这些都需开发者自己完成,且整个过程在 Linux 的终端(命令行)中完成,增加了嵌入式开发的难度。
上一篇:A2B 总线:助力复杂新数据和音频传输系统的关键
下一篇:揭秘开关电源与变压器:优缺点大比拼

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料