为什么ST也要做MPU?为什么入场这么晚但我们仍绝对看好?
扫描二维码
随时随地手机看文章
STM32系列MCU在通用型微控制器领域处于领先的地位,为何还要推出MPU系列的产品STM32MP1呢?一方面,是由不同应用场景决定的。即使存在譬如Linux RT拓展和uCLinux这种系统存在,但很多应用中仍必要一个完整的MPU。另一方面,如果可以提供高度兼容的MCU和MPU产品,那么用户可以轻松地将其产品设计进行上下迁移,最大限度利用软件和代码,在长时间内获取最佳的投资回报。
上述的第一点是所有的MPU厂商都明确的,并且很多产品在功耗性能价格方面也都做的非常优秀了。第二点则不是那么容易实现的,因为这涉及到整个厂商的产品战略,很多市场上已有的MPU产品最初就是单独作为一个产品家族/品牌来进行规划的,所以很难做到高度的MPU与MPU产品的兼容性。但ST似乎是唯一在这方面可以做到更好的厂商,而且ST也深谙这一道理,所以你可以看到MP1仍然是属于STM32家族中的,从软件环境到硬件内核,都提供了高度的兼容性。这也就是为何即使较晚进入一个成熟的MPU市场,但ST仍然信心十足的原因。
MCU与MPU区别是什么?
MCU与MPU的区别非常明显,MCU使用片上嵌入式闪存来存储和执行程序,以这种方式存储程序意味着MCU的启动时间非常短,并且可以非常快速地执行代码,但这种可用内存空间是有限的。 MPU没有相同的内存约束,使用外部存储器来提供程序和数据存储。程序通常存储在诸如NAND或串行闪存之类的非易失性存储器中,并且在启动时被加载到外部DRAM中,然后开始执行。这意味着MPU的启动和运行速度不会像MCU那样快,但是可以连接到处理器的DRAM可以高达几千M。另一个区别是功耗。通过嵌入自己的电源,MCU只需要一个单电压电源轨。相比之下,MPU的内核,DDR等需要几个不同的电压轨。开发人员需要通过板上附加的PMIC来满足这一要求。
图片来源:Cliff Brake
选择的决定因素是什么?
在给自己的嵌入式应用进行计算平台选择时,有多种需要考虑的因素来决定到底要选择MCU还是MPU。第一点可以考虑是否需要一些图形界面的交互,UI的复杂程度是怎么样的。MPU通常会配置TFT LCD控制器,所以更适合进行显示的交互的处理。虽然近年来的趋势是很多TFT LCD控制器也会在MCU中进行配置,但受限于内存大小,所以这些显示的应用一般都是确定好的,所以不能够给终端用户预留出一些拓展的可操作的空间,这些配置TFT LCD控制器的MCU并不是想要取代MPU的市场,而是为了提升传统段式和点阵式LCD显示的体验,主流的彩TFT显示应用上还需要MPU来做。
第二个因素是考虑到一些高速的连接需求,MPU上很容易找到千兆网口、高速USB口等高速通信外围,可以提供足够的信道和带宽来处理数据流量。虽然现在MCU也可以进行很多高速通信的工作,但仍需要注意检查使用第三方堆栈时候对于代码空间的影响,某些需要基于OS的堆栈的高速应用需要基于MPU的系统来做。
第三个因素是要考虑应用的确定性/实时性。因为MCU采用内部嵌入式闪存,所以在实时性方面可以提供保证。而MPU需要从外部进行加载需要一定的时间,另外Linux基础的系统在重启的时候耗时也比较多,不适合应用在一些有确定性需求的场景中。总的来讲,虽然现在MCU和MPU都在相互靠近,但两者仍有着各自明确的应用场景。
双核A7+M4实现高效灵活架构
在近日北京召开的发布会中,意法半导体微控制器事业部STM32微处理器产品市场经理Sylvain RAYNAUD表示,STM32MP1为用户提供了灵活高效的架构。在目前推出的三个型号中,主流的两个型号提供了双核A7+M4的架构,而最低成本的型号则提供单核A7+M4的架构。据称,三个核心采用了安全的互相通信的方式,大部分外设都挂载在同一条主线上,因此三个核心可以根据各自的需求来调用外设。
STM32MP1内部的Cortex-A核心可以支持3D图形处理,最高系统时钟可以达到533MHz,同时支持OpenGL ES 2.0。Cortex-M4有一个独立的448kB的专用RAM,就像普通的MCU一样Cortex-M4程序在RAM里执行可以确保代码执行的实时性和可靠性。STM32MP1可以同时做两部分应用,一部分是高速处理接口,可以用A7+Linux完成,显示屏支持两种:一个是24位RGB,最高达到 60fps;一种是MIPI DSI 2Lane串口屏, 在Linux中可以达到720P高清显示。 DDR 存储上支持DDR3/DDR3L、LPDDR2/LPDDR3,系统主频 可达到533MHz。外部高速接口一般配到A7上,支持GMAC高速以太网。三个USB2.0,其中两个内置HS PHY。实时处理由Cortex-M4完成,可以做实时处理、马达驱动、sense感测和低功耗数据采集,整个系统非常灵活,这是因为三个内核可以根据应用灵活切换各种模式,实现系统最佳优化。
功耗与性能并重
STM32MP1全速运行模式时Cortex-A7跑分可以达到2470DMIPS,同时双核Cortex-A7 +3D GPU是打开的。Cortex-M4最高跑到209,MIPS部分可以达到260个MIPS;在这种情况下是整体能效最大的情况。而在Cortex-A7核待机,只有Cortex-M4在跑的时候,功耗是正常模式的四分之一。而当STM32MP1进入待机模式时,功耗仅仅是前一个模式的1/2500。ST为STM32MP1提供了全功率模式、分批功耗优化模式、待机模式这三种不同的模式来帮助用户优化整体的设计功耗,平衡其设计的性能和功耗。另外从待机模式回到全速运行有一个很重要的关键因素,就是唤醒时间。 STM32MP1只需1秒回到Linux界面,只需要3秒回到3D图形应用界面。从1秒回到Linux界面属于业界领先的水平,几乎难以找到比这个更短的;而根据图形的大小,3秒回到3D图形界面的时间还可以变得更短。
完备的开发生态
依托于STM32成熟的生态系统,在STM32MP1上,ST也提供了完备的软件、硬件和客户支持。
STM32提供了OpenSTLinux开发包用于A7部分的开发,保证系统软件的稳定性。目前STM32MP1 SoC驱动程序已被Linux社区采用和认可,ST的STM32MP1支持Linux4.19LTS。此外,ST全面兼容包括Linux的Foundation和Yocto Project在内的开源软件的标准。ST在Yocto建立了一个Project,确保用户可以稳定简易使用这个开发包。同时ST也支持Linaro社区,提供了参考软件和培训资料。指的一提的是,ST还提供了预集成安全操作系统OP-TEE,免除了用户去自己寻找安全软件的烦恼,并且完全免费也降低了用户的成本。在M4部分,不用多说了,用户可以重复使用其之前的STM32Cube应用。
软件开发工具方面, 目前可以使用CubeMX、ac6、KEIL和IAR等工具进行调试和开发。未来可能会通过CubeIDE来取代ac6实现A7部分的编程调试工作。最后在硬件方面,同样MP1也会有eval板和discovery板,此外还有不少第三方的开发版和SoM。可能MP1并不会再提供nucleo版本的板子出来。
为什么晚入场的MP1仍然被我们看好?
正如文章开头所提及到的,ST因为在STM32MCU方面有着深厚的根基,然后在此基础上推出的MP1可以很好地帮助用户在整个平台上进行设计的上下迁移,节省很多的再开发的时间。同时长远来看可以为大客户提供更优异的投入回报比。以风头最劲的专门做MPU的i.MX系列来看,近年来正在做一些下探的工作,将成本降低到MCU的水平,提供MPU一般的高性能的跨界处理器。不可否认的是其性能价格极具优势,以iMXRT系列举例,其老用户都是MPU用户,在迁移到RT的M7+M4的平台上时必然会有很多的重开发的工作。
ST将其用户划分为三个来源:纯MPU用户,对于他们而言,吸引力在于其可以在实时控制的M4核这边获得很多成熟的资源的支持。对于MPU和MCU的混合用户,可以在ST提供的整体的开发环境内提高工作效率,在做交互设计时更为得心应手。对于纯MCU用户,想要向上提升设计到MPU平台的这部分人来说,选择MP1应该是非常好的选择。
一直坚持内升的ST在STM32家族的更新方面一直稳扎稳打,第三季度的营收也取得了高预期的增长,反观很多半导体厂商则受到了大环境的影响,营收大幅下跌。所以选择一个持续稳定的平台对于客户而言也是非常重要的一点。
ST还为MP1提供了配套的MPIC——STPMIC1,得益于此目前已经有很多的第三方的SoM和开发板快速面世。
图:OCTAVO推出的MP15X