【技术】教你如何根据应用和MCU架构选择合适的8位、32位MCU
在embedded world 2016大会展示产品期间,我曾非常愉快地与一位思维敏捷的人士进行了交谈。当我向他介绍我们最新推出的EFM8TM微控制器(MCU)时,他打断我并问:“可我为什么还要使用8位MCU呢?”这不是我第一次听到这样的问题,当然,也不会是最后一次。
人们会很自然想到,正如汽车替代了马拉车、电子邮件替代了普通邮件一样,32位设备让8位MCU变得黯然失色。尽管在还有些遥远的未来,8位MCU向32位MCU的过渡将会成为现实,但在当前还没那么容易实现。事实证明8位MCU和32位MCU仍是互补的技术,在某些方面各有千秋,而在其它方面却表现得同样出色。这其中的诀窍在于弄清什么样的应用适合什么样的MCU架构。
优化和圣战
有时,当我对比人们所熟知的事物(例如ARM和8051)时,我感觉就像在互联网论坛上发出“《星际迷航》比《星球大战》好看”的帖子一样,事情很快就能火起来。
事实上“ARM Cortex和8051哪个更好”并不是个逻辑问题。就像是在问,“吉他和钢琴哪个更好”一样。真正要解决的问题是“哪种MCU能帮我最好地解决当下面临的问题?”。不同的任务需要使用不同的工具,我们的目的是要了解“如何才能最好地运用我们所拥有的工具”,包括8位和32位设备。几乎可以肯定地说,那些简单回答“ARM更好”或“8051更好”的人各有其目的,正在试图销售某种商品。
对不同的设备进行比较,需要对其进行测量。有很多构建工具可供选择,我尽力选择一些场景,我认为其能够进行最公平的比较,且最能代表开发人员的真实体验。以下ARM数据是通过GCC +nanoCLibrary和-03优化选项所生成的。
我并不想为任何一种设备优化代码。我只是简单地实现了90%开发人员都会使用的最显而易见的“常规”代码。我更感兴趣的是普通开发人员所见到的结果,而不是理想状态下的结果。当然,花费诸多时间、精力和财力去调整8051代码使其表现比ARM更好是可能的(反之亦然),但一开始就选择适合该项工作的最佳工具却更为简易。
并非所有的MCU都是一样的
在开始对架构进行比较之前,要注意到并非所有生产的MCU都是一样的,这一点非常重要。如果将基于ARM Cortex-M0+处理器的现代MCU与30年前的8051 MCU进行对比,8051 MCU在性能对比上不会胜出。幸运的是,许多供应商一直在对8位处理器进行持续投资。例如:SILICON LABS一直更新基于8051内核的EFM8 MCU产品线,比原来的8051架构更为高效,而且开发过程也已经实现现代化。所以,在许多应用中,8位内核能够容易弥补比M0+或M3内核不利的地方,甚至在一些方面性能更佳。
开发工具也很重要。现代嵌入式固件开发需要全功能IDE、现成的固件库、丰富的示例、完整的评估和入门套件,以及助手应用,以简化硬件配置、库管理和量产编程之类的工作。当MCU有了现代化的8位内核和开发环境时,在很多情况下,这样的MCU将超越基于ARM-Cortex的类似MCU。
一般性取舍
在深入探讨内核架构和其它技术细节之前,我要和大家讲一个故事,在我读大学的时候,记得有一次考试,我太在意考取好分数和比其他同学先完成考题,以至于没有注意到在试卷的正反面都印有试题。不用说,我的确是第一个完成考卷的人,但却是我不愿再想起的一次经历。如果一个应用需要的只是256KB的闪存或0.25美元的批量定价,那么分析复杂的MCU特性和功能是没有意义的。这些需求足以说明何种MCU架构才是最佳选择。
系统规模
第一个一般性原则是,ARM Cortex-M内核更适用于较大的系统规模(> 64KB代码),而8051器件适用于较小的系统规模(< 8KB代码)。中等规模的系统可以选择两种方式,这取决于系统要执行的任务。有必要注意一点,在大多数情况下,外设组合将会发挥重要作用。如果需要3个UART、1个LCD控制器、4个时钟和2个ADC,你可能并不会在8位MCU上找到所有这些外设。
易用性vs成本和尺寸
对于中等规模的系统来说,使用任何一种架构都可以完成工作。但主要的权衡是选择ARM内核带来的易用性,还是8051设备带来的成本和物理尺寸优势。
ARM Cortex-M架构具有统一的存储模式,并且在所有常见编译器中支持完整的C99,这使得这种架构非常易于写固件。此外,还可得到一系列库和第三方代码。当然,这种易用性的代价就是成本。对于高复杂性、上市时间较短的应用或缺乏经验的固件开发人员来说,易用性是个重要因素。尽管8位与32位部件相比有些成本上的优势,但真正的区别就在于成本级别。大家经常会发现具有2KB/512B(Flash/RAM)的小容量8位器件,而却很少见低于8KB/2KB的32位器件。在不需要很多资源的系统中,该范围的存储容量能够让系统开发人员实现显著降低成本的解决方案。因此,对成本极为敏感或仅需较小存储容量的应用会更倾向于选择8051解决方案。
通常,8位器件也具有物理尺寸上的优势。例如:Silicon Labs提供的最小的32位QFN封装为4mm×4mm,而基于8051的8位器件的QFN封装可小至2mm×2mm。芯片级封装(CSP)的8位和32位架构之间的差异较小,但却使成本增加,且组装较难。对于空间严格受限的应用来说,通常需要选择8051设备来满足限制要求。
通用代码和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中至关重要。
举个简单的例子,我创建了以下程序。然后测量funcB内部的栈深度,发现M0+内核的栈用了48个字节,而8051内核的栈仅用了16个字节。当然,8051内核还静态分配了8个字节的RAM,总共用了24个字节。在较大的系统中,这个差异显得微不足道,但是在仅有256字节ARM的系统中,这就变得很重要。
架构细节
现在,我们来说说基本情景。假设有基于ARM和基于8051的MCU各一个,配有所需的外设,那么对于较大的系统或需要重点考虑易用性的应用来说,ARM器件是更好的选择。如果首要考虑的是低成本/小尺寸,那么8051器件将是更好的选择。下面我们对于每种架构更擅长的应用进行更详细的分析,同时也划分出一般原则。
延时
两种架构的中断和函数调用延时存在很大差异,8051比ARMCortex-M内核更快。此外,高级外设总线(APB)配备的外设也会影响延时,这是因为数据必须通过APB和AMBA高性能总线(AHB)传输。最后,当使用高频内核时钟时,许多基于Cortex-M的MCU需要分配APB时钟,这也增加了外设延时。
我做了个简单的实验,实验中的中断是通过I/O引脚触发的。该中断对引脚发出一些信号,并根据引发中断的引脚更新标志。然后我测量了一些参数,如下表所示。这里的列表显示了32位的实现。
8051内核在中断服务程序(ISR)进入和退出时显示出了优势。但是,随着中断服务程序越来越大和执行时间的增加,这些延迟将变得微不足道。和已有原则一致,系统越大,8051的优势越小。此外,如果中断服务程序涉及大量数据迁移或大于8位的整数数据运算,中断服务程序执行时间的优势将转向ARM内核。例如,一个采用新样本更新16位或32位移动平均的ADC ISR可能在ARM设备上执行得更快。
控制vs处理
8051内核的基本功能是控制代码,其中对于变量的访问是分散的,并且使用了许多控制逻辑(if、case等)。8051内核在处理8位数据时也是非常有效的,而ARM Cortex-M内核擅长数据处理和32位运算。此外,32位数据通道使得ARM MCU复制大包的数据更加有效,因为它每次可以移动4个字节,而8051每次仅能够移动1个字节。因此,那些主要把数据从一个地方移动到另一个地方(例如UART到CRC或者到USB)的流数据处理的应用更适合选择基于ARM处理器的系统。
来做个简单的实验。我们编译以下两种架构的函数,变量大小为uint8_t、uint16_t和uint32_t。
uint32_tfuncB(uint32_t testA, uint32_t testB){
return (testA * testB)/(testA—testB)
}
|data type | 32bit(-o3) | 8bit |
| uint8_t | 20 | 13 | bytes
| uint16_t | 20 | 20 | bytes
| uint32_t | 16 | 52 | bytes
随着数据量的增加,8051内核需要越来越多的代码来完成这项工作,最终超过了ARM函数的大小。16位的情况下在代码大小上几乎类似,在执行速度上稍好于32位内核,因为相同代码通常需要更少周期。还有一点很重要,那就是要注意到,只有采用优化的ARM编译代码时,这种比较才有效。未优化的代码需要花费几倍长的时间。
这并不意味着有大量数据移动或32位运算的应用就不应该选择8051内核完成。在许多情况下,其它方面的考虑将超过ARM内核的效率优势,或者说这种优势是不相关的。考虑使用UART到SPI桥接器。该应用花费大部分时间在外设之间复制数据,而ARM内核会更高效地完成该任务。然而,这也是一个非常小的应用,可能小到足以放入一个仅有2KB存储容量的器件就足够合适。
尽管8051内核效率较低,但它仍然有足够的处理能力去处理该应用中的高数据速率。对于ARM器件来说,可用的额外周期可能处于空闲循环或“WFI”(等待中断),等待下一个可用的数据片到来。在这种情况下,8051内核仍然最有意义,因为额外的CPU周期是微不足道的,而较小的Flash封装会节约成本。如果我们要利用额外的周期去做些有意义的工作,那么额外的效率将是至关重要的,且效率越高越可能越有利于ARM内核。这个例子说明,清楚被开发系统所关注的环境中的各种架构优势是何等重要。做出这个最佳的决定是简单但却重要的一步。
指针
8051器件没有像ARM设备那样的统一存储映射,而是对访问代码(Flash)、IDATA(内部RAM)和XDATA(外部RAM)有不同的指令。为了生成高效的代码,8051代码的指针会说明它指向什么空间。然而,在某些情况下,我们使用通用指针,可以指向任何空间,但是这种类型的指针是低效的访问。例如,将指针指向缓冲区并将该缓冲区数据输出到UART的函数。如果指针是XDATA指针,那么XDATA数组能被发送到UART,但在代码空间中的数组首先需要被复制到XDATA。通用指针能同时指向代码和XDATA空间,但速度较慢,并且需要更多的代码来访问。
专用区域指针在大多情况下能发挥作用,但是通用指针在编写使用情况未知的可重用代码时非常灵活。如果这种情况在应用中很常见,那么8051就失去了其效率优势。
通过选择完成工作
我已经注意到多次,运算倾向于选择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能耗模式下可完成的处理任务。
8位或32位?你可以做出更好的决定!
如果考虑到所有这些变量后,仍然不清楚哪些MCU架构是最好的选择,会怎样?那好吧!这说明,它们都是很好的选择,你使用哪种体系结构并不是紧要的事情。如果没有明确的技术优势,那么过去的经验和个人喜好在你的MCU架构决定中也起到了很大的作用。此外,你也可以利用这个机会去评估可能的未来项目。如果大多数未来项目更适合ARM器件,那么选择ARM,如果未来项目更侧重于降低成本和尺寸,那么就选择8051。
8位MCU仍然可以为嵌入式开发人员提供许多功能,并且越来越关注物联网。当开发人员开始设计时,重要的是确保从工具箱中获得合适的工具。虽然我还是很乐意把8051出售给可能更适合选择32位设备的客户,但是我不禁要想象如果开发人员仅仅花费1个小时思考就做出决定,那么他们的工作将会如何更加容易、最终产品将会有多好。
实际上的难题是,不能仅仅依赖于PowerPoint演示文稿中的一两个要点就得出选择MCU架构的结论。然而,一旦你有正确的信息,并愿意花一点时间应用它,就不难做出最佳选择。
看到这里您是否又有项目灵感需实现,点击下面开发软件帮你忙。
Silicon Labs Simplicity Studio平台开发工具
Silicon Labs 集成开发环境工具
Silicon Labs 配置向导2开发工具
Silicon Labs FLASH编程开发工具
Silicon Labs 8位MCU Keil PK51 开发工具
Silicon Labs ToolStick 开发工具
Silicon Labs μVision 调试驱动程序开发工具
Silicon Labs 生产编程器开发工具
Silicon Labs .HEX转化.SVF开发工具
Silicon Labs USB复位实用程序开发工具
- |
- +1 赞 0
- 收藏
- 评论 6
本网站所有内容禁止转载,否则追究法律责任!
评论
全部评论(6)
-
闲云 Lv7. 资深专家 2019-03-27不错,学习了
-
奔走的蜗牛 Lv3. 高级工程师 2018-11-08学习学习
-
MH居士 Lv3. 高级工程师 2018-07-07真是干货
-
Dennis Lv3. 高级工程师 2018-06-06很棒的文章!
-
Jacker Lv5. 技术专家 2017-09-27学习了
-
木chen Lv8. 研究员 2017-09-18干货!
相关推荐
【技术】8位MCU与32位MCU的区别
对某类应用做产品定义和规划时,首要任务之一就是选择理想的处理器/控制器,但开发人员往往难以选择合适的MCU。本文是关于微控制器的技术文章,该文从基本差异、基准性能、应用适用性等角度详细地对8位和32位MCU进行了分析。
技术探讨 发布时间 : 2016-07-01
【技术】小封装、多用途8位MCU EFM8BB3系列MCU工作模式详解
EFM8BB3系列MCU是Silicon Labs公司推出的一款小封装、多用途8位MCU,该MCU最高运行频率可达49MHz,其RAM容量最大为4352B,FLASH容量最大可达64KB。
技术探讨 发布时间 : 2017-12-04
【技术】超低功耗32位MCU EFM32之硬件AES加密引擎
EFM32是Silicon Labs公司推出的超低功耗的32位MCU系列,其不仅有很多低功耗的特性,在安全性上也是非常出色。在针对一些对信息比较敏感的场合,特别是针对一些数据流信息,如果先采用数据加密,然后在进行传输,则可以增加信息的保密程度。本文档为大家详细介绍EFM32硬件AES加密引擎。
技术探讨 发布时间 : 2017-11-09
【经验】8位MCU EFM8系列编程接口与U-EC6的连接方法
Silicon Labs 的EFM8系列的MCU是最新一代的8位MCU,芯片支持在线调试功能,采用的调试接口继承了C8051F系列的C2调试接口,这是一个两线制的调试接口,调试时只需要C2CK时钟信号与C2D数据信号就可以。本文介绍U-EC6的信号定义及Silicon Labs 8位MCU EFM8的编程接口与U-EC6的连接方法。
设计经验 发布时间 : 2019-10-31
【经验】Silicon Labs 8位MCU 烧录程序异常的解决方法
本文介绍Silicon Labs的8位MCU C8051F/EFM8系列的芯片在量产烧录过程中遇到问题的解决方法。
设计经验 发布时间 : 2019-01-27
为物联网开发选择最佳的MCU架构
微控制器(MCU)如何在物联网设备中使用?开发人员又该如何为产品选择最合适的MCU解决方案?Silicon Labs产品营销高级经理Gopinath Krishniah先生将通过本篇博文说明MCU的应用知识和开发技巧,并介绍评估选用8位和32位MCU的关键考量。
设计经验 发布时间 : 2024-05-15
【经验】8位MCU EFM8中插入NOP空指令的三种方法:RC-51编译器、SDCC编译器、Keil C51编译器
EFM8系列是Silicon Labs公司的8位MCU,由于其高性价比被广泛的应用于各种行业。并且EFM8系列资源丰富,能满足不同场景需求。对于单片机开发通常需要延时,对于简单的延时NOP空指令不失为一种最优的办法。
设计经验 发布时间 : 2019-10-10
【经验】如何解决8位MCU在烧录过程中烧录器或者调适配器与C2调试接口连接不上的问题
本文介绍如何解决生产时出现烧录器(或者调适配器) 与目标板连接不上的问题。以Silicon Labs 8位MCU为例,主要说明讨论了每个用户功能的C2复用由于隔离配置问题导致目标设备连接不上。
设计经验 发布时间 : 2020-07-02
BB5x 8位MCU用于嵌入式的三大优势——小尺寸、经济高效、设计简化
芯科科技的8位MCU产品组合,在芯科科技提供Simplicity Studio软件开发平台上同步支持8位和32位产品,还可支持EFR32系列无线SoC。这种单一平台解决方案有助于消除设计过程中不必要的复杂性,使设计人员能够将时间和精力集中在产品研发方面,而不是适应新的开发环境,从而缩短了开发周期并加快了上市时间。
应用方案 发布时间 : 2023-12-27
【经验】如何基于J-FLASH对32位MCU EFM32 进行批量烧写?
Silicon Labs 32位MCU EFM32,以低功耗、高性能等著称,被广泛应用在电池供电等需要低功耗的领域。因应用广泛,在批量烧写上,也得到多家软件支持。本文将详细描述名基于SEGGER的J-Flash软件对EFM32烧写FLASH的方法及步骤。
设计经验 发布时间 : 2018-09-17
【经验】Silicon Labs 32位MCU EFM32在静电测试时的故障排查
本文介绍Silicon Labs 32位MCU EFM32在做静电测试时,出现复位、死机情况时如何去查找原因
设计经验 发布时间 : 2019-06-11
新发布BB5x 8位MCU,报名MCU技术讲座学习嵌入式开发关键技巧
本次技术讲座将详细说明以芯科科技8位和32位MCU,以及无线SoC作为物联网开发通用平台的诸多优势,包括低功耗、高性能、缩减物料清单(BOM)成本,以及可轻松迁移至无线多协议设计等等。
原厂动态 发布时间 : 2023-12-11
【经验】一文教你如何快速搭建8位MCU EFM8开发环境
Silicon Labs(芯科科技)在本文讲述如何快速搭建8位MCU EFM8开发环境,帮助行业人士深入掌握EFM8 8位MCU的开发及应用技巧。
设计经验 发布时间 : 2019-01-27
Silicon Labs EFM8系列8位MCU的IO Crossbar硬件分配
EFM8系列是Silicon Labs公司的8位MCU,总共分为4个系列:通用型EFM8BB系列、低功耗EFM8SB系列、带USB的EFM8UB系列和高性能的EFM8LB系列。EFM8系列MCU的IO具有Crossbar功能,即软件上可以分配IO的外设,为硬件设计提供了灵活性。但是Crossbar功能分配外设时并不是引脚随意分配,而是具有优先级要求的。
设计经验 发布时间 : 2018-06-27
Silicon Labs BB5x 8位MCU强势登场,报名专题技术讲座探索物联网开发的通用MCU平台!
本次技术讲座将详细说明以芯科科技8位和32位MCU,以及无线SoC作为物联网开发通用平台的诸多优势,包括低功耗、高性能、缩减物料清单(BOM)成本,以及可轻松迁移至无线多协议设计等等。技术专家并将引领您探索新的EFM8 BB5x 8位MCU系列产品、EFM32 PG28系列产品,以及EFR32无线SoC全系列产品家族的特性。
原厂动态 发布时间 : 2023-11-23
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论