对于微控制器和嵌入式系统,如果我们想知道它们之间的区别,或者其他的东西,我们需要在一开始就了解这两个。 一、微控制器:首先明确一个概念,什么是微控制器,微控制器是一种集成电路,芯片采用超大规模集成电路技术,将中央处理器(CPU)等功能与数据处理能力结合在一起、随机存取存储器(RAM)、只读存储器(ROM)、各种I/O端口和中断系统、定时器/计数器(也可能包括显示器)。 驱动电路、脉宽调制电路、模拟多路复用器、A/D转换器等电路)集成在一块硅芯片上,构成一个小型而完整的微机系统,广泛应用于工业控制领域。
就像我们现在都在使用的51单片机,它看起来就像一个拇指大小的矩形芯片,共有40个引脚,其中包含逻辑运算单元。 事实上,它是一个CPU。
综上所述,单片机是完成计算、逻辑控制、通信等功能的单个模块。 也就是说,该单片机真正命名为“Single”。 DSP芯片也可以被视为微控制器。 当然,它们的性能非常强大,但是功能仍然很简单。 简而言之,它们只是处理数据和逻辑。
那么下一步就是嵌入式系统。 一般来说,嵌入式是指嵌入式系统。 嵌入式系统是应用程序、操作系统和计算机硬件结合在一起的系统。 是指以应用为中心、以计算机技术为导向的系统。 基本上,软件和硬件都可以定制,其针对的用户应用是对功能、可靠性、成本、体积、功耗和使用环境有特殊要求的专用计算机系统。 IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或协助机器和设备操作的设备”。
也就是说,嵌入式系统是软件和硬件的结合体。 国内普遍认可的嵌入式系统的定义是:以应用为中心,以计算机技术为基础,软件和硬件可以量身定制,以适应应用系统对功能、可靠性、成本和体积的要求。 、功耗等严格要求的特种计算机系统。
对于嵌入式系统来说,分为嵌入式硬件和软件
硬件层:
硬件层包括嵌入式微处理器、存储器(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等。 但与全球个人电脑市场不同的是,没有嵌入式微处理器能够主导市场。 仅就32位产品而言,嵌入式微处理器就有100多种类型。 嵌入式微处理器的选择取决于具体的应用。
比如ARM有多种处理器架构,最经典的cortex系列,就属于ARMv7架构,这是ARM截至2010年最新的指令集架构。ARMv7架构定义了三个系列,分工明确:“ A”系列适用于尖端的基于虚拟内存的操作系统和用户应用程序; 用于实时系统的“R”系列; 和用于微控制器的“M”系列。 下图为cortex系列的不同定位。
在嵌入式领域,可以说ARM架构处理器占据了市场的半壁江山,ARM也成为了知名的科技公司。 不过,它不生产任何处理器,而只提供IP。 可见,一流企业制定标准。 其他常用的架构还有sparc、powerpc等。
嵌入式系统需要一定形式的通用设备接口来与外界交互,如A/D、D/A、I/O等。外设通过连接其他片外设备或传感器。 功能。 每个外设通常具有单一功能,并且可以位于芯片外部或内置于芯片内。 外围设备的类型有很多种,从简单的串行通信设备到非常复杂的 802.11 无线设备。
嵌入式系统中常用的通用设备接口包括A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口包括RS-232接口(串行通信接口)、以太网(Ethernet)接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外设接口)和IrDA(红外接口)等。这实际上类似于微控制器。
软件层:
即操作系统,包括内核和文件系统,以及更高层的应用程序。 嵌入式操作系统一般是Linux或其他类Unix系统,也有一些实时操作系统(RTOS)如VxWorks、RTEMS、ucOS等。 等待。
Linux还包括不同的发行版,例如Ubuntu、Redhat、Debian、centos等,它们都使用Linux内核。 不同的是上面的软件和工具。 当然,你不必太担心标准问题。 这些 Linux 发行版所选择的软件几乎都是比较常见的,比如用于 Web 服务器的 Apache、用于电子邮件服务器的 postfix 和 sendmail、用于文件服务器的 Samba 等。此外,还有 Linuxstandard base 等标准来规范开发人员。
类Unix的主要有FreeBSD和Solaris。
嵌入式领域最常用的实时操作系统是实时操作系统。 实时操作系统的核心是实时性能。 本质是华为在任务处理上时间的可预测性,即任务需要在规定的时限内完成。 IEEE 将实时系统定义为“其正确性不仅取决于计算的逻辑结果,还取决于产生结果所需的时间的系统”。 实时操作系统分为硬实时和软实时。 硬实时要求操作必须在指定时间内完成,这一点在操作系统设计时就得到了保证; 软实时只需根据任务的优先级尽快完成操作即可。 就是这样。 我们平时使用的操作系统经过一定的改变就可以成为实时操作系统。
单片机与嵌入式系统的区别在于,单片机的处理能力较低,主频大多在几十兆左右,与嵌入式系统的处理速度相差较大,往往可以达到数百或数千兆字节。 另外,单片机没有图形界面。 缺乏处理能力,即GPU,使得单片机几乎无法驱动图形界面; 单片机的存储空间与嵌入式处理器不是一个级别的。 单片机的片上存储通常只有几千字节大小,而且由于外设的限制,不太可能大规模增加外设emmc,而嵌入式处理器通常有数百个兆字节 RAM。 如此巨大的差异使得微控制器几乎不可能像嵌入式处理器一样运行操作系统,甚至TCP/IP协议栈和USB协议栈都无法运行。 一些高端微控制器,例如ST的STM32系列,可能能够运行一些轻量级系统操作系统和嵌入式网络协议栈,例如IwIP协议栈。 嵌入式处理器丰富而强大的性能决定了它可以完成更多单片机无法完成的应用,例如网络通信功能、视频传输和处理功能等。当外围存储增加时,嵌入式处理器可以轻松运行各种Linux系统,图形GUI界面。
单片机和嵌入式系统在开发方式上也有很大的区别,即编译过程的区别。 微控制器主要是在Windows等图形界面下开发。 目前有很多成熟的IDE工具如keil、IAR、ti的CCS等。 这些工具集编译、汇编、链接和仿真于一体,并且由于是在Windows下开发的,因此具有友好的用户界面。 开发者只需编写C代码,然后点击编译链接按钮即可。 如果发生错误,他们还可以调试或模拟。 上手还是很容易的。 非常快。 嵌入式开发一般是在Linux下进行的。 需要在自己的主机上编译C代码,然后通过系统镜像或者uboot引导将编译好的文件烧录到开发板中。 由于主机处理器是x86架构,编写的代码是为了在arm架构或sparc架构处理器上运行,所以存在交叉编译链安装。 另外,Linux下没有像Windows那样的IDE,即编译和链接源码需要开发者自己完成。 这通常是通过使用 GNUmake 脚本编写 Makefile 和配置文件来完成的。 Makefile文件写的是如何编译c或h文件,即编译规则和依赖文件是什么。 这些都需要开发者自己完成。 而上述过程全部在Linux下的终端,即命令行中完成,这也使得嵌入式开发变得更加困难。
其实单片机也是嵌入式系统开发的一部分。 嵌入式开发的起点是单片机。 只要在学习的同时学好单片机,那么就可以学习嵌入式arm的开发。 如果你能熟练掌握的话,对于单片机来说,学习嵌入式arm不是问题,因为芯片操作都是类似的。 它们都是对数据、地址和控制总线的操作。 它们都用于工业。 它们还包括关系。 单片机开发就是简单的嵌入式开发。
现在您对微控制器和嵌入式微控制器有了透彻的了解了吗? 如果你刚刚开始接触嵌入式单片机和单片机,建议你先学习单片机,然后再学习嵌入式arm开发。