本帖最后由 STM新闻官 于 2025-2-26 15:55 编辑
作为嵌入式系统的“大脑”,MCU负责处理和执行各种指令。以往,由于MCU资源受限,实现高端UI会遇到性能瓶颈;但如今,很多MCU内置了强大的GPU(图形处理单元),工程师们即便不选择成本更高的MPU(微处理器单元),仍能实现复杂且美观的UI。但如果想在嵌入式系统中实现高端UI,还面临挑战,开发人员在设计架构和开发UI时,还需要面对内存配置这一棘手难题,以确保系统的高效运行和用户体验的流畅性。在开发过程中,设计工程师很容易忽视MCU中RAM和闪存的容量。往往在开发进程推进到一定阶段后,才发现内存要么不够用,要么过剩。内存不足时,编程工作会变得异常艰难,甚至无法进行;而内存过剩,则是对资源的严重浪费。因此,合理规划内存配置,成为嵌入式系统高端UI开发的关键环节,需要开发人员在前期就给予足够重视。
在嵌入式系统中实现高端UI:哪种内存配置才是最优解?
回顾意法半导体(ST)过去几年发布的集成嵌入式GPU的STM32微控制器,能清晰地发现一个趋势:MCU的图形处理能力越来越强。这背后的关键助力之一就是 NeoChrom GPU这类功能强大、效率更高的IP的出现,它让更多嵌入式系统产品和应用领域都能实现UI功能。
STM32U599是首款搭载NeoChrom GPU的MCU,而STM32U5F9和STM32U5G9嵌入了NeoChromVG GPU——首个集成在STM32内部的加速矢量图形处理IP。同样,主频达600MHz的STM32H7R/S,是配备启动闪存的STM32 MCU,仅有64KB内部Flash,还搭载了NeoChrom GPU,在存储和图形处理两方面都实现了升级,为用户带来更出色的使用体验。
所以,目前的问题不是哪款MCU能运行高端UI,而是哪种内存配置才是最优解。开发人员不仅要考虑代码和数据的存储,还得确定帧缓冲区、素材资源等的存放位置。开发团队可能会将图形资源存储在外部存储器中,可最终却发现接口带宽不足,无法带来流畅的使用体验。相反,系统集成商可能选用了一款配备大容量嵌入式闪存的MCU,结果却发现这些闪存还是不够用,无奈只能添加外部存储模块,这就导致MCU上原有的存储空间被白白浪费。
基于STM32产品,可以发现有三种内存配置策略: 大容量嵌入式闪存(4MB)和嵌入式RAM(3MB) 无嵌入式闪存,但有大容量嵌入式RAM(4.2MB) 闪存和RAM都较小(64KB到128KB的闪存以及约500KB的RAM)
▲ 嵌入式系统内存的三种配置方案
每种内存配置方案分别适合哪些UI,哪一款STM32 MCU最适用这些UI的应用场景?
大容量嵌入式闪存和嵌入式RAM
据调研机构Transforma Insights预测,到2033年,联网并配备显示屏的暖通空调(HVAC)系统数量将接近7.5亿台。随着建筑物不断优化其能源消耗,智能HVAC设备需要配备带显示屏的控制单元,这样能更方便地监测能耗并设定温度曲线。
这些显示屏的分辨率一般都在480×480到800×480之间。对于大多数制造商来说,这样的分辨率已够用,除非他们面向的是高端市场。图像资源通常采用16位色深,要求动画效果流畅,但复杂度不能高。多数用户期望UI能够响应迅速,并能直观呈现所有信息和产品功能,且方便操作。
在这一特定应用场景下,帧缓冲区占用的SRAM可控制在3MB以内。搭载大容量嵌入式闪存的MCU能存储所有图形资源,工程师无需再使用外部存储模块。因此,STM32U5G9和STM32U5F9在这样的场景中很受欢迎,它们内置3MB的RAM,闪存容量在2-4MB之间。
若想存储更多图形素材,就得配备外部闪存模块。不过,STM32U5的八通道SPI接口读取图形资源完全没问题。另外,最新的STM32U5系列器件不仅能帮助很多HVAC系统实现单芯片设计,还提供超低功耗模式,这对依靠电池供电的GUI而言至关重要。
无嵌入式闪存,但具备大容量嵌入式RAM
边缘AI是嵌入式系统领域里发展极为迅猛的领域。GUI对于边缘AI应用来说是刚需,因为在运行神经网络算法后做出的决策或得出的推理结果需要通过GUI展示。例如,在计算机视觉应用中,用户必须了解系统识别出了什么,而最直观的方式就是通过GUI传达。
在边缘AI的应用场景中,神经网络需要占用闪存,因此,系统通常会使用大量的外部NOR闪存,来存储机器学习算法、系统程序、GUI及其他应用程序。因此,工程师们通常采用大容量的外部闪存,同时使用大容量的嵌入式RAM。如果在AI+GUI应用中,内存RAM无法满足应用,也可以外扩RAM,将显示用的帧缓存放在外部RAM,内部的RAM全部留给AI应用,以获得更高性能。
STM32N6轻松添加用于1280×720分辨率显示屏的帧缓冲区。同时,这款MCU的高速存储接口能从四通道/八通道SPI闪存中读取资源,并将资源缓存在外部RAM中,不会造成性能瓶颈。
这样的内存配置策略使具有边缘AI功能的系统更轻松地实现GUI,同时也为不考虑边缘AI却又需要大容量嵌入式RAM的用户提供新的选择。这就是ST推出不带NPU的STM32N6的原因,让不需要NPU的用户也能通过这种新型内存配置,在可用内存中存储帧缓冲区,大幅简化设计流程。对集成商来说,不必添加外部RAM模块,不仅能简化PCB布局,还可以缩短开发周期。
嵌入式闪存和嵌入式RAM都较小
很多高端嵌入式系统完全依靠外部RAM和外部闪存。以游戏配件和外设为例,它们的嵌入式RAM或嵌入式闪存总是不够用,必须依赖外部组件。由于这类应用对品质的高要求,GUI需要更大空间来存储素材资源。以1024×600分辨率、像素色深24位的双帧缓冲区为例,双帧缓存应用大概需要占用3.6MB的空间。
对于家庭自动化网关来说,它既要运行图形界面,又要处理通信协议和安全功能。工程师往往不选自带大量嵌入式RAM和闪存的MCU,而是选择性价比更高的MCU,把BoM预算留给外部存储器。
STM32H7R7/S7可以更好地服务于这些应用,这是配备64KB内部闪存和620KB RAM的STM32 MCU。STM32H7R7/S7内置NeoChrom GPU,能够加速双线性插值运算以及任意角度的纹理映射,从而释放Cortex-M7内核,让它去执行其他任务。此外,STM32H7R7/S7还配备了一个运行频率为200MHz的16线SPI、一个8线SPI以及四线SPI闪存接口,以便快速从外部存储模块中读取资源,并直接将其传输至系统缓存,避免出现性能瓶颈。开发人员还可以借助灵活的FMC存储控制器接口连接快速16/32位SDRAM。
物理和软件层面的考量
还有不少因素会对UI的创建和性能产生重大影响。比如选了引脚数量太少的封装,就只能用速度较慢的内存接口。要是集成商只盯着价格,开发工程师就不得不在性能方面做出妥协。
同样,添加外部RAM虽然能提升可扩展性,但会导致运行速度比嵌入式RAM慢。现在有了NeoChrom这类新型GPU,只要开发团队的内存配置正确,就可以通过更具成本效益的MCU,为更多产品配备GUI。▲ 三款STM32 MCU产品比较
此外,开发过程中还有一个对内存使用率影响很大的因素,那就是图形框架。我们向大家推荐TouchGFX,这是ST免费提供的框架,配备了设计器、模拟器和代码生成器,它通过多种内存优化方案,有效减少RAM和闪存的占用。ST最近推出的新压缩算法,并支持矢量字体和图形,可以进一步节省存储空间。同时,在旋转、缩放效果、视频功能和多语言支持等方面也进行了优化。借助板级支持包,开发人员能够快速测试每个MCU的运行情况。因此,在MCU上开发智能手机界面般的GUI已不再像过去那样困难重重。
结语总的来说,为不同的应用场景找到适合的内存配置,是实现嵌入式系统高端UI的关键,它直接影响系统的性能和用户体验。ST凭借丰富且强大的MCU产品线,加之全面的工具和生态支持,使得更多系统能够轻松实现高级GUI,推动嵌入式系统在视觉交互领域的进一步发展。
|