L2132

SHCなHEW環境で,ROMからRAMへコピーしたいと思ったところ.ハマる.
ROMエリアをRSTART, RAMエリアをSTARTとして OptLinkerを起動してみた.

L2132 (E) Cannot find "RSTART" specified in option "rom"

…なんじゃらほい?

ヘルプは役に立たない.

ま,期待はしていない.でもガッカリはする.

Webも役に立たない.


コンパイルアセンブルはできてるみたいなんだけど、

L2132 (E) Cannot find "D" specified in option "rom"
Optimizing Linkage Editor Abort
 というエラーメッセージがでる、現在のところ解決の糸口も見えない。
 脳細胞は、オーバーヒートを通り越して、煙を上げているみたいだ。もうすぐ焼き付いてしまうかもしれない。即急に、冷たいビールで冷却しないと不可逆的な損傷を受けそうな予感がする。
 明日は二日酔いだな、きっと。

…酔っている場合ではないと思う.(←大きなお世話)


その他,同様のエラーがH8で出た例についてMLのログらしいものがあるが,「オレ様謹製のワークスペースを使いな」(超意訳)という返答だったりして,使い物にならない.


情報が少ない.だからメーカー製のコンパイラはイヤなのだ.

解決.

あれこれ試行錯誤しているうちに見えて来た.


ROM/RAMマッピングをする場合,つまりELF的に言うとVMA/LMAマッピングをする場合,ソースコード上に記述した(つまりオブジェクトに含まれている)セクション名は,必ずROM側(LMA側)に指定しなければならないらしい.

ソースコード上に

   .section START

などした場合は,ROM側のシンボルをSTART,RAM側のシンボルをRSTART.これがお約束.


そういうお約束で構成されているなら,ソレはソレでよいけれど*1,そのお約束を参照するコストは低く抑えて欲しい.

*1:binutilsにだって,いろいろ自明でないお約束はあるしね.