C

Qt Quick Ultralite内部リソースのプリロード

Qt Quick Ultralite内部リソースには、Controls ライブラリからアプリケーションにリンクされているダイヤルやボタンなどの画像データが含まれています。内部リソースはPlatformInterface::MemoryAllocator でのプリロードをサポートしていません。

内部リソースは自動的にQulModuleResourceData セクションに配置されます。これらのリソースをブレンドする際のパフォーマンスを向上させるために、プラットフォーム・ポートではこのセクションをRAMにロードすることを選択できます。

この例では、プリロード可能な内部リソース・データがQSPI フラッシュ・メモリ領域からSDRAM にコピーされます。

リンカ・スクリプトは、モジュール・データ用にシンボルとセクションを定義する必要があります。QulModuleResourceData セクションは、Qt Quick Ultralite が内部リソースを配置するために予約しています。ユーザー指定のリソースを配置してはなりません。

この目的のために、リンカスクリプトはプリロード可能な内部リソースのソースアドレスとデスティネーションアドレスを含むシンボルを定義します。

    QulModuleResourceData :
    {
        . = ALIGN(4);
        __ModuleResourceDataCacheStart = .;
        *(QulModuleResourceData)
        . = ALIGN(4);
        __ModuleResourceDataCacheEnd = .;
    } > SDRAM AT> QSPI

    __ModuleResourceDataStart = LOADADDR(QulModuleResourceData);

__ModuleResourceDataCacheStartQSPI から SDRAM にリソースをロードするには、__ModuleResourceDataCacheEnd__ModuleResourceDataStart も定義する必要があります。

コピーは、DMA を使用するか、次の例に示すように、プラットフォームの初期化が呼び出されたときにmemcpy を使用して実行することができます。

IARIAR例を確認してください。
    ...
extern unsigned char __ModuleResourceDataStart;
extern unsigned char __ModuleResourceDataCacheStart;
extern unsigned char __ModuleResourceDataCacheEnd;
memcpy(&__ModuleResourceDataCacheStart,
       &__ModuleResourceDataStart,
       &__ModuleResourceDataCacheEnd - &__ModuleResourceDataCacheStart);
    ...
#pragma section = "QulModuleResourceData"
#pragma section = "QulModuleResourceData_init"
    char *__ModuleResourceDataStart = (char *) (__section_begin("QulModuleResourceData_init"));
    char *__ModuleResourceDataCacheStart = (char *) (__section_begin("QulModuleResourceData"));
    char *__ModuleResourceDataCacheEnd = (char *) (__section_end("QulModuleResourceData"));
    memcpy(__ModuleResourceDataCacheStart,
           __ModuleResourceDataStart,
           (unsigned) __ModuleResourceDataCacheEnd - (unsigned) __ModuleResourceDataCacheStart);

これらのセクションをどのようにデバイスメモリに配置するか、IAR リンカースクリプトの例を確認してください。

注意: プリロードを使用しない場合、QulResourceData と同じ方法で、QulModuleResourceData をリンカースクリプトに追加することができます。この場合、__ModuleResourceData* シンボルとmemcpy は必要ありません。

特定の Qt ライセンスの下で利用可能です。
詳細を確認してください。