引擎架构
归根结底,绘图系统最终将某些内容显示在物理显示屏上。 快速。
“嵌入式绘图系统”一词有许多种含义。
首先,不同的人对“嵌入式系统”一词有不同的理解。 对某些人来说,嵌入式系统意味着十分传统的8位微控制器,无操作系统,实际上也无RAM、ROM或GPIO。 对其他人来说,它可能意味着功能强大的现代智能手机。
其次,“绘图系统”一词有许多种解释。 对某些人来说,它表示在喜欢的绘画程序中绘制像素。 对其他人来说,它表示游戏机上运行的3D渲染软件。
对TouchGFX而言,嵌入式系统表示STM32微控制器上的任意系统。 绘图系统表示运行频率为60帧每秒的交互式应用。
四个组成部分
为了在此类平台上实现绘图应用,我们考虑四个直接相关的主要组件。 当然,嵌入式系统可能包含许多其他组件,但其他组件与图形显示的相关性较小。
简而言之,TouchGFX使用MCU,通过对flash中的各个部分进行组合,创建和更新RAM中的图像。 处理好的图像会被传输到显示屏。 系统会视需要尽可能多地重复此过程。
MCU
在这个过程中,MCU承担了所有重要任务。 它读取闪存中的图像,并将它们写入RAM。 在将半透明红色文本融合到图像上时,它计算得到的色彩并将其存储到RAM。 它对圆的所有像素进行渲染并存储到RAM。 等等。
STM32 MCU具有特定功能,能够为绘图系统的实现提供帮助。 参见MCU部分了解不同MCU的详细信息。
RAM
计算后的图像存储在RAM中。 MCU对RAM执行读和写操作。 在将所得图像传输给显示屏时,再次执行读操作。
RAM通常位于MCU内部。 如果将所得图像存储在内部RAM中的方法不可行,可以添加外部RAM。
Flash
所有静态数据均存储在闪存中。 图像、字体和文本。 闪存由MCU读取,其内容被写入RAM或与RAM内容进行组合。
在大多数情况下,由于内部闪存很少能够容纳下所有图形资产,因此应用中会增加外部闪存。
理想的做法是对闪存进行存储器映射,以便从闪存直接读取像素并写入RAM。 或者,可将闪存内容缓存在RAM中,然后再从RAM读取。
显示
显示屏将图像实际显示给人眼。
RAM中存储的图像由MCU按固定时间间隔发送到显示屏。
性能
为了在这种设置和最终的显示屏上获得流畅的动画效果,在实现嵌入式绘图系统时必须注意一些事项。
基本策略
通常务必考虑的几点:
- 不在无变化的部分花费时间
- 从闪存传输到RAM的数据应尽可能少
- 从RAM传输到显示屏的数据应尽可能少
- 在图像质量与动画速度之间寻求适当平衡
- 利用硬件功能
TouchGFX Engine有助于解决所有这些问题,但开发人员也必须注意。
设置特定策略
大量可能的嵌入式设置意味着基于特定设置与基于其他设置能够实现的效果之间可能存在巨大差异。
可能的设置概览
- STM32 MCU
- 50至500 MHz时钟频率
- 图形相关IP:Chrom-ART, Chrom-GRC, JPEG codec, ...
- RAM
- 0至1 MB(内部)
- 0至100 MB(外部)
- Flash
- 0至1 MB(内部)
- 0至1 GB(外部)
- 显示
- 1至24位色彩
- 100x100至1000x1000像素
显然,在一种可能设置上可实现的UI应用,在另一种设置上可能根本无法实现。 因此,必须注意让需要的UI应用与实际设置保持一致。
TouchGFX是为这些设置至底层开始设计的,侧重于最大程度利用STM32 MCU的能力并尽可能减少对RAM和闪存的需求。