C
プリロードアロケータを使った起動時間の改善
デバイスのセットアップ段階でリソースをプリロードすると、アプリケーションの起動時間が改善されます。プロジェクト・コンフィギュレーションでは、OnStartup キャッシュ・ポリシーを指定することで、アセットがデフォルトでRAMにロードされるように設定できます:ImageFiles.MCU.resourceCachePolicy、MCU.Config.fontFilesCachePolicyを指定します。
この例では、SDRAMから、リンカ・スクリプトのSDRAM_PRELOAD領域でプリロード可能なリソースのための領域を確保します。プリロード・セクションの開始アドレスと終了アドレスを決定するために、リソースのプリロード用にシンボル__preloadSdramStart と__preloadSdramEnd が定義されています:
__preloadSdramStart = ORIGIN(SDRAM_PRELOAD);
__preloadSdramEnd = ORIGIN(SDRAM_PRELOAD) + LENGTH(SDRAM_PRELOAD);リンカ・シンボルへのポインタを作成します:
extern uint8_t __preloadSdramStart; extern uint8_t __preloadSdramEnd; void *preloadSdramStart = &__preloadSdramStart; void *preloadSdramEnd = &__preloadSdramEnd;
デフォルトでは、リソースはDefaultPreload 割り当てタイプを使用します。プリロードの開始アドレスと終了アドレスは、プリロード・セクションの最大サイズを決定するために、ExampleReversePreloadAllocatorによって使用されます。
プラットフォーム・コンテキスト用のメモリ・アロケータは、DefaultPreload 型を扱うように拡張する必要があります:
PlatformInterface::MemoryAllocator *ExamplePlatform::memoryAllocator( PlatformInterface::MemoryAllocator::AllocationType type) { static ExampleMemoryAllocator exampleMemoryAllocator; static ExampleReversePreloadAllocator<4> examplePreloadAllocator(preloadSdramEnd, preloadSdramStart); static PlatformInterface::MemoryAllocator defaultMemoryAllocator; switch (type) { ... case PlatformInterface::MemoryAllocator::DefaultPreload: return &examplePreloadAllocator; ...
DefaultPreload アロケーションタイプのメモリアロケータからnullptr を返すことで、プリロードを無効にすることができる。
特定の Qt ライセンスの下で利用可能です。
詳細を確認してください。