__attribute__((section("name"))) を使用したコードとデータの配置

コードおよびデータは、ツールチェーン固有のプラグマや属性を使用しなくても、独自のオブジェクトに別々に配置できます。 ただし、__attribute__((section("name"))) を使用して、項目を別の ELF セクションに配置することもできます。 その場合、スキャッタファイルを使用して、名前付きセクションを特定の位置に配置できます。

__attribute__((section("name"))) を使用して、変数を別のセクションに配置するには、以下の手順を実行します。

  1. __attribute__((section("name"))) を使用して、変数の配置先の名前付きセクションを指定します。以下に例を示します。

    Example 17. セクションの命名

    int variable __attribute__((section("foo"))) = 10;
    

  2. スキャッタファイルを使用して、名前付きセクションを配置します。以下に例を示します。

    Example 18. セクションの配置

    FLASH 0x24000000 0x4000000
    {
        ...                                ; 残りのコード
    
        ADDER 0x08000000
        {
            file.o (foo)                  ; file.o からセクション foo を選択する
        }
    }
    

以下の点に注意して下さい。

セクション名に .ARM.__at_address を使用することで、特定のアドレスに関数を配置することもできます。 例えば、関数 sqr0x20000 に配置するには、次のように指定します。

int sqr(int n1) __attribute__((section(".ARM.__at_0x20000")));

int sqr(int n1)
{
    return n1*n1;
}

Show/hide関連項目

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0474GJ
Non-ConfidentialID051612