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

更新时间: 2022-02-04 10:05:00来源: 粤嵌教育浏览量:11833

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


  在今天的文章中,我们将探讨一些在工业应用中优化 GUI 的技巧。


  技巧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 控制器由多个通道组成,可用于执行以下类型的内存传输:


  外设到 RAM

  RAM 到外围设备

  内存到内存


  这对于在没有 CPU 干预的情况下在应用程序中移动大量数据非常有用!这意味着可以在 CPU 忙于处理模数转换时在后台更新帧缓冲区。


  一些 MCU 还可以执行以下类型的 DMA 传输:


  闪存到 RAM

  闪存到外设


  这对于直接从闪存中读取图像并将它们推送到帧缓冲区非常有用。基于闪存的 DMA 通道往往不太常见,尽管它们正在寻找进入高性能 MCU 的途径。


  技巧5:预渲染字体


  GUI 显示文本是很常见的,而文本又使用某种字体。开发人员可以通过预渲染字体再次以更少的 CPU 周期换取存储空间,从而提高他们的图形系统效率。当字体已经被渲染时,它们可以直接写入屏幕。如果它们没有被渲染,那么这意味着 CPU 必须使用一些周期和时间来渲染字体,然后才能将它们推入帧缓冲区。


  工业应用越来越多地利用 GUI 为客户和用户提供直观且易于使用的界面。虽然工业 GUI 设计人员起初可能对利用基于嵌入式系统的解决方案犹豫不决,但我们在今天的帖子中看到,有许多优化技术可用于显着简化和优化这些应用程序。这些技术包括调整图像格式、图像存储方式以及减少 CPU 周期。归根结底,嵌入式开发人员需要仔细检查显示系统中的每个链接,并确定可以采取哪些措施来最小化所需的处理能力。

免费预约试听课