在线询价

在线询价

8位MCU和32位MCU如何选择,先从两者的功能来区别
2022-12-20
  随着智能产品越来越多,应用到的MCU数量也随之增长,有对MCU接触过的朋友都知道,MCU有不同的位数,如8位MCU、24位MCU、32位MCU,每种MCU的应用都有不同领域产品,今天就来聊聊8位和32位的MCU,接下来看看8位MCU和32位MCU如何选择,先从两者的功能来区别。

  本文比较了8位MCU和32位MCU 用例,也可用作如何在两种 MCU 架构之间进行选择的指南,本文中的大多数32位MCU 示例都集中在 ARM Cortex-M 上,它在各种 MCU 供应商产品组合中的行为非常相似。8位MCU MCU 架构种类繁多,因此很难对8位MCU供应商的产品进行类似比较。为了进行比较,我们将使用嵌入式开发人员首选的广泛使用且易于理解的 8051 架构。

  8位MCU和32位MCU如何选择?

  事实上,ARM Cortex 和 8051 哪个更好,并不是像“吉他或钢琴哪个更好?”这样的逻辑问题,真正要解决的问题是哪种MCU能够帮助我们更好地解决今天面临的问题,不同的任务需要不同的工具,我们的目标是了解“如何更好地使用我们拥有的工具”,包括8位MCU和32位MCU,那些简单地说“ARM 更好”或“8051 更好”的人几乎肯定是在以自己的方式思考并试图销售产品。

  要比较不同的设备,您需要测量它们,有许多构建工具可供选择,已尝试进行公平的比较,并选择我们认为能代表真实开发人员体验的场景。

  并非所有 MCU 都是一样的

  在我们开始比较架构之前,请务必注意并非所有制造的 MCU 都是一样的。将基于 ARM CortexM0+ 处理器的现代 MCU 与已有 30 年历史的 8051 MCU 进行比较,8051 MCU 根本很难超越性能比较,幸运的是,仍有许多供应商继续投资于8位MCU处理器。对于很多应用来说,8位MCU内核可以弥补 M0+ 或 M3 内核的不足,并且在某些方面表现更好。

  开发工具也很重要,现代嵌入式固件开发包括功能完整的 IDE、现成的固件库、大量示例、完整的评估和入门套件,以及用于简化硬件设置、库管理和生产编程等任务的工具。需要帮助应用程序。如果 MCU 具有现代8位MCU内核和开发环境,则此类 MCU 的性能通常优于类似的基于 ARM Cortex 的 MCU。

  系统规模

  作为一般原则,ARM CortexM 内核适用于较大的系统规模,而 8051 器件适用于较小的系统规模。中型系统有两种方法可供选择,具体取决于系统执行的任务。请注意,在大多数情况下,外围设备的组合起着重要作用。如果您需要 3 个 UART、1 个 LCD 控制器、4 个时钟和 2 个 ADC,则并非所有这些外设都在8位MCU MCU 上。

  易用性与成本和尺寸

  对于中型系统,您可以使用任一架构来完成工作。权衡是在 ARM 内核提供的易用性和 8051 设备提供的成本和物理尺寸优势之间做出选择。ARM Cortex-M 架构在所有流行的编译器中具有集成的内存映射模式和完整的 C99 支持,使得这种架构非常容易编写固件。此外,还提供各种库和第三方代码。当然,这种易用性的代价是成本。对于上市时间短的复杂应用程序和缺乏经验的固件开发人员来说,易用性是一个关键因素。

  尽管8位MCU组件比32位组件具有成本优势,但真正的区别在于成本等级。具有 2 KB/512 B(闪存/RAM)的小型8位MCU设备很常见,但小于 8 KB/2 KB 的32位设备很少见。对于不需要很多资源的系统,这种存储容量范围允许系统开发人员实现成本显着降低的解决方案。因此,对成本非常敏感或内存要求低的应用程序倾向于选择 8051 解决方案。

  一般来说,8位MCU设备在物理尺寸方面也有优势。例如,一些MCU的32位QFN封装为4mm x 4mm,而基于8051的8位MCU器件的QFN封装可以小到2mm x 2mm。芯片级封装 (CSP) 中的8位MCU和32位架构之间的差异并不大,但成本更高且更难组装。空间受限的应用通常需要选择 8051 MCU 来满足这些限制。

  通用代码和 RAM 效率

  8051 MCU 成本低的主要原因之一是它们通常比 ARM Cortex-M 内核更有效地使用闪存和 RAM。更少的资源。系统越大,这种影响越小。

  然而,8位MCU内存资源的这种优势可能并不总是适用。在某些情况下,ARM 内核的效率与 8051 内核一样,甚至更高。例如,32 位操作只需要一条 ARM 设备指令,而 8051 MCU 则需要多条8位MCU指令。显然,这段代码在 ARM 架构上运行效率更高。

  用于小型闪存/RAM 的 ARM 架构的两个主要缺点是代码空间效率和 RAM 使用的可预估性。首个也是很明显的问题是一般的代码空间效率。8051 内核使用 1 位、2 位或 3 位指令,而 ARM 内核使用 2 位或 4 位指令。8051 指令通常更小,但它们实际上需要更多时间,因此这种优势减弱了。与 8051 相比,ARM 内核每条指令可以完成更多工作,32位算术就是一个例子,实际上,指令宽度使得 8051 产生相当密集的代码。

  代码空间效率

  在具有分布式访问变量的系统中,ARM 体系结构的加载/存储体系结构通常比指令宽度更重要。考虑一个信号量实现,它需要在代码的不同位置递减(赋值)或递增(解除分配)一个变量。ARM 内核需要将变量加载到寄存器中,对其进行操作并将其存储回去,这需要三个指令。另一方面,8051 内核可以只用一条指令直接操作内存位置。随着对变量所做的工作量每次都增加,加载/存储开销变得微不足道。但是如果一次要完成的工作较少,加载/存储会产生很大的不同,8051 具有明显的效率优势。

  信号量在嵌入式软件中并不常见,但简单的计数器和标志信号量广泛用于面向控制的应用程序中,并且具有相同的目的,常见的 MCU 代码属于这种类型。

  另一个原因是 ARM 处理器比 8051 内核有更多的空闲堆栈空间。8051 设备通常只在堆栈中为每个函数调用存储返回地址(2 位),并且通常通过分配在堆栈上的静态变量来完成大部分工作。

  在某些情况下,默认情况下函数是不可重入的,这可能会导致问题。但是,这也意味着需要预留的栈空间很小,完全可以预估,这对于 RAM 有限的 MCU 很重要。

  不同的任务需要不同的工具。我们的目标是了解如何充分利用我们拥有的工具,包括8位MCU和32位MCU。



  架构细节

  现在让我们谈谈基本场景。假设您有基于 ARM 和 8051 的 MCU 以及必要的外围设备,ARM 设备非常适合大型系统或以易用性为优先考虑的应用程序。如果低成本/小尺寸是看重的问题,那么 8051 器件是一个不错的选择,下面我们对每个架构所擅长的应用进行更详细的分析,并分离出一般原理。

 (1) 延迟

  两种架构在中断和函数调用延迟方面存在很大差异,8051 比 ARM Cortex-M 内核更快。此外,具有好的外围总线 (APB) 的外围设备也会影响延迟。这是因为数据需要通过 APB 和 AMBA 高性能总线 (AHB) 发送。后续,许多基于 Cortex-M 的 MCU 在使用高频内核时钟时需要 APB 时钟分配,这也会增加外设延迟。

  做了一个简单的实验,实验中断由 I/O 引脚触发,此中断将向引脚发送信号并根据引起中断的引脚更新标志,然后我测量了一些指示32位实现的参数。

  简而言之,实验结果表明 8051 内核在进入和退出中断服务程序 (ISR) 方面具有优势。然而,随着中断服务例程 (ISR) 变得更大并且执行时间更长,这些延迟变得微不足道。按照既定原则,系统越大,8051的优势就越小。此外,如果中断服务例程 (ISR) 包含大量数据传输或大于8位MCU的整数数据操作,则执行时间优势为中断服务例程 (ISR) 迁移到 ARM 内核。例如,使用新样本更新 16 位或32位移动平均值的 ADC ISR 可能在 ARM 设备上运行得更快。

  (2) 控制与处理

  8051 内核的基本功能是控制代码,可以分布式访问变量并使用大量控制逻辑(if、case 等)。8051 内核在处理8位MCU数据方面也非常有效,而 ARM Cortex-M 内核则擅长数据处理和32位运算。此外,32 位数据通道允许 ARM MCU 一次移动 4 个字节,而 8051 一次只能移动 1 个字节,从而可以更有效地复制大数据包。因此,主要通过将数据从一个地方移动到另一个地方(例如 UART 到 CRC 或 US B)来进行流式数据处理的应用程序更适合基于 ARM 处理器的系统。

  这并不意味着您不应该运行在 8051 内核上执行大量数据移动或32位数学会运算的应用程序,在许多情况下,其他考虑因素超过了 ARM 内核的效率优势,或者这些优势变得无关紧要,考虑使用 UART 转 SPI 桥。应用程序大部分时间都在外围设备之间复制数据,这是 ARM 内核更有效地执行的任务。

  然而,这也是一个非常小的应用程序,可能小到可以安装在只有 2 KB 内存的设备上。8051 内核效率较低,但具有足够的处理能力来处理此应用中的高数据速率。对于 ARM 设备,可用的额外周期是在空闲循环或“WFI”(Wait for Interrupt)中,等待下一个可用数据到达。在这种情况下,8051 内核是合适的,因为额外的 CPU 周期并不重要,而且较小的闪存封装可以节省资金。如果额外的周期用于做有意义的工作,那么额外的效率就非常重要,并且提高的效率可以使 ARM 内核受益。

 (3)指针

  8051 设备不像 ARM 设备那样有统一的内存映射,但它们对访问代码(闪存)、IDATA(内部 RAM)和 XDATA(外部 RAM)有不同的指令。为了生成好的代码,指向 8051 代码的指针指示它指向的空间。然而,在某些情况下,可以使用泛型指针指向任意空间,但这种类型的指针访问效率低下。例如,将指针指向缓冲区并将数据从该缓冲区输出到 UART 的函数。如果指针是 XDATA 指针,XDATA 数组可以发送到 UART,但需要先将代码空间中的数组复制到 XDATA。通用指针可以指向代码和 XDATA 空间,但它们速度较慢并且需要更多代码才能访问。

  特定于领域的指示符在大多数情况下很有用,但通用指示符在编写用途未知的可重用代码时非常灵活。如果这在您的应用中很常见,则 8051 将失去其效率优势。

  (4) 选择并完成作品

  我多次注意到计算倾向于选择 ARM 而控制倾向于选择 8051,但没有应用程序只专注于计算或控制。您如何大致描述您的应用程序并计算其良好范围?假设考虑一个应用程序,它不能明确地分配给8位MCU或32位类别。

  该应用程序不需要所有可用的 MIPS,并且需要优化成本,因此代码空间比执行速度更重要。成本比应用程序的速度更重要这一事实使 8051 内核在一般代码情况下略有优势。此外,8051内核在控制代码方面也有一定的优势。ARM 内核主导32位计算,但许多应用程序并未考虑到这一点。考虑到所有这些因素,8051 内核是这个特定应用的不错选择。

  假设应用程序更关心执行速度而不是成本,则 ARM 内核全面主导计算代码,只需进行少量更改,通用代码就不会被任何架构所吸引。在这种情况下,控制代码多于计算,但总体结果相当平衡。显然,这个过程涉及很多评估,但是分解应用程序并评估每个组件的技术可以揭示哪些架构在哪些情况下具有显着优势。

  功耗

  通过查看数据表,很容易根据功耗数据得出哪种 MCU 更好,某些类型的 MCU 具有出色的睡眠和活动模式电流性能,但这种评级非常具有误导性,占空比(在每种功耗模式下花费的时间)始终主导功耗,除非这两个设备具有相同的占空比,否则数据表中的当前规格毫无意义,适合您的应用需求的重要架构通常具有较低的功耗。

  考虑一个系统,该系统在唤醒设备后将 16 位 ADC 样本添加到移动平均值,然后返回睡眠状态并且在获取下一个样本之前不会再次唤醒。此任务涉及大量 16 位和32位计算。ARM 设备可以比 8051 设备更快地执行计算和返回睡眠状态,因此 8051 具有更好的睡眠和活动模式电流,但消耗更少的系统功率。当然,如果您正在执行的任务更适合 8051 设备,则出于同样的原因,MCU 的功耗对您的系统有利。

  8位MCU还是32位?怎么决定呢!

  如果即使在考虑了所有这些变量之后,您仍然不确定哪种 MCU 架构是很好选择怎么办? 也就是说,两者都是不错的选择,使用哪种架构并不重要。过去的经验和个人喜好即使不是直接的技术优势,也在决定 MCU 架构方面发挥着重要作用。

  此外,您还可以利用这个机会评估潜在的未来项目,如果您未来的大部分项目更适合ARM设备,请选择ARM,如果未来的项目更注重降低成本和尺寸。
扫描下方二维码进行咨询