(toppers-users 1027) Re: 変数等の定義場所について

Takayuki WAKABAYASHI x-takayuki @ sm.sony.co.jp
2003年 8月 7日 (木) 20:12:58 JST


豊橋技術科学大学の若林です。
 # すいません。都合によりReferenceを切ります。

わたなみさん wrote that:
 > ・__bss_start等はどこで定義しているのか

シンボルの意味に関しては今井さんがフォローされているので、
ツール側の視点からコメントします。

GNU環境ではこれらのシンボルを自前で用意しないといけないですが、
ADS(と似た環境)を使っている場合はarmlinkが勝手に定義してくれます。
また、bssというセクションは リージョン名(ZI) に相当します。
ここでいうリージョン名は、scatterファイルに指定したリージョン名に相当します。

armlinkはリージョン固有の情報をシンボルとして出力します。
__bss_startに相当するシンボルはImage$$リージョン名$$ZI$$Baseになります。
同様に__bss_endはImage$$リージョン名$$ZI$$Limitになります。
 # ADS Linker and Utilities Guideの56ページ辺りにあります。
 # http://www.arm.com/support/574FJG/$File/ADS_LinkerGuide_A.pdf

たぶん、スタートアップで
    __bss_start -> Image$$MyRegion$$ZI$$Base
    .extern __bss_start -> IMPORT |Image$$MyRegion$$ZI$$Base|
    __bss_end -> Image$$MyRegion$$ZI$$Limit
    .extern __bss_end -> IMPORT |Image$$MyRegion$$ZI$$Limit|
に変更するだけで大丈夫だと思います。

.dataも同様に、
    _data_start -> Image$$MyRegion$$RW$$Base
    _idata_start -> Load$$MyRegion$$RW$$Base
で大丈夫でしょう。

あと、コンフィギュレータはホストコンピュータ用のプログラムなので、
Windowsで作成したexeをそのまま流用可能です。
 # チェッカーはだめですが...

以上、参考になれば幸いです。
--------
  豊橋技術科学大学 電子情報工学専攻
    わかばやし たかゆき (mailto:takayuki @ ertl.jp)