该怎么对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 Cortex-M0+处理器的现代MCU与30年前的8051 MCU进行比照,8051 MCU在功能比照上不会胜出。走运的是,依然有许多供货商一向在对8位处理器继续出资。在许多运用中,8位内核能依然可以补偿M0+或M3内核晦气的当地,甚至在一些方面功能更佳。
开发东西也很重要。现代嵌入式固件开发需求全功能IDE、现成的固件库、丰厚的典范、完好的评价和入门套件以及帮手运用以简化硬体设定、库办理和量产程式设计之类的作业。当MCU有了现代化的8位内核和开发环境后,在许多状况下,这样的MCU将逾越根据ARM Cortex的相似MCU。
体系规划
一般性准则是,ARM Cortex-M内核更适用于较大的体系规划,而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位器材也具有物理尺度上的优势。例如,某些MCU的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中至关重要。
架构细节
现在,咱们来说根本情形。假设有根据ARM和根据8051的MCU各一个,配有所需的外设,那么关于较大的体系或需求要点考虑易用性的运用来说,ARM设备是更好的挑选。假如首要考虑的是低本钱/小尺度,那么8051设备将是更好的挑选。下面咱们关于每种架构更拿手的运用进行更具体的剖析,一起也划分出一般准则。
(1) 延时
两种架构的中止和函式呼叫延时存在很大差异,8051比ARM Cortex-M内核更快。此外,高档外设汇流排(APB)装备的外设也会影响延时,这是由于材料有必要经过APB和AMBA高功能汇流排(AHB)传输。最终,当运用高频内核时钟时,许多根据Cortex-M的MCU需求分配APB时钟,这也添加了外设延时。
简略阐明这个试验成果,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内核。这个比如阐明,清楚被开发体系所重视的环境中的各种架构优势是多么重要。做出这个最佳的决定是简略但却重要的一步。