闪存|嵌入式开发:在工业应用中优化 GUI 的 5 个技巧

闪存|嵌入式开发:在工业应用中优化 GUI 的 5 个技巧

传统上 , 工业应用包括模拟按钮、开关和拨号 , 以与用户进行交互 。 如你所知 , 时代在变 , 工业应用用户现在需要丰富的图形用户界面(GUI) 。 许多接口建立在嵌入式系统之上 , 这些系统非常强大 , 但它们仍然是资源受限的系统 。 在嵌入式开发中 , 它们可能在处理能力、内存或电池寿命方面受到资源限制 。

在今天的文章中 , 我们将探讨一些在工业应用中优化GUI 的技巧 。
【闪存|嵌入式开发:在工业应用中优化 GUI 的 5 个技巧】技巧1:直接从flash 中绘制图像
GUI图像通常以PNG 格式存储在闪存中 。 PNG文件格式是一种压缩图像格式 , 旨在节省空间 。 这听起来不错 , 但如果图像被压缩 , 这意味着处理器需要解压缩图像才能将其写入帧缓冲区 。 解压缩图像不仅需要内部RAM , 而且还会浪费潜在的宝贵时钟周期来解压缩图像 。
开发人员可以利用的优化是解压缩他们的PNG 并将它们以TGA格式存储在闪存中 。 此格式是一种未压缩的文件格式 , 支持8、16、24或32 位/像素 , 带有8 位Alpha 通道 。 虽然每个图像都会比PNG 大 , 但它可以直接从闪存写入帧缓冲区 , 而无需浪费CPU 周期和RAM进行解压缩 。 值得庆幸的是 , 闪存通常非常便宜 , 而且许多系统设计人员无论如何都会加大它们的尺寸 , 因此这种优化不仅会提高系统性能 , 而且对系统成本的影响也应该很小 。
技巧2:优化图像存储格式
有几种不同的图像格式可用于与显示器交互 , 但它们的创建方式并不相同 , 并且具有各种优点和缺点 。 例如 , RGB888格式为嵌入式开发人员提供了每像素24位的颜色深度 , 这意味着每个红色、绿色和蓝色颜色控制使用8位 。 虽然这确实提供了丰富的色彩 , 但除了更复杂的硬件和利用要求之外 , 存储图像可能需要额外的存储空间 。
工业应用的一个很好的权衡是改用RGB565 格式 。 RGB565 格式为开发人员提供了每像素16 位的颜色深度 , 其中5 位用于表示红色 , 6位用于表示绿色 , 5位用于表示蓝色 。 显然 , 颜色保真度不会像RGB888 格式那样丰富 , 因为我们使用的是16 位而不是24位表示 。 为了恢复由于可用位较少而丢失的一些颜色保真度 , 我们可以在图像中添加抖动 。 结果是一个漂亮的图像 , 节省了存储和计算能力 。

技巧3:仔细优化动画
一般来说 , 动画可以在修饰GUI方面发挥很大作用 。 无论是创建精美的闪屏还是在屏幕上显示实时数据 。 动画的问题在于它们通常使用大量的处理能力 。 在播放动画时 , CPU利用率长时间飙升至100%的情况并不少见 。 这可能是不可取的 , 特别是如果有其他实时活动正在进行 。 值得庆幸的是 , 可以使用一些很棒的优化 。
首先 , 限制动画空间的大小 。 动画只占屏幕的一小部分是很常见的 。 但是 , 嵌入式开发人员经常一遍又一遍地重写整个屏幕 。 开发人员可以缩小它们的大小 , 使其不使用整个屏幕 。 通过这样做 , 他们可以只更新屏幕的一小部分 。 这会导致图像存储大小、使用的内存以及处理动画所需的时钟周期减少 。
另一个建议是使用快速RAM来优化像素写入 。 大多数基于微控制器的系统都有一定数量的快速、零等待RAM , 甚至是设计用于与图形加速器和帧缓冲区一起使用的RAM 。 使用此RAM 可以最大限度地减少执行周期 , 并在屏幕动画时将CPU 负载保持在100% 以下 。
技巧4:利用DMA
嵌入式开发人员经常忽略的另一种简单技术是利用微控制器(MCU) 直接存储器访问(DMA) 控制器 。 DMA控制器由多个通道组成 , 可用于执行以下类型的内存传输: