タイトル: アーム リンカに、第 1 領域と第 2 領域の両方が適用されている状態で、第 2 ロード領域を展開する方法「RW データ圧縮」はありますか?
以下のスキャッタ ファイルを取得しました (複雑なスキャッタ ファイルの単純なバージョン)
LOAD_REGION_01 0x0
{
EXECUTION_REGION_01 0x0
{
ABC.o (+RO,+RW)
}
}
LOAD_REGION_02 +0x0
{
EXECUTION_REGION_02 0x100
{
DEF.o (+RO,+RW)
}
}
RW データ圧縮が自動的に適用され、サイズが 0x40 (LOAD_REGION_01 の場合は 0x20、LOAD_REGION_02 の場合は 0x20) のバイナリを取得し、次の MAP ファイルとして link.info を取得しました。
Load Region LOAD_REGION_01 (Base: 0x0, Size: 0x30, Max: 0x000000a0, ABSOLUTE)
Execution Region EXECUTION_REGION_01 (Base:0x0,Size:0x30,Max:0xffffffff,ABSOLUTE, COMPRESSED[0x20])
Load Region LOAD_REGION_02 (Base: 0x30, Size: 0x30, Max: 0x000000a0, ABSOLUTE)
Execution Region EXECUTION_REGION_02 (Base:0x0,Size:0x30,Max:0xffffffff,ABSOLUTE, COMPRESSED[0x20])
圧縮後のロード領域のサイズは 0x20 ですが、2 番目のロード領域の開始アドレスは 0x30 であることがわかりました。そして、最初の領域の解凍は正常に動作しますが、アームはアドレス "0x20" ではなく "0x30" から 2 番目の領域を解凍しようとします。
したがって、誤った解凍結果が生成されます。アームリンカーが秒を正しく解凍する方法は? または、2 番目のロード領域 LOAD_REGION_02 のロード アドレスに属性 +0 を割り当てるにはどうすればよいですか (ロード領域 1 のサイズが変更される可能性があるため...)。
取扱説明書を全部読みましたが、答えがありません...