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 を使用して実行することができます。
... 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 ライセンスの下で利用可能です。
詳細を確認してください。