传统上 , 工业应用包括模拟按钮、开关和拨号 , 以与用户进行交互 。 如你所知 , 时代在变 , 工业应用用户现在需要丰富的图形用户界面(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 的 5 个技巧】一般来说 , 动画可以在修饰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必须使用一些周期和时间来渲染字体 , 然后才能将它们推入帧缓冲区 。
- 闪存|日本的智能机使用情况,是苹果多还是安卓多,哪个牌子最受欢迎?
- 闪存|铠侠庆祝NAND闪存发明35周年:一项对世界产生深远影响的技术
- 安卓|谷歌发布Android 13开发者预览版,首批适配多款谷歌手机
- 闪存|OPPO重庆继续加码,将启动建设研发中心
- pi|安卓13来了!谷歌Android 13首个开发者预览版发布
- scott|铠侠:今年是公司发明 NAND 闪存 35 周年
- 安卓|首个Android 13开发者预览版来了,以重新关注隐私和安全为核心
- 美团|外卖商家为何不联合开发专属APP来摆脱美团压榨?作为外卖骑手我想说一说
- 污染|日本两家闪存芯片工厂因不明污染停产,全球半导体供应链再遇风险
- 闪存|春节不想回公司加班?这个不到50元的神器全搞定