《基于ARM处理器的微控制器内存问题.docx》由会员分享,可在线阅读,更多相关《基于ARM处理器的微控制器内存问题.docx(7页珍藏版)》请在第一文库网上搜索。
1、基于ARM处理器的微控制器内存问题闪存现在完全主导着微控制器(MCU),但随着处理器升级到32位架构并且外设变得更加强大,存储器考虑变得更加复杂。很容易忘记外设中的内存,这些外设使MCU更像是一个包含高级电机控制、图形用户界面(GU1)和网络的片上系统(SOC)。尽管如此,F1ash和其他存储器类型的细节仍值得关注,以确保所选MCU具有符合系统需求的存储器。在MCU中以更高速度快速使用ARMCortexw-M处理器架构也需要更仔细地检查内存支持。供应商对其片上存储器选项采取不同的方法,这可能会影响选择哪个MCU的平衡。如今,在更大的MCU上可以使用多达1兆字节的闪存。随着MCU发现新应用并具有
2、新功能,程序存储、数据表和暂存器RAM的比例发生了变化。高端MeU可能使用高级语言(H11)进行编程,运行实时操作系统(皿),并使用现成的堆栈和软件包。这些因素中的每一个都会影响内存需求和使用。通常用于MCU的闪存的访问时间可以跟上25到50MHz的处理器时钟。当高性能处理器内核的时钟频率超过200MHz时,可能会有一个巨大的差距来填补耗时耗电的等待状态。多个片上总线和特殊的路由机制对于缓解一些繁忙的微控制器中的流量问题非常有益。ARM处理器内核架构由于其紧凑的ThUn1b2指令而具有非常好的代码密度,该指令仅需要16位来存储指令,而不是预期的32位。ARMCorte-M0Corte-M3和C
3、orte-M4内核在众多供应商的微控制器中都很流行,这里将研究一些内存选择。NXPSemiconductors1PC4000-实时辅助数据处理NXPSemiconductors自从很久以前将ARM7TDMI内核用于MCU以来,它就在基于ARM的微控制器上取得了成功。恩智浦在Cortex-M内核推出后迅速将其添加到其产品组合中,并且一直是将CorteX-M3、Cortex-MO和Cortex-M4集成到一端高速的MCU中的领导者之一,同时将价格推低至另一个。恩智浦是最早使用超宽闪存组织来缓冲后续内存位置以确保无延迟可用性的公司之恩智浦最新的MCU系列1PC4000(参见图1),它之所以有趣有几个
4、原因,例如包含Corte-M4它具有数字信号处理(医)、单指令多数据(SIMD)和可选的浮点指令一一以及作为每个单独的Cortex-MO处理器内核。为了保持Corte-M4足够快的修曳速度并保持低功耗,恩智浦将片上闪存扩展至256位宽,是业内最宽的。NXPMemoryComponents1PC4000图1:NXP1PC4000架构(由NXP提供)0NXP使用一个相当简单的缓冲系统来保存32行最近的闪存访问,使最近获取的指令立即可用。与使用更奇特的方案相比,这提供了更一致的执行性能。一些缓存替换算法可以针对编译器生成的代码工作,并且可能更难以摸拉和调试。NXP发现他们的闪存执行可以在RAM的5%
5、范围内运行,在当前90nm工艺中运行速度高达150MHzo两个闪存组提供隔离和分区,当应用程序继续从另一组运行时重新刷新一个组时也提供绝对的信心。1PC4000具有高达1MB的闪存和高达264KB的片上SRAM一一程序与数据存储器的比例为4:1o如果需要,可以在零等待状态下直接从大部分RAM执行指令一一非常适合最快的确定性实时处理,而无需担心代码在细粒度级别上反弹。可以使用各种SRAM块,因此不同的例程和输入/输出(I/O)不会争夺总线时间。1PC4000可以很容易地使用廉价的外部闪存来扩展程序空间、将首先复制到SRAM中以实现最快执行的代码,甚至是用于显示屏幕的大型图形图像。现成的带有串行外
6、围接口(SPI)端口的F1aSh,包括quad-SPIF1ash,实际上可以直接映射到处理器的正常存储空间中,程序员不必考虑它是片上的还是连接的串行芯片外。SPIF1ash接口(SP1F1)为外部F1ash提供了四个通道,并允许F1ash中的图像以高达40MBps的速度直接DMA到1CD控制器。Cortex-MO拥有自己的8KB程序内存,并通过共享内存将消息传递给更大的兄弟Corte-M4o该系列MCU还包括32KBROM,其中包含软件驱动程序、启动代码和其他方便的代码位,以使系统设计人员不必编写此代码,而将更多宝贵的闪存留给更多特定于应用的例程。ROM执行的速度和功率效率自然也优于F1ash
7、0一些MCU提供了执行可靠的固定时间除法运算的库。恩智浦早期版本的ARMCortexMCU可能在更大的180nm或140nm工艺节点上,并且大多数使用128位宽的闪存,而不是刚刚描述的256位架构。所有闪存都是由NXP专门为MCU开发的,它具有内置的单错误纠正/双错误检测和日志记录,以实现更好的闪存完整性和监控。恩智浦拥有广泛的基于ARM的MCU,其中包含Cortex-MOCorte-M3和Corte-M4,最小的只有16引脚封装,并以8位MCU的价格出售。STMicroe1ectronicsSTM32-快速、巧妙的记忆STMicroe1ectronics是另一家在将较早的ARM7和ARM9内
8、核用于32位MCU之后,很快通过其STM32产品线在微控制器中采用ARMCorte-M3的公司。STMicroe1ectronics最新的STM32F4系列(参见图2)可以在90nm工艺中将Corte-M4推至168MHz,同时提供高达1MB的闪存和192KB的片上RAMoSTMicroMemoryComponentsSTM32F4DSPSIMOF1oat18MHZ-1r1r1rUTTARTcacheMACaMr.cryptokey4KRAMto192KSRAM图2:STMicroe1ectronicsSTM32F4架构(由STMicroe1ectronics提供)。为了获得这种性能,意法半导
9、体开发了自适应实时内存加速器(ARTAcce1erator)0这是一个类似微处理器系统的高速缓存控制器,专为满足从闪存执行的程序的需要而设计。闪存由128位组成,因此单次读取包含4条32位指令,而Thumb2指令可以是6到8条实际指令。ART加速器使用一个预取队列和一个64条目的分支缓存来减轻由于分支、子程序调用,甚至可能是系统调用或中断而导致的指令流变化的延迟。如果重定向的程序计数器想要一个最近获取的位置,则目标可能仍驻留在分支缓存中,在这种情况下,它可以立即加载到预取队列中执行,从而节省周期。片上逻辑的更智能(自适应)缓存管理应该比更简单的方法产生更积极的结果(更高的比特率)。为了缓解闪存
10、在数据访问(例如数据查找表或图像数据)时的停顿,ART加速器具有8个128位缓冲区。1oca1ity-of-reference对数据来说是很差的,但是可以通过基于对它在程序中的使用的详细理解巧妙地安排数据来改进它。这类似于汇编中的手动编码。STMicroe1ectronics发现闪存执行速度高达168MHz,而零等待状态存储器的执行速度仅为2.5%。它吹捧CoreMarkTM基准作为其效率和速度的证明,尽管编译器的有效性和设置也会影响这些结果。首先,一个168MHz的STM32F4MCU执行例程的速度比同类中的任何其他MCU都要快得多,并且在频率上表现出线性。其次,“Coemaks/MHz(每
11、个时钟周期完成的有效功)是最高的之一。STM32F4上的实时时钟模块包括一个4KB电池供电SRAM,用于在极低功耗条件下保存变量和状态信息。更独特的是,528字节的一次性可编程ROM可用于序列号、MAC地址、加密密钥、校准设置以及存储每个出厂设备独有的其他数据。STMicroe1ectronics还利用7级ARM高速总线(AHB)矩阵,允许在ARM处理器等主设备、通用DMA、与USB或网络控制器相关的DMA以及众多外设和存储器等从设备之间同时传输数据。STMicroe1ectronics拥有众多ARMCortex-MO和原始Corte-M3的MCU配置,从低成本、轻负载的控制器到具有复杂外设的
12、快速时钟设备。他们还有一条低功率线。STMicroe1ectronics声称在基于Cortex-M的MCU的累计出货量中占有45%的市场份额,因此其中许多产品已被使用。Freesca1eSemiconductorKinetis-灵活的内存Freesca1eSemiconductor的基于ARM处理器的主要微控制器需要一段时间才能起步,尽管它已经销售了数十年基于PowerArchitecture及其专有CoIdFire架构的32位MCUo飞思卡尔在ARMCort-M4内核及其增强功能上迅速跃升,其新的Kinetisw产品系列得到了很好的补充(参见图3)0Freesca1eMemoryCompon
13、ents图3:飞思卡尔KinCtiS架构(由飞思卡尔提供)。从较小的K1O到今天的全口径K70,片上闪存的大小从32KB到1MB,根据芯片的不同,其宽度从32位到128位不等。闪存在90nm工艺节点上制造,响应电压约为30ns,但KinetisMCU运行速度高达100MHz,有望实现双倍速度。飞思卡尔的薄膜存储(IES)闪存可以在低至1.71伏的电压下读取、擦除和写入,这很好,因为它在两个几乎用完的1.5伏AA电池的限制内(一旦它们达到0.9伏,它们就会迅速退化)。KinetisMCU有自己的指令和数据缓存来帮助克服闪存读取延迟,并且它们还可以寻址片外存储器。这足够有效,以至于KinetisM
14、CU在Kinetis的额定速度下看起来与其他MCU一样高效。内存保护单元帮助操作系统防止一个任务的程序进入另一个任务的内存空间。主闪存辅以飞思卡尔称之为F1exMemory的东西,这是一种特殊的闪存,也可以作为E2PR0M运行。程序员决定将多少用作程序闪存,其余用作E2-最多16KB0作为E2运行的部分会自动使用执行磨损均衡和写入算法的特殊逻辑,以获得100万次甚至可能高达1000万次的耐用周期,因为更多的F1exF1ash是专用的。与其他一些供应商的情况一样,飞思卡尔利用交叉开关让总线主控器同时访问主闪存、FIeXFIash、SRAM和各种外围设备,以保持数据以最佳方式移动。TexasIns
15、trumentsSte11aris-包含固件Ste11aris微控制器是第一批使用新ARMCorte-M3架构的产品,当时它们由主要合作伙伴1uminaryMicro开发,现在归德州仪器所有。Ste11aris拥有丰富的MCU集合,服务于从电机控制到网络和用户界面的应用。德州仪器MCU以适中的80MHz速度运行,具有高达512KB的错误检查闪存、高达96KB的数据RAM,有些还拥有自己的2KB片上传统E2PR0MoSte11aris的闪存可以执行高达50MHz的单周期读取,在此频率以上,预取缓冲器的作用通过每次读取读取64位并使用推测分支来最大限度地减少延迟。虽然现在ROM在大多数MCU上似乎
16、已经消失了,但许多SteIIariS1M3S和基于Corte-M4的1M4FMCU(参见图4)特别使用紧凑型ROM来存储可能被所有应用程序使用的一些基本且经常访问的代码。这些驱动程序和例程称为Ste11arisWare,由外围驱动程序库、引导加载程序和向量表、抢先式实时调度程序SafeRT0S循环冗余校验(CRC)错误检测操作和用于高级加密的密码表组成标准(AES)函数。将这些有用的功能和数据放入快速、廉价的ROM(在适当的情况下)可以释放大量闪存,这些闪存可以更好地用于增强终端设备的自定义代码。T1MemoryComponentsSte11aris1M4FCortex-80MHz1-1prefcbuffer图4:德州仪器Ste11a