ScatterAssert 関数とロードアドレスに関連する関数

ScatterAssert(expression) 関数は、最上位またはロード領域内で使用できます。 この式はリンクが完了した後で評価され、expression が FALSE と評価された場合はエラーメッセージが生成されます。

ロードアドレスに関連する関数は、ScatterAssert 関数内でのみ使用できます。 これらの関数は、以下の 3 つのリンカ定義のシンボル値にマップされます。

Table 5. ロードアドレスに関連する関数 

関数リンカ定義のシンボル値
LoadBase(region_name)
Load$$region_name$$Base
LoadLength(region_name)
Load$$region_name$$Length
LoadLimit(region_name)
Load$$region_name$$Limit

パラメータ region_name には、ロード領域名または実行領域名のいずれかを指定できます。 前方参照は使用できません。 region_name は、既に定義されているロード領域または実行領域のみを参照できます。

次の例は、ScatterAssert 関数を使用して、領域の max_size で許可されているよりも複雑なサイズチェックを記述する方法を示しています。

Example 11. ScatterAssert を使用して複数の領域のサイズをチェックする例

LR1 0x8000
{
    ER0 +0
    {
        *(+RO)
    }
    ER1 +0
    {
        file1.o(+RW)
    }
    ER2 +0
    {
        file2.o(+RW)
    }
    ScatterAssert((LoadLength(ER1) + LoadLength(ER2)) < 0x1000)
                                         ; LoadLength は圧縮後のサイズ
    ScatterAssert((ImageLength(ER1) + ImageLength(ER2)) < 0x2000)
                                         ; ImageLength は未圧縮のサイズ
}
ScatterAssert(ImageLength(LR1) < 0x3000) ; LoadRegion の未圧縮のサイズをチェックする

Show/hide関連項目

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