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 ライセンスの下で利用可能です。
詳細を確認してください。