このページでは

C

リンカースクリプトの設定

リンカースクリプトとは、プラットフォームのメモリ構成に関する情報が記載されたファイルのことです。これには、アプリケーションのコードやデータが配置される領域が指定されています。 リンカースクリプトは、ツールチェーンのリンカーによって使用され、最終的なバイナリ内のデータとコードを適切なメモリアドレスに配置するために利用されます。このセクションでは、Qt Quick Ultraliteを動作させるために、リンカースクリプトでどのような設定を行う必要があるかについて説明します。

リンカースクリプトの追加

cmake\<YOUR_COMPILER>\<YOUR_LINKER_SCRIPT> は、お使いのプラットフォームが使用するリンカースクリプトです。

CMakeでリンクスクリプトを使用するには、LinkerScriptConfig.cmake で設定する必要があります。以下に、example-baremetal プラットフォームの例を示します:

# Copyright (C) 2025 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial

if(IAR)
    qul_platform_add_default_linker_script("${QUL_PRIVATE_PLATFORM_BOARD_CMAKE_DIR}/${QUL_COMPILER_NAME}/example-platform.icf")
else()
    qul_platform_add_default_linker_script("${QUL_PRIVATE_PLATFORM_BOARD_CMAKE_DIR}/${QUL_COMPILER_NAME}/example-platform.ld")
endif()

この関数の引数で、使用するリンカースクリプトを指定します。

リンカースクリプトの作成

以下の例は、platform\boards\qt\example-baremetal\cmake\armgcc\example-platform.ld からの抜粋です。参考として、platform\boards\qt\example-baremetal\cmake\iar\example-platform.icf には IAR リンカー用のバリエーションも用意されています。これらのファイルをプロジェクトにコピーし、独自のリンカースクリプトの作成の基礎として利用できます。ただし、ここで説明する追加のメモリセクションを挿入した独自のリンカースクリプトを作成することをお勧めします。

注:これらの例では 、GNUリンカースクリプトの構文を使用しています。ツールチェーンによって、リンカースクリプトの実装が異なる場合があります。リンカースクリプトの構文に関する詳細については、お使いのツールチェーンのマニュアルを参照してください。

デバイスにプログラムセクションを割り当てるには、そのメモリレイアウトを設定する必要があります。

MEMORY
{
  FLASH (rx)               : ORIGIN = 0x08000000, LENGTH = 2048K /* internal flash */
  RAM (xrw)                : ORIGIN = 0x20000000, LENGTH = 512K /* internal sram */
  SDRAM (xrw)              : ORIGIN = 0xc0400000, LENGTH = 6M /* external sdram memory */
  SDRAM_PRELOAD (xrw)      : ORIGIN = 0xc0a00000, LENGTH = 2M /* external sdram memory - preload */
  QSPI (rx)                : ORIGIN = 0x90000000, LENGTH = 64M /* external flash */
}

このレイアウトには、FLASH、RAM、SDRAM、SDRAM_PRELOAD、QSPIの5つの領域があります。

  • RAM、SDRAM、および SDRAM_PRELOAD には、実行、読み取り、および書き込みアクセス権があります。
  • FLASH および QSPI は読み取り専用のフラッシュメモリであるため、読み取りおよび実行アクセス権のみが与えられます。

警告: このレイアウトをそのままプラットフォームのメモリレイアウトとして使用しないでください 。バイナリのフラッシュやデバイス上での実行時にエラーが発生する可能性があります。メモリレイアウトおよびデバイスに適したメモリアドレスについては、ターゲットプラットフォームのマニュアルを参照してください。

この例では、リソースデータは QSPI フラッシュメモリ領域に格納されています。QulResourceData という名前はハードコードされており、イメージリソースのデフォルトセクションを表します。リソースセクションを追加する方法の詳細については、「リソースの管理」を参照してください。

QulFontResourceData name はハードコードされており、フォントファイル、グリフデータ、および翻訳データのデフォルトセクションを表します。また、MCU.Config.fontFilesStorageSectionMCU.Config.glyphsStorageSection、およびMCU.Config.translationStorageSectionプロパティを使用して、データタイプごとにセクションを設定することもできます。

    QulFontResourceData :
    {
        . = ALIGN(4);
        *(QulFontResourceData)
    } > QSPI

    QulResourceData :
    {
        . = ALIGN(4);
        *(QulResourceData)
    } > QSPI

特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。