欢迎来到 Altia 开发者博客系列! 这些帖子由我们自己的 GUI 专家撰写,旨在展示使用我们的 UI 编辑器 Altia Design 和我们的自动图形代码生成器 Altia DeepScreen 开发和部署嵌入式用户界面的设计理念和智能解决方案。

一定要 注册账户 让我们的时事通讯将这些内容直接发送给您!


减少 miniGL 目标的 RAM 使用量

Altia miniGL 是一个 Altia深屏 与 OpenVG 和软件渲染等东西一起使用的架构实现,用于为功能较弱、资源受限的目标或环境生成设计。

Altia miniGL 代码在 RAM 消耗方面已经非常优化,但如果您仍在寻找减少 RAM 的方法,这里有一些值得研究的建议。

避免不必要的物体

Altia miniGL 非常有效地打包数据,但有一些设计选择可以进一步提高这种优化的有效性。 这 内置动画图像对象使用文件系统 代码生成屏幕中的选项将增加使用的 RAM 量。 这些选项强制您的 DeepScreen 代码允许更多的可变性,从而减少优化,因为数据的范围是未知的。 使用时也会出现同样的效果 快照对象。 如果您不需要它们,请避免使用这些对象或代码生成选项。

通常,下一个减少 RAM 的候选是 文本 I/O 对象. 这些可以通过检查每个对象的长度来修剪,以便它只消耗所需的最小 RAM 量。 您可以将代码生成设置最大文本字符串长度(静态内存)调整为可能的最长文本 I/O 的字符长度。 这也可以节省内部数据数组的空间。 如果这些数组中的任何文本 I/O 未被语言对象或逻辑寻址,则可以将它们更改为静态标签。 静态标签存储在 ROM 而不是 RAM 上。

一样的图片,一样的名字

如果您的设计包含对同一图像源文件的多个引用,请确保使用此图像的所有动画共享相同的名称。 如果您复制和粘贴图像对象,则名称会自动递增。 您可以在下面看到一个示例。

这可以通过将 _global 附加到动画变量名称来防止,下面也进行了演示。

现在,所有这些不同的对象都将加载和引用 RAM 中的同一个图像实例。 这可以实现嵌入式魔法,例如将纯色背景图像减少为为显示宽度复制的单列像素。 与加载整个图像相比,这将使用最少的 RAM。 这必须在取消选择代码生成下的图像对象使用文件系统选项的同时完成。 现在,无论许多图像动画在生成的二进制文件中共享一个名称,都引用了相同的图像数据。

最好测试一下

最后,请记住测试和比较本文中提到的所有方法的结果。 估算 RAM 使用率高度依赖于系统,对您的问题最可靠的答案是为您的设备和设计生成和编译代码。 由于设计实现的不同,外观相似的设计在 RAM 使用方面可能会有很大差异。 此外,相同的设计在不同的硬件上可能具有完全不同的内存使用情况。 例如,某些设备可以直接从 Flash 中引用图像数据并将其放入帧缓冲区。 但其他设备可能需要有图像的 RAM 副本来渲染它们。

请记住,嵌入式平台上有很多变量在起作用,因此对项目总 RAM 使用量的估计可能不准确。 没有比在 你的硬件 – Altia 让您轻松做到这一点。

想了解有关 Altia 代码生成的更多信息? 请求现场演示 今天和我们在一起!