ZHCT412 june 2023 AM625
Google 的 Flutter™ 软件开发套件可用于进行简单的界面编程。本米6体育平台手机版_好二三四概述是由 TI 和 TI 的 Flutter 第三方合作伙伴 Klarälvdalens Datakonsult AB (KDAB) 共同编写的分步指南,其中包含使用 TI AM62x 入门套件 (SK) 评估模块 (EVM) 进行基于 Flutter 的人机界面 (HMI) 开发的说明。
在当今世界,人们倾向于花更多时间通过显示屏与机器交互,而不是通过机械方式控制机器。例如,许多新型汽车或家用电器的主屏幕上都运行着图形用户界面 (GUI)。通过 GUI,用户可以控制设备并激活音乐、广播、电话、温度控制等功能。同样,在机场或餐厅,公众可通过自助式售货亭与相关公司进行通信。售货亭在显示设备上运行 GUI,客户使用售货亭触摸屏,通过机器即可满足要求。总之,业界的趋势是终端消费者越来越趋向于通过与 GUI 进行交互,便捷高效地完成任务。
从开发人员的角度而言,打造美观的 GUI 至关重要,因为 GUI 是客户与米6体育平台手机版_好二三四之间通信的关键要素之一。要在 AM62 等嵌入式器件上运行 GUI,有多个 GUI 框架可供选择。每个框架都是独特的,并支持以下部分特性:
尽管选择 GUI 框架具有挑战性,但在嵌入式平台上启用和优化 GUI 框架是一项要求更高的任务。本米6体育平台手机版_好二三四概述旨在帮助开发人员在 TI 平台上启用和优化 Flutter 框架。TI 的下一代器件 (AM625) 已支持多种现代 GUI。有关更多信息,请参阅 AM62x 设计库。借助 TI 器件和随附的软件开发套件 (SDK),开发人员可灵活选择任何框架。
Flutter 最近获得了广泛关注,它支持触控,提供现代 GUI,并具有更小的存储器栈和较宽松的许可条款。如果开发人员有兴趣使用 Flutter 并希望在 TI 的嵌入式平台上进行开发,可以按照以下流程操作,具体步骤如下:
git clone https://git.ti.com/git/arago-project/oe-layersetup.git tisdk
cd tisdk
cp configs/processor-sdk/processor-sdk-08.05.00.21-config.txt configs/flutter-config.txt
echo "meta-flutter,https://github.com/ardera/meta-flutter.git,dunfell,HEAD" >> configs/flutter-config.txt
./oe-layertool-setup.sh -f configs/flutter-config.txt
cd build/
export TOOLCHAIN_PATH_ARMV7=$HOME/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf
export TOOLCHAIN_PATH_ARMV8=$HOME/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu
echo 'IMAGE_INSTALL_append = " flutter-pi-runtimedebug flutter-gallery-runtimedebug "' >> conf/local.conf
echo 'TOOLCHAIN_HOST_TASK:append = " nativesdk-flutter-sdk"' >> conf/local.conf
echo 'FLUTTER_SDK_TAG = "stable"' >> conf/local.conf
echo 'SRCREV_pn-flutter-gallery-runtimedebug = "9776b9fd916635e10a32bd426fcd7a20c3841faf"' >> conf/local.conf
. conf/setenv
MACHINE=am62xx-evm bitbake-layers add-layer ../sources/meta-flutter
MACHINE=am62xx-evm bitbake tisdk-default-image
arago-tmp-external-arm-glibc/deploy/images/am62xx-evm/tisdk-base-image-am62xx-evm.wic.xz
flutter-pi /usr/share/flutter/gallery/
在为 AM62xx 平台优化 Flutter 应用时,GPU 是主要考虑因素。AM62x 上的 GPU AXE-1-16M 是分块延迟渲染器 (TBDR),与较常见的即时模式渲染器 (IMR) 运行方式不同。有关 TBDR 的更多信息,请参阅以下文章了解 PowerVR 图形架构:
开发 GPU 架构旨在将对存储器的读取和写入保持在最低水平,这是实现高效操作的基本要求。部分操作会妨碍 GPU 将存储器流量保持在最低水平。GPU 的存储器带宽也受限,以便实现低功耗操作。
Imagination Technologies™ 提供了对 PowerVR 硬件进行性能优化的指南,但并未提供 Flutter 环境内的很多具体详细信息。有关使用 AM62 硬件开发 Flutter 应用的建议如下:
默认情况下,所有 Flutter 图像都启用了 α 混合。尽可能避免 α 混合。α 混合是通过将图像与背景结合实现透明效果。使用以下提示和技巧,可确保尽量少使用 α 混合。
避免使用纹理和图像也可以 提高效率和性能。分块渲染 GPU 可非常高效地绘制纯色三角形。使用经光栅化的元素时,通常需要更多的存储器带宽。
以下示例说明了如何在不使用 α 混和和最近邻插值的情况下绘制图像。
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import 'dart:ui' as ui;
/// Draw the background image with a custom painter.
class BackgroundImagePainter extends CustomPainter {
BackgroundImage(this.image);
final ui.Image image;
final Paint imagePaint = Paint()
..blendMode = BlendMode.src // Disables alpha blending.
..filterQuality = FilterQuality.none; // Nearest neighbor interpolation.
@override
void paint(Canvas canvas, Size size) {
canvas.drawImage(image, Offset.zero, imagePaint);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) {
return oldDelegate.image != image;
}
}
class BackgroundImage extends StatelessWidget {
const BackgroundImage({super.key, this.image});
final ui.Image image;
@override
Widget build(BuildContext context) {
return CustomPaint(
painter: BackgroundImage(
image: image
),
);
}
}
GUI 是人机交互的重要方面。选择合适的 GUI 可能问题重重,但是无论开发人员如何选择,TI 的下一代器件 AM62x 均能运行任何现代 GUI。如需更多信息,请参阅在 TI AM6254 使用 Flutter 演示。
KDAB 可在米6体育平台手机版_好二三四开发周期的任何阶段为客户提供帮助,包括全栈开发计划和架构、现代开发流程、工具和持续集成。在嵌入式器件方面,KDAB 提供了特别深入的专业知识,涵盖软件栈的所有部分,特别是操作系统(通常是嵌入式 Linux™)、UI 框架(Qt、Flutter 等)以及给定硬件上的性能优化。
KRUNAL BHARGAV 是 TI 的系统应用工程师,主要从事图形和显示支持工作。自 2017 年起,Krunal 一直在 TI 工作,参与设计嵌入式 HMI 系统中的米6体育平台手机版_好二三四并提供支持。Krunal 拥有美国新泽西州新泽西理工学院的硕士学位。
Hannes Winkler 自 2021 年起担任 KDAB 的软件工程师,拥有马格德堡大学计算机科学学士学位。他是适用于嵌入式 Linux 的 Flutter 引擎嵌入器 Flutter-pi 的开发者,也为部分 Flutter 引擎和工具功能的开发做出了卓越贡献。