微控制器内存的选择及注意事项

描述

闪存现在完全支配微控制器(MCU),但随着处理器已经发展到32位架构并且外设变得更加强大,内存考虑变得更加复杂。很容易忘记奇特外设中的内存,使MCU更像是片上系统(SoC),包括先进的电机控制,图形用户界面(GUI)和网络。

仍然,Flash和其他内存类型的细节值得注意,以确保所选MCU具有符合系统需求的内存。在MCU中以更高的速度快速增加ARM®Cortex™-M处理器架构的使用也可以更加仔细地检查内存支持。供应商采用不同的方法来处理片上存储器选项,这可能会使MCU选择平衡。

如今在大型MCU上可以使用多达一兆字节的闪存。随着MCU发现新应用程序并采用新功能,程序存储,数据表和暂存器RAM的比例发生了变化。高端MCU可能采用高级语言(HLL)编程,运行实时操作系统(RTOS),并利用现成的堆栈和软件包。每个因素都会影响内存需求和使用。

通常用于MCU的闪存具有访问时间,可以跟上25到50 MHz的处理器时钟。当高性能处理器内核的时钟频率超过200 MHz时,填补耗时耗力的等待状态可能存在巨大差距。多个片上总线和特殊路由机制对于缓解某些繁忙微控制器中的流量问题非常有用。

ARM处理器内核架构具有非常好的代码密度,因为其紧凑的Thumb2®指令只需要16位来存储指令而不是预期的32位。 ARM Cortex-M0,Cortex-M3和Cortex-M4内核在众多厂商的微控制器中很受欢迎,这里将研究一些内存选择。

恩智浦半导体LPC4000 - 实时辅助数据处理

恩智浦半导体在基于ARM的微控制器方面取得了成功,因为很久以前ARM7TDMI®内核适用于MCU。恩智浦在其产品组合上市后迅速将Cortex-M内核添加到其产品组合中,并且一直是将Cortex-M3,Cortex-M0和Cortex -M4集成到一端的高速MCU的领导者之一,同时推动价格降低另一个。恩智浦是第一批进入超宽闪存组织以缓冲后续存储器位置以确保可用性而无延迟的公司之一。

恩智浦最新的MCU系列LPC4000(见图1)引起了人们的兴趣,原因有两个,例如包含Cortex-M4,它具有数字信号处理(DSP),单指令多数据(SIMD) ,以及可选的浮点指令 - 以及每个指令上的单独Cortex-M0处理器内核。为了保持Cortex-M4足够快,并保持低功耗,恩智浦将片上闪存扩展到256位宽,这是业界最广泛的。

内存

图1:恩智浦LPC4000架构(恩智浦提供)。

恩智浦使用相当简单的缓冲系统来保存32行最近的Flash存储器访问,为最近提取的指令提供即时可用性。与使用更奇特的方案相比,这提供了更一致的执行性能。一些缓存替换算法可以对编译器生成的代码起作用,并且可能更难以模拟和调试。恩智浦发现,他们的Flash执行可以在RAM的5%的性能范围内运行,在当前的90纳米工艺中运行高达150 MHz。

两个Flash存储区提供隔离和分区,当应用程序继续从另一个存储区运行时,重新刷新一个存储区时也能提供绝对的信心。

LPC4000具有高达1 MB的闪存,片上有高达264 KB的SRAM - 程序与数据存储器的比例为4:1。如果需要,可以直接从大部分RAM执行指令,无需等待状态 - 这是最快的确定性实时处理的理想选择,无需担心代码在细粒度级别反弹。可以使用各种SRAM模块,因此不同的例程和输入/输出(I/O)不会争用总线时间。

LPC4000易于使用廉价的外部闪存,用于扩展程序空间,代码将首先复制到SRAM中以便最快地执行,甚至是用于显示屏的大型图形图像。随时可用的闪存带有串行外设接口(SPI)端口,包括四SPI闪存,实际上可以直接映射到处理器的正常存储空间,程序员不必考虑它是片上还是连接串行片外。 SPI闪存接口(SPIFI)为外部闪存提供四个通道,并允许Flash中的图像以高达40 MBps的速度直接DMA到LCD控制器。

Cortex-M0有自己的8 KB程序存储器,并通过共享存储器将消息传递给更大的兄弟Cortex-M4。

这一系列的MCU还包括32 KB ROM,其中包含软件驱动程序,启动代码和其他一些代码,以减轻系统设计人员编写此代码的麻烦,并为更多特定于应用程序的例程留下更多珍贵的Flash。 ROM执行的速度和功率效率自然也比Flash好。某些MCU提供了一个执行可靠的固定时间DIVIDE操作的库。

恩智浦早期版本的ARM Cortex MCU可能采用更大的180 nm或140 nm工艺节点,大多数采用128位宽闪存,而不是刚刚描述的256位架构。所有的闪存都是由恩智浦专门为MCU开发的,它内置单错误纠正/双错误检测,具有更好的闪存完整性和监控功能。恩智浦拥有广泛的基于ARM的MCU,其中包含Cortex-M0,Cortex-M3和Cortex-M4,最小的只适用于16引脚封装,售价仅为8位MCU的预期。

STMicroelectronics STM32 - 快速,巧妙的存储器

STMicroelectronics是另一家公司,在将早期的ARM7™和ARM9™内核与32位MCU配合使用后,很快就采用了STM32产品线,在微控制器中采用了ARM Cortex-M3。意法半导体最新的STM32F4系列(见图2)可以在90纳米工艺中将Cortex-M4推向168 MHz,同时在芯片上提供高达1 MB的闪存和192 KB的RAM。

内存

图2:STMicroelectronics STM32F4架构(由STMicroelectronics提供)。

为了获得这种性能,意法半导体开发了自适应实时存储加速器(ART Accelerator™)。这是一个类似于微处理器系统的缓存控制器,可根据从Flash执行的程序的需求进行定制。 Flash由128位组织,因此单个读取包含4个32位指令,其中Thumb2指令可以是6到8个实际指令。

ART加速器使用预取队列和64项分支缓存来缓解由于分支,子程序调用甚至可能是系统调用或中断而导致的指令流更改延迟。如果重定向的程序计数器想要最近获取的位置,则目标可能仍然驻留在分支高速缓存中,在这种情况下,它可以立即加载到预取队列中以便执行,从而节省了周期。片上逻辑的更智能(自适应)高速缓存管理应该比简单的方法产生更积极的结果(更高的比特率)。

为了减轻数据访问(例如数据查找表或图像数据)上的Flash停顿,ART加速器有8个128位缓冲区。引用位置对于数据来说相当差,但是可以通过基于对程序中使用数据的详细了解巧妙地安排数据来改进数据。这类似于装配中的手工编码。

意法半导体(STMicroelectronics)认为,闪存执行速度高达168 MHz,在零等待状态存储器执行的2.5%范围内。它将CoreMark™基准测试作为其效率和速度的证明,尽管编译器的有效性和设置也会影响这些结果。首先,168 MHz STM32F4 MCU比这一类中的任何其他MCU快得多地执行例程,并显示出频率上的线性。其次,“Coremarks/MHz”(每个时钟周期完成的有效工作)是最高的之一。

STM32F4上的实时时钟模块包括一个4 KB电池备份SRAM,用于在极低功耗条件下保存变量和状态信息。更为独特的是,528字节的一次性可编程ROM可用于序列号,MAC地址,加密密钥,校准设置以及每个装运单独的其他数据的存储。

STMicroelectronics还采用7级ARM高速总线(AHB)矩阵,允许在ARM处理器,通用DMA,与USB或网络控制器相关的DMA等主机之间同时进行数据传输,以及众多的从属设备。外围设备和记忆。

STMicroelectronics拥有众多ARM Cortex-M0和原始Cortex-M3的MCU配置,从低成本,轻载控制器到具有复杂外设的快速时钟设备。他们还有一个低功率线路。意法半导体声称基于Cortex-M的MCU累计出货量占市场份额的45%,因此其中许多产品已被使用。

飞思卡尔半导体Kinetis - 灵活的存储器

飞思卡尔半导体基于ARM处理器的主要微控制器需要一段时间才能开始,尽管它已经销售了基于Power Architecture™及其专有ColdFire®架构的32位MCU数十年。飞思卡尔凭借其增强的功能快速推出ARM Cortex-M4内核,相当不错地填补了其新的Kinetis™产品系列(参见图3)。

内存

图3:飞思卡尔Kinetis架构(飞思卡尔提供)。

从小型K10到今天的全口径K70,片上闪存的容量从32 KB到1 MB,根据芯片的不同,从32位到128位宽。闪存在90 nm工艺节点上制造,根据电压响应约30 ns,但Kinetis MCU运行速度高达100 MHz,速度提高了一倍。飞思卡尔的薄膜存储(TFS)闪存可以在低至1.71伏的电压下读取,擦除和写入,这很不错,因为它在两个几乎耗费1.5伏的AA电池的限制范围内(一旦达到0.9伏特,它们会迅速降级) )。

Kinetis MCU有自己的指令和数据缓存来帮助克服Flash读取延迟,并且它们也可以解决片外存储器问题。这足以使Kinetis MCU看起来像Kinetis的额定速度一样高效。内存保护单元可帮助操作系统使一个任务的程序无法进入另一个任务的内存空间。

主闪存补充了飞思卡尔称之为FlexMemory的东西,FlexMemory是一种特殊的Flash,也可以作为E2PROM运行。程序员决定使用多少作为程序Flash,余额用作E2 - 最多16 KB。作为E2运行的部分自动启动特殊逻辑,执行耗损均衡和写入算法,以获得更多FlexFlash专用的100万次可能达到1000万次耐久性循环。

与其他供应商的情况一样,飞思卡尔利用纵横开关让总线主控制器同时访问主闪存,FlexFlash,SRAM和各种外设,以保持数据的最佳移动。

德州仪器Stellaris - 固件包括

Stellaris®微控制器是第一批使用新型ARM Cortex-M3架构的产品,它们由领先的合作伙伴Luminary Micro开发,现由德州仪器公司所有。 Stellaris拥有丰富的MCU系列,可满足从电机控制到网络和用户界面的各种应用需求。

德州仪器(TI)以80 MHz的速度运行,具有高达512 KB的错误检查闪存,高达96 KB的数据RAM,有些还有自己的2 KB传统E2PROM片内。 Stellaris的闪存可以执行高达50 MHz的单周期读取,超过此速率,预取缓冲区的效果通过读取每次读取64位和引入推测分支来最小化延迟。

虽然ROM目前在大多数MCU上似乎已经消失,但许多基于Stellaris LM3S和Cortex-M4的LM4F MCU(见图4)特别使用了紧凑型ROM来存储一些基本且经常访问的代码供所有应用程序使用。这些驱动程序和例程称为StellarisWare®,包括外设驱动程序库,引导加载程序和向量表,抢占式实时调度程序SafeRTOS™,循环冗余校验(CRC)错误检测操作以及用于高级加密的加密表标准(AES)功能。将这些有用的功能和数据放入快速,廉价的ROM(适当时)中可以释放大量的Flash,这些Flash可以更好地用于增强终端设备的自定义代码。

内存

图4:德州仪器Stellaris LM4F架构(德州仪器公司提供)。

记住你的应用程序 - 内存可能会让它变得更好

每个应用程序的需求都是不同的,选择微控制器时需要考虑很多因素。此处已经回顾了许多与各种供应商的高端MCU相关的闪存,SRAM,ROM和专用存储器功能。虽然没有任何一个部件可能具有适合您应用的理想功能,但现在许多存储器选项应该更清晰。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分