C

Infineon TRAVEO™ T2G

注意:Infineon TRAVEO™ T2G 的预构建库使用 GHS 2017.1.4 编译器构建。要使用不同的编译器版本,您必须重新构建 Qt Quick Ultralite 库。有关更多信息,请参阅从源码构建 Qt Quick Ultralite

注意:仅对 Windows 主机平台提供 Infineon TRAVEO™ T2G 的官方支持。

板卡特性

硬件板CPU 型号CPU 类型VRAM/LPDDR内部闪存内部 SRAM外部闪存外部 RAM
TRAVEO™ T2G CYT3DLCYT3DLABHS一个 240 MHz 32 位 ARM® Cortex®-M7 内核和一个 100 MHz ARM® Cortex®-M0+ 内核2048 KB (VRAM)4160 KB384 KB高达 256 MB 的 SEMPER™ NOR 闪存高达 256 MB 的 HyperRAM™
TRAVEO™ T2G CYT3DL (4M LITE KIT)CYT3DLBBHS一个 240 MHz 32 位 ARM® Cortex®-M7 内核和一个 100 MHz ARM® Cortex®-M0+ 内核2048 KB (VRAM)4160 KB384 KB高达 256 MB 的 SEMPER™ NOR 闪存高达 256 MB 的 HyperRAM™
TRAVEO™ T2G CYT4DNCYT4DNJBHS两个 320 MHz 32 位 ARM® Cortex®-M7 内核和一个 100 MHz ARM® Cortex®-M0+ 内核4096 KB (VRAM)6336 KB640 KB高达 256 MB 的 HyperFlash™ NOR 闪存高达 256 MB 的 HyperRAM™
TRAVEO™ T2G CYT4EN (技术预览)CYT4ENDBQS两个 320 MHz 32 位 ARM® Cortex®-M7 内核和一个 100 MHz ARM® Cortex®-M0+ 内核1024 MB (LPDDR)6336 KB640 KB高达 256 MB 的 SEMPER™ NOR 八通道闪存高达 256 MB 的 HyperRAM™

支持的颜色深度

这些板卡的参考端口支持每像素 32 位颜色深度。

还支持每像素 16 位和 24 位颜色深度,但不是通过 ItemLayer API,而是通过 QUL_COLOR_DEPTH

有关更多信息,请参阅 颜色深度

层支持

为了优化 VRAM 的使用并支持更大的显示屏,Infineon TRAVEO™ T2G 支持以下渲染模式

  • IBO 模式
  • LBO 到内存模式
  • OTF 模式(LBO 到显示)。

概述

在IBO模式下,光栅化操作直接按照绘图命令发出的顺序将图像绘制到目标帧缓冲区。LBO将以逐行的方式将绘图绘制到行缓冲区,然后将完整的行缓冲区写回帧缓冲区。LBO模式可以节省带宽,因此可以提高性能。

LBO可用于写入帧缓冲区(LBO到内存)或直接写入显示(LBO到显示)。后者也称为OTF(即席)。在OTF的情况下,只需要存储一部分完整帧缓冲区,以便在VRAM中存储可能较小的行缓冲区。

具体来说,虽然IBO模式需要width*height*bpp*2字节来存储一个双缓冲的帧缓冲区集合,但LBO行缓冲区只需要width*lines*bpp字节,其中lines是行缓冲区的高度。默认情况下,lines设置为64个在TRAVEO™ T2G CYT3DL,128个在TRAVEO™ T2G CYT4DN和TRAVEO™ T2G CYT4EN,但可以使用在本部分中描述的方法在高级层配置部分中配置。还需要一些额外的较小缓冲区来执行渲染指令和其他相关的渲染任务。

由于OTF模式在性能和内存使用方面的优势,它是Qt Quick Ultralite中的默认层配置。

OTF模式的缺点是,如果渲染操作太多,LBO可能无法及时写入行缓冲区,从而导致显示上可能出现视觉杂点。因此,在使用OTF模式时,应用程序应确保同时显示的视觉元素不要太多,尤其是转换图像资产,因为它们的光栅化需要更长的时间。

按层选择渲染模式

当创建ItemLayer时,可以使用ItemLayer::renderingHints属性来控制使用的渲染模式。该平台的默认渲染提示可以通过MCU.Config.platformDefaultLayerRenderingHints设置。TRAVEO™ T2G CYT3DL和CYT4DN的默认值为OptimizeForSize,这将导致OTF渲染模式。对于TRAVEO™ T2G CYT4EN,默认值是NoRenderingHins,对应于IBO渲染模式。

要使用IBO模式,使用渲染提示NoRenderingHint

ItemLayer {
    renderingHints: ItemLayer.NoRenderingHint
}

要使用LBO到内存模式,使用渲染提示OptimizeForSpeed

ItemLayer {
    renderingHints: ItemLayer.OptimizeForSpeed
}

高级层配置

在某些情况下,可能需要覆盖Infineon TRAVEO™ T2G特定的某些OTF层配置值。

为此,可以使用Qt Quick Ultralite配置API for Infineon TRAVEO™ T2G。它是通过使用ItemLayer::platformId API为应更改配置的层提供一个特定的平台ID来工作的,然后使用提供的Tvii::Configuration::setConfigForOTFLayer C++ API在启动Qt Quick Ultralite应用程序之前设置自定义层属性。

下面是如何设置平台ID的示例

ItemLayer {
    platformId: 1
}

下面是如何包含正确的大头文件以使用C++ API的示例

#include <tviiextras/tviiconfiguration.h>

下面是如何配置OTF层的示例

Tvii::Configuration::setConfigForOTFLayer(1, 64, 128 * 1024, 256);

第一个参数是层的平台ID,正如在QML文件中所指定的那样。

第二个参数是指丛林的数目,它在LBO模式下用于渲染具有压缩的图像。如果在给定的层中使用大量压缩图像时出现错误,则此值可以从默认的16增加到更大。

第三个参数用于缓冲命令序列器指令的FIFO的大小。大量的视觉元素可能需要更大的FIFO缓冲区大小。默认值为64 * 1024。

最后一个参数是LBO使用的行缓冲区的大小。更大的行缓冲区会消耗更多的VRAM,但也能减少由OTF模式显示前未完成渲染的行而可能引起的视觉问题风险。

有关更多信息,请参阅TRAVEO™ T2G集群系列图形驱动程序用户指南。

平台限制

当使用 QML API时,存在一些硬件限制

  • 不支持在运行时更改层的z顺序或大小。
  • 一个应用程序最多可以有二层OTF层。
  • OTF层的最大大小为1300x720,因此在较大显示器上需要使用多个层。

当使用矢量轮廓进行文本渲染时,形状 API或Qul::PlatformInterface::DrawingEngine::blendPath() API绘制路径时,需要考虑一些限制

  • 复杂的路径可能会产生错误或缺失部分。可以通过在platform_config.h中增加QUL_PLATFORM_TVII_DRAW_CONTEXT_ALPHA_BUFFER_WIDTHQUL_PLATFORM_TVII_DRAW_CONTEXT_ALPHA_BUFFER_HEIGHTQUL_PLATFORM_TVII_DRAW_CONTEXT_PATH_BUFFER_SIZE的值来修复这个问题。
  • 自交路径可能导致视觉伪影。这是一个硬件限制(请参阅TRAVEO™ T2G图形驱动程序用户指南)。当使用形状 API时,建议将ShapePathstrokeColor属性设置为“透明”,以防止生成自交路径。
  • 对于LinearGradientReflectSpreadRepeatSpread传播类型不支持。仅支持PadSpread
  • 具有透明度的渐变颜色停止在桌面后端使用时进行不同的插值,并且将在透明区域中显得更淡。

由于图形驱动程序的限制,当前支持的源JPEG图像的唯一子采样模式是YUV420。请参阅样本应用程序用户指南用于JPEG解码驱动程序TRAVEO™ T2G集群系列用户手册获取更多信息。要将源图像转换为YUV420子采样格式,可以使用ImageMagick Convert工具:convert input.jpg -sampling-factor 4:2:0 output.jpg

使用绘图引擎进行文本渲染

如果使用Monotype Spark字体引擎,则可以启用一个实验性的Qt Quick Ultralite功能,以便使用矢量轮廓进行文本渲染。这利用了TRAVEO™ T2G硬件绘图引擎的路径绘制能力,将文本绘制到存储在视频内存中的表面上,然后进行混合以显示文本。

使用MCU.Config.fontVectorOutlinesDrawing QmlProject选项启用矢量轮廓。有关如何使用Monotype Spark字体引擎的更多详细信息,请参阅文本渲染和字体

注意:由于不支持自交路径的硬件限制,某些字体在绘制为矢量轮廓时可能会有视觉伪影。只支持没有自交轮廓的字体。

资源缓存策略

默认情况下,应用的资源数据在应用启动时会被拷贝到VRAM。为了将资源保留在闪存中,而不是在启动时将其加载到VRAM,在通过ImageFiles.MCU.resourceCachePolicy QmlProject属性以值NoCaching将资源添加到应用时,使用ImageFiles.files

资源存储部分

默认情况下,应用的资源数据存储在内部闪存上。相反,可以选择将在外部闪存中存储资源数据。当使用ImageFiles.files将资源添加到应用时,配置ImageFiles.MCU.resourceStorageSection QmlProject属性为QulResourceDataInExternalFlash

对于TRAVEO™ T2G CYT4DN,外部闪存仅支持TVII-C-2D-6M-327-SET (REV-01)版本。有关闪写的说明,请参阅在TRAVEO™ T2G CYT4DN上闪写HyperFlash™ NOR闪存

在TRAVEO™ T2G CYT3DL上,如果应用使用SEMPER™ NOR闪存,则闪写流程不同。有关闪写说明,请参阅在TRAVEO™ T2G CYT3DL上闪写SEMPER™ NOR闪存。对于4M LITE套件变体,请参阅在TRAVEO™ T2G CYT3DL (4M LITE套件)上闪写SEMPER™ NOR闪存

对于TRAVEO™ T2G CYT4EN,请参阅在TRAVEO™ T2G CYT4EN上闪写SEMPER™ NOR八位闪存的说明。

包含压缩资源

Infineon TRAVEO™ T2G支持一些基于自定义Run-length encoding (RLE)压缩格式的压缩,这些格式可以直接被blit引擎解码。以这种方式压缩的资产不需要额外的CPU时间以及内存来解码和存储图像数据的解压缩副本,如Qt Quick Ultralite支持的PNG压缩资产那样。Infineon TRAVEO™ T2G的RLE压缩限制是,以这种方式压缩的图像无法进行转换。一些图像使用RLE压缩也不会获得很好的压缩比。

使用AutomaticCompressedLossless

在Infineon TRAVEO™ T2G上使用RLE压缩图像的最简单方法是设置ImageFiles.MCU.resourceImagePixelFormatAutomaticCompressedLossless

ImageFiles {
    files: "image.png"
    MCU.resourceImagePixelFormat: "AutomaticCompressedLossless"
}

使用ResourceGenerator.cmake CMake模块

请参考tests/manual/traveo-t2g/compressed_images,以了解如何使用用于配置针对Infineon TRAVEO™ T2G特定资产ResourceGenerator.cmake的 CMake 模块,以指定颜色格式、RLE压缩标记和资产位置。

相对于AutomaticCompressedLossless,它能够提供更多显式的控制,可以明确控制使用哪种压缩方法和像素格式。

以下是一个关于如何使用ResourceGenerator.cmake CMake模块的示例

set(external_resources "${CMAKE_CURRENT_BINARY_DIR}/external_resources.cpp")
start_generated_external_resources_file(${external_resources})
    compress_with_resource_generator(test_tvii_compressed_images images/cover01.png "VRAM" "R8G8B8" "" ${external_resources} 128 128 OFF)
    compress_with_resource_generator(test_tvii_compressed_images images/cover02.png "InternalFlash" "R8G8B8" "c" ${external_resources} 128 128 OFF)
end_generated_external_resources_file(${external_resources})
target_sources(test_tvii_compressed_images PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/external_resources.cpp)
qul_add_resource(test_tvii_compressed_images
    FILES
        images/cover01.png
        images/cover02.png)

compress_with_resource_generator的第一个参数是目标,第二个参数是图像位置。

第三个参数是资产位置,其值可以是"InternalFlash","VRAM/LPDDR"("VRAM" 对于 TRAVEO™ T2G CYT3DL 和 CYT3DL LITE KIT 有效,而 "LPDDR" 仅对 TRAVEO™ T2G CYT4EN 有效),或"HyperRAM",对应以下内存银行之一

名称大小起始地址
InternalFlash~6 MB0x10000000
VRAM2 MB VRAM (TRAVEO™ T2G CYT3DL 和 CYT3DL LITE KIT),4 MB VRAM (TRAVEO™ T2G CYT4DN)0x24000000
LPDDR1 GB LPDDR (TRAVEO™ T2G CYT4EN)0x80000000
HyperRAM8 MB0x90000000

注意:对于VRAM(虚拟内存)有限的平台(如TRAVEO™ T2G CYT3DL和CYT4DN),将过多的图像资源放入VRAM可能会意味着VRAM不足以创建硬件层所需的缓冲区。如果遇到这种情况,可以通过将资源保存在内部闪存中释放VRAM。这可以通过上面描述的资源生成方法来完成,或者使用QUL_RESOURCE_CACHE_POLICY CMake属性。

第四个参数是颜色格式,可能的值包括R8G8B8A8(32 bpp RGBA)、X8B8G8R8(32 bpp BGR)、R8G8B8(24 bpp RGB)、R6G6B6(18 bpp RGB)、R4G4B4A4(16 bpp RGBA)、A1R5G5B5(16 bpp ARGB)、A8(8 bpp alpha格式)等。有关完整的可能性列表,请参阅TRAVEO™ T2G Cluster系列图形驱动程序用户指南。

第五个参数指定了压缩,值可以是""表示无压缩,"c"表示RLE压缩,"cRLA"表示RLA压缩,"cRLAD"表示RLAD压缩,或者"cRLAD<rgba>",其中RGBA值指定红色、绿色、蓝色和alpha通道的最大平均值位数。例如"cRLAD4442"。

第六个参数是压缩资源将写入的源文件的名称。最终应将其添加为目标源。

第七和第八个参数分别指定图像资源的宽度和高度。

最后一个参数控制是否启用对象分区。启用它可以提高使用LBO到IBO或LBO到OTF层时的blit引擎吞吐量,通过将压缩资源分成更小的分区。对于非压缩资源或直接IBO层,没有任何好处。

注意:对应用过变换的图像资源不应进行压缩,因为这可能会造成运行时错误或视觉问题。

显示输出(TRAVEO™ T2G CYT3DL 4M LITE KIT)

TRAVEO™ T2G Cluster 4M Lite (KIT_T2G_C-2D-4M_LITE) 配备了板载EZ-USB™ FX3控制器,允许通过USB线直接将图形输出流式传输到主机。

可以使用任何媒体播放应用程序在主机机器上显示图形输出。如果使用VLC媒体播放器,请选择媒体 > 打开媒体捕获...并选择以下设置

  • 捕获模式:DirectShow
  • 视频设备名称:FX3
  • 音频设备名称:None
  • 视频大小:800x480
  • 宽高比:5:3

下面的命令可以从Windows终端自动启动捕获图形输出。

set vlc="C:\Program Files\VideoLAN\VLC\vlc.exe"
%vlc% dshow:// :dshow-vdev=FX3 :dshow-adev=none :dshow-size=800x480 :dshow-aspect-ratio=5\:3 :live-caching=300

LVDS显示输出

USB显示输出是参考平台的标准模式。要使用LVDS显示输出,必须在构建文件夹中位于platform_config.h头文件中的预处理宏QUL_TVIIC2D4MLITE_USE_LVDS_DISPLAY启用后重新构建平台库。

LPDDR配置(TRAVEO™ T2G CYT4EN)

platform/boards/cypress/tviic2d6mddr-baremetal/lpddr4.c中设置的默认LPDDR参数如下

  • LPDDR初始化类型设置为INIT_WITH_TRAINING
  • MR4_DQS2DQ_TIMER_ID设置为0
  • 手动配置"Config_02_RD_LLLH_WR_LLLM_1_AC2.h"
  • 传递给Cy_SystemLpdd4PowerUp()的延时参数LPDDR4_POWER_DELAY_US设置为7000u

用于经过验证的端口的Infineon TRAVEO™ T2G TVII-C-2D-6M-DDR-CPU板修订版使用CYTVII-C-2D-6M-DDRPWR-ADPT板进行DDR电源传输。适配器板上没有可用的电源良好(PG)信号。要恢复默认PG轮询基于行为,请在qul_init_lpddr4()中的Cy_SystemLpdd4PowerUp()的第一个参数替换CY_SYS_LPDDR4_PG_BYPASSCY_SYS_LPDDR4_PG_POLL(参见platform/boards/cypress/tviic2d6mddr-baremetal/lpddr4.c)。

更改任何LPDDR参数后,需要重新构建平台库

扭曲

Infineon TRAVEO™ T2G支持扭曲,允许扭曲显示应用程序的坐标系。

应用程序需要提供CYGFX_WARP_PARAM_S结构和扭曲缓冲区。有关准备这些信息的说明,请参阅TRAVEO™ T2G集群系列图形驱动程序用户指南的第3.11.6节“扭曲缓冲区”。

使用针对Infineon TRAVEO™ T2G的Qt Quick Ultralite扭曲API,可以设置特定层以使用扭曲缓冲区。

首先包含必要的头文件

#include <tviiextras/layerwarping.h>

然后调用层给定平台ID的warping缓冲区,如下所示

Tvii::Warping::setWarpingBufferForLayer(platformId, warpBuffer, &warpParameters);

最后,您必须将应用链接到Qul::PlatformTraveoIIExtras。

TRAVEO™ T2G附加模块

Qt Quick Ultralite附带一个包含针对TRAVEO™ T2G特定API的附加模块的TRAVEO™ T2G附加模块。要使用这些API,将Qul::PlatformTraveoIIExtras链接到您的项目。

以下API可通过附加模块使用

<tviiextras/layerwarping.h>

提供设置TRAVEO™ T2G层扭曲的便利函数

<tviiextras/tviiconfiguration.h>

提供用于TRAVEO™ T2G层配置的额外配置函数

TRAVEO™ T2G自定义效果

要利用TRAVEO™ T2G的一些自定义硬件混合功能,可以使用PaintedItem API。

Qt Quick Ultralite traveo_t2g_effects 示例演示了一些使用PaintedItem API在TRAVEO™ T2G上的效果。此示例中包含的效果也可以用作自定义应用程序的组件。

其他板修订版

对于TRAVEO™ T2G CYT4DN,默认支持TVII-C-2D-6M-327-SET (REV-01)板修订版。要使用其他TRAVEO™ T2G CYT4DN板修订版,使用以下CMake配置选项从源代码重新构建平台

板修订版CMake配置选项
TVII-C-2D-6M-500-CPU-DQUL_TVIIC2D6M_BOARD_REVISION=500-BGA
TVII-C-2D-6M-327-CPU REV-B-DQUL_TVIIC2D6M_BOARD_REVISION=327-BGA-REV-B
TVII-C-2D-6M-327-REF(1920x720显示的集群)-DQUL_TVIIC2D6M_BOARD_REVISION=327-BGA-REF -DTVII_SCREEN_CONFIGURATION=1920x720

在特定Qt许可证下可用。
了解更多。