账号:
密码:
CTIMES / 文章 /   
对於8位元、32位元MCU的选择
探索IoT应用中

【作者: Josh Norem】2017年08月23日 星期三

浏览人次:【12924】
  


该如何对8位元以及32位元的MCU进行选择?8位元和32位元MCU在功能上仍是互为辅助、各有千秋,这其中的诀窍就在於,需先了解什麽样的应用适合什麽样的MCU架构。


本文对比了8位元MCU和32位元MCU的使用案例,也可作为如何选择这两种MCU架构的指南使用。本文中大部分32位元MCU的范例将关注ARM Cortex-M,Cortex-M在不同MCU供应商产品组合中表现得非常相似。鉴於8位元MCU有很多种架构,所以很难对8位元供应商产品进行类似的比较。为了便於进行比较,我们将使用广泛应用、易於理解的8051 架构,该架构深受嵌入式开发人员的青睐。


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

有时,当我对比人们所熟知的事物(例如ARM和8051)时,感觉就像在物联网论坛上发出「《星际争霸战》比《星际大战》好看」的帖子一样,很快就能火起来。


事实上,ARM Cortex和8051哪个更好并不是个逻辑问题,就像是在问:吉他和钢琴哪个更好?真正要解决的问题应是哪种MCU能帮我更好地解决当下面临的问题。不同的任务需要使用不同的工具,我们的目的是要了解「如何才能更好地运用我们所拥有的工具」,包括8位元和32位元MCU。几??可以肯定地说,那些简单回答「ARM更好」或「8051更好」的人各有其目的,他们也许正在试图销售某种产品。


对不同的设备进行比较,需要对其进行测量。有很多构建工具可供选择,我们尽量选择一些场景,我认为其能够进行最公平的比较,且最能代表开发人员的真实体验。


并非所有的MCU都是一样的

在开始对架构进行比较之前,要注意到并非所有生产的MCU都是一样的,这一点非常重要。如果将基於ARM CortexM0+处理器的现代MCU与30年前的8051 MCU进行对比,8051 MCU在性能对比上不会胜出。幸运的是,依然有许多供应商一直在对8位元处理器持续投资。在许多应用中,8位元内核能依然能够弥补M0+或M3内核不利的地方,甚至在一些方面性能更隹。


开发工具也很重要。现代嵌入式韧体开发需要全功能IDE、现成的韧体库、丰富的范例、完整的评估和入门套件以及助手应用以简化硬体设定、库管理和量产程式设计之类的工作。当MCU有了现代化的8位元内核和开发环境後,在很多情况下,这样的MCU将超越基於ARM Cortex的类似MCU。


系统规模

一般性原则是,ARM CortexM内核更适用於较大的系统规模,而8051设备适用於较小的系统规模。中等规模的系统可以选择两种方式,这取决於系统要执行的任务。有必要注意一点,在大多数情况下,外设组合将会发挥重要的作用。如果需要3个UART、1个LCD控制器、4个时钟和2个ADC,你可能并不会在8位元MCU上找到所有这些外设。


易用性vs.成本和尺寸

对於中等规模的系统来说,使用任何一种架构都可以完成工作,需要权衡的是选择ARM内核带来的易用性,还是8051设备带来的成本和物理尺寸优势。ARM Cortex-M架构具有统一的存储映射模式,并且在所有常见编译器中支持完整的C99,这使得这种架构非常易於写韧体。此外,还可得到一系列库和协力厂商代码。当然,这种易用性的代价就是成本。对於高复杂性、上市时间较短的应用或缺乏经验的韧体开发人员来说,易用性是个重要因素。


尽管8位元与32位元组件相比有些成本上的优势,但真正的区别就在於成本级别。大家经常会发现具有2 KB/512 B(Flash/RAM)的小容量8位元器件,而却很少见低於8 KB/2 KB的32位元器件。在不需要很多资源的系统中,该范围的存储容量能够让系统开发人员获得显着降低成本的解决方案。因此,对成本极为敏感或仅需较小存储容量的应用会更倾向於选择8051解决方案。


通常,8位元器件也具有物理尺寸上的优势。例如,Silicon Labs提供的最小的32位QFN封装为4 mm×4 mm,而基於8051的8位器件的QFN封装可小至2 mm×2 mm。晶片级封装(CSP)的8位元和32位元架构之间的差异较小,但却使成本增加,且组装较难。对於空间严格受限的应用来说,通常需要选择8051 MCU来满足限制要求。


通用代码和RAM效率

8051 MCU成本较低的主要原因之一是,它通常比ARM Cortex-M内核更高效地使用Flash和RAM,这允许系统采用更少资源实现。系统越大,这种影响就越小。


但这种8位元存储资源的优势并不总是如此,在某些情况下,ARM内核会像8051内核一样高效或比其更高效。例如:32位元运算仅需要一条ARM设备指令,而在8051 MCU上则需要多条8位元指令。显然,这种代码在ARM架构上有更高的执行效率。


ARM架构在Flash/RAM尺寸较小时的两个主要缺点是:代码空间效率和RAM使用的可预测性。首要也是最明显的问题是通用代码空间效率。8051内核使用1位元组、2位元组或3位元组指令,而ARM内核使用2位元组或4位元组指令。通常情况下,8051指令更小,但这一优势因实际上花费许多时间而受到削弱,ARM内核比8051在一条指令下能做更多工作,32位元运算就是这样一个范例。实践起来,指令宽度是能在8051上产生适度的更密集代码。


代码空间效率

在含有分散式访问变数的系统中,ARM架构的载入/存储架构通常比指令宽度更为重要。试想讯号量的实现,一个变数需要在代码周围的多个不同位置进行减量(分配)或者增量(释放)。ARM内核必须将变数载入到寄存器,对其进行操作并重新存储,这需要3条指令。另一方面,8051内核可以直接在记忆体位置上进行操作,且仅需1条指令。随着每次对变数完成工作量的增大,由於载入/存储而产生的消耗就变得微不足道。但对於每次仅完成一点工作的情况来说,载入/存储能产生重要影响,让8051获得明显的效率优势。


尽管讯号量在嵌入式软体中并非常见,但简单的计数器和标志讯号量却广泛应用於控制导向的应用中并起着相同的作用。许多常见的MCU代码都属於这一类型。


另一个原因是,ARM处理器比8051内核拥有更多的自由使用栈空间。通常情况下,8051设备针对每次函式呼叫仅在栈上存储返回位址(2位元组),通常通过分配给栈的静态变数处理大量的任务。


在某些情况下,这会产生问题,因为这会造成函数预设不可重入。然而,这也意味着必须保留的栈空间很小,且完全可预测,这在RAM容量有限的MCU中至关重要。



图一 : 不同的任务需要使用不同的工具,我们的目的是要了解「如何才能更好地运用我们所拥有的工具」,包括8位元和32位元MCU。 (Source:Yola)
图一 : 不同的任务需要使用不同的工具,我们的目的是要了解「如何才能更好地运用我们所拥有的工具」,包括8位元和32位元MCU。 (Source:Yola)

架构细节

现在,我们来说基本情景。假设有基於ARM和基於8051的MCU各一个,配有所需的外设,那麽对於较大的系统或需要重点考虑易用性的应用来说,ARM设备是更好的选择。如果首要考虑的是低成本/小尺寸,那麽8051设备将是更好的选择。下面我们对於每种架构更擅长的应用进行更详细的分析,同时也划分出一般原则。


(1) 延时

两种架构的中断和函式呼叫延时存在很大差异,8051比ARM Cortex-M内核更快。此外,高级外设汇流排(APB)配备的外设也会影响延时,这是因为资料必须通过APB和AMBA高性能汇流排(AHB)传输。最後,当使用高频内核时钟时,许多基於Cortex-M的MCU需要分配APB时钟,这也增加了外设延时。


我做了1个简单的实验,实验中的中断是通过I/O引脚触发的。该中断对引脚发出一些信号,并根据引发中断的引脚更新标志。然後我测量了一些叁数显示了32位元的实现。


简单说明这个实验结果,8051内核在中断服务程式(ISR)进入和退出时显示出优势。但是,随着中断服务程式(ISR)越来越大和执行时间的增加,这些延迟将变得微不足道。和已有原则一致,系统越大,8051的优势越小。此外,如果中断服务程式(ISR)涉及到大量资料移转或大於8位元的整数资料运算,中断服务程式(ISR)执行时间的优势将转向ARM内核。例如,一个采用新样本更新16位元或32位移动平均的ADC ISR可能在ARM设备上执行得更快。


(2) 控制vs处理

8051内核的基本功能是控制代码,其中对於变数的访问是分散的,并且使用了许多控制逻辑(if、case等)。8051内核在处理8位元资料时也是非常有效的,而ARM Cortex-M内核擅长资料处理和32位元运算。此外,32位元资料通道使得ARM MCU复制大包的资料更加有效,因为它每次可以移动4个位元组,而8051每次仅能够移动1个位元组。因此,那些主要把资料从一个地方移动到另一个地方(例如UART到CRC或者到USB)的流资料处理的应用更适合选择基於ARM处理器的系统。


这并不意味着有大量资料移动或32位元运算的应用不应该选择8051内核完成。在许多情况下,其他方面的考虑将超过ARM内核的效率优势,或者说这种优势是不相关的。考虑使用UART到SPI桥接器,该应用花费大部分时间在外设之间复制资料,而ARM内核会更高效地完成该任务。


然而,这也是一个非常小的应用,可能小到足以放入一个仅有2 KB存储容量的器件就足够合适。尽管8051内核效率较低,但它仍然有足够的处理能力去处理该应用中的高资料速率。对於ARM设备来说,可用的额外周期可能处於空闲??圈或「WFI」(等待中断),等待下一个可用的资料片到来。在这种情况下,8051内核仍然最有意义,因为额外的CPU周期是微不足道的,而较小的Flash封装会节约成本。如果我们要利用额外的周期去做些有意义的工作,那麽额外的效率将是至关重要的,且效率越高可能越有利於ARM内核。这个例子说明,清楚被开发系统所关注的环境中的各种架构优势是何等重要。做出这个最隹的决定是简单但却重要的一步。


(3) 指针

8051设备没有像ARM设备那样的统一的存储映射,而是对存取码(Flash)、IDATA(内部RAM)和XDATA(外部RAM)有不同的指令。为了生成高效的代码,8051代码的指标会说明它指向什麽空间。然而,在某些情况下,使用通用指标可以指向任何空间,但是这种类型的指标是低效的访问。例如,将指标指向缓冲区并将该缓冲区资料输出到UART的函数。如果指标是XDATA指标,那麽XDATA阵列能被发送到UART,但在代码空间中的阵列首先需要被复制到XDATA。通用指标能同时指向代码和XDATA空间,但速度较慢,并且需要更多的代码来访问。


专用区域指标在大多情况下能发挥作用,但是通用指标在编写使用情况未知的可重用代码时非常灵活。如果这种情况在应用中很常见,那麽8051就失去了其效率优势。


(4) 通过选择完成工作

我已经注意到多次,运算倾向於选择ARM,而控制倾向於选择8051,但没有应用仅仅着眼於计算或控制。我们怎样才能表徵广义上的应用,并计算出它的合适范围呢?让我们考虑一个由10%的32位元计算、25%的控制代码和65%的一般代码构成的假定的应用,它不能明确地归於8位元或32位元类别。


这个应用也更注重代码空间而不是执行速度,因为它并不需要所有可用MIPS,并且必须为成本进行优化。成本比应用速度更为重要的事实在一般代码情形下将给8051内核带来微弱优势。此外,8051内核在控制代码中有中间等级的优势。ARM内核在32位元计算上占上风,但是这并非是很多应用所考虑的。考虑到所有这些因素,这个特殊的应用选择8051内核更加合适。


如果进行细微的改变,假设该应用更关心执行速度而非成本,那麽通用代码不会倾向於哪种架构,并且ARM内核在计算代码中全面占优势。在这种情况下,虽然有比计算更多的控制代码,但是总的结果将相当均衡。显然,在这个过程中有很多的评估,但是分解应用,然後评估每一元件的技术将?明并确保我们了解在哪种情况下哪种架构有更显着的优势。


功耗

当查阅资料手册时,很容易根据功耗资料得出哪个MCU更优的结论。虽然睡眠模式和工作模式电流性能在某些类型MCU上更优,但是这一评估可能会非常具有误导性。占空比(在每个电源模式上分别占用多少时间)将始终占据功耗的主导地位。除非两个器件的占空比相同,否则资料手册中的电流规格几??是没有意义的。最适合应用需求的核心架构通常具有更低的功耗。


假设有一个系统,在设备被唤醒後添加一个16位元ADC样本到移动平均,然後返回到休眠状态,直到获取下一个样本时才又被唤醒。该任务涉及到大量16位元和32位元计算。ARM设备将能够进行计算,并比8051设备更快返回到休眠状态,这会让系统功耗更低,即使8051具有更好的睡眠和工作模式电流。当然,如果进行的任务更适合8051设备,那麽MCU功耗由於相同的原因而对系统有利。


外设特性也能够以这样或那样的方式影响功耗。例如,大多数Silicon Labs的EFM32 32位MCU具有低功耗的UART(LEUART),能够在低功耗模式下接收资料,而只有两个EFM8 MCU具有此功能。这一外设影响电源的占空比,且在任何需要等待UART通信的应用中都比缺乏LEUART的EFM8在很大程度上有利於EFM32 MCU。遗憾的是,除了让MCU供应商的本地应用工程师利用EFM8来解决上述问题之外,并没有简单的指南来评估这些外设因素。系统设计人员还应了解MCU各种功耗模式下,可完成的处理任务。



图二 : 虽然睡眠模式和工作模式电流性能在某些类型MCU上更优,但是这一评估可能会非常具有误导性。(Source:NBC News)
图二 : 虽然睡眠模式和工作模式电流性能在某些类型MCU上更优,但是这一评估可能会非常具有误导性。(Source:NBC News)

8位或32位?我仍然不能决定!

如果考虑到所有这些变数後,仍然不清楚哪些MCU架构是最好的选择,会怎样?那好吧!这说明,它们都是很好的选择,你使用哪种体系结构并不是紧要的事情。如果没有明确的技术优势,那麽过去的经验和个人喜好在你的MCU架构决定中也起到了很大的作用。


此外,你也可以利用这个机会去评估可能的未来项目,如果大多数未来专案更适合ARM设备,那麽选择ARM,如果未来项目更侧重於降低成本和尺寸,那麽就选择8051。


这到底意味着什麽呢?

8位元MCU仍然可以为嵌入式开发人员提供许多功能,并且越来越关注物联网。当开发人员开始设计时,重要的是确保从工具箱中获得合适的工具。虽然我还是很乐意把8051出售给可能更适合选择32位元设备的客户,但是我不禁想像,如果开发人员仅仅花费1个小时思考就作出决定,那麽他们的工作将会更加容易、最终的产品将会更好。


实际上的难题是,不能仅仅依赖於一些演示文件中的一两个要点,就得出选择MCU架构的结论。然而,一旦你有正确的资讯,并愿意花一点时间应用它,就不难作出最隹选择。


(本文作者为Silicon Labs微控制器和无线产品系统工程师)


@刊头图来源(Source:Enterprise IoT Insights)


相关文章
车辆交通号志自动辨识系统
Armv8.1-M架构介绍
确保加工精度 机器手臂预诊维修的导入关键
植物照明设备的安全新标准
边缘运算需求引爆 软硬体协同开发是最大挑战
comments powered by Disqus
相关讨论
  相关新品
Platform Manager Devices
原厂/品牌:Lattice
供应商:Lattice
產品類別:Power
Power Manager II Hercules Development Kit
原厂/品牌:Lattice
供应商:Lattice
產品類別:Power
Processor PM Development Kit
原厂/品牌:Lattice
供应商:Lattice
產品類別:Power
  相关新闻
» Arm携手沃达丰 以通用CPE打造高效能低功耗解方
» IIR HiRel 与 NASA毅力号火星探测车共创里程碑
» Arm驱动全球最快超级电脑 扩大部署HPC软体生态系
» Arm Mali GPU虚拟化功能 驱动次世代车用体验
» Arm:5G将成为云端游戏的绝隹赋能者
  相关产品
» 瑞萨新款光隔离型三角积分调变器适用於工业自动化应用
» DELO 推出新款旒合剂适用於功率半导体元件
» Silicon Labs推出高效节能电源管理IC 强化电池供电型IoT产品设计
» Arm顾客数据平台推出新功能 整合20项应用的安全与管理服务
» Silicon Labs推出完整PoE产品组合 驱动5G小型基地台的未来
  相关资源
» Power Management Solutions for Altera FPGAs

AD


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2020 远播信息股份有限公司版权所有 Powered by O3
地址:台北市中山北路三段29号11楼 / 电话 (02)2585-5526 / E-Mail: webmaster@ctimes.com.tw