2008/7/13 日曜日

トランジスタ技術2008年8月号 「@@LCODE」のエラー

Filed under: マイコン — 平川 滝雄 @ 13:46:14

久しぶりにトラ技についていた付録基板で遊んでみようと思いました.
今回はUSB経由でマイコンが書き込めたり,通信できるのですごく便利.

ただし,トラ技BIOSを使用しなければなりません.
本書を読み進めていくと,途中で次のエラーが表示されました.

RA78K0 error E3210: Segment ‘@@LCODE’ is not exist - ignored

これはトラ技のAppendix Aにも書かれているとおりですが「標準のライブラリを使用する 」のチェックをはずすと,エラーになるそうです.

でも,「標準のスタートアップルーチン」と「標準のライブリラリ」のチェックをはずせと書いてあるのに,どういうことだと.
で, 問題は「RAMAPP.dr」に潜んでました.
トラ技に添付れていた「RAMAPP.dr」は次の通り

memory ROM : ( 00000H, 01800H )
memory BROM : ( 01800H, 00800H )
memory UROM : ( 02000H, 02000H )
memory IXRAM : ( 0F000H, 00800H )
memory RAM : ( 0FB00H, 00500H )

#プログラム中で明示的に定義されていないセクションの配置アドレスを指定する
MERGE @@CODE : = IXRAM
MERGE @@CNST : = IXRAM
MERGE @@DATA : = IXRAM
MERGE @@R_INIT : = IXRAM
MERGE @@R_INIS : = IXRAM
MERGE @@LCODE : = IXRAM

で,本来なら,最後の行がコメントアウトされていなければならないようです.
それなのに,コメントアウトがついてません.
次のように書き換えて実行すると,

#MERGE @@LCODE : = IXRAM

次のような警告が出るものの,ビルドに成功しました.

RA78K0 warning W4301: Can’t initialize RAM area ‘f000h - f002h’
RA78K0 warning W4301: Can’t initialize RAM area ‘f003h - f052h’

めでたし,めでたし.

最初で自分のようにつまづく人が出てくると思ったので,書いてみました.

もし間違い等あればご連絡ください.


追記 2008.7.14

なひたふJTAG日記に公式?の訂正が掲載されておりました.
詳しい解説も載っておりますので,そちらも併せて参照してください.

なひたふJTAG日記,”トラ技78Kマイコンのコンパイルエラー”
http://nahitafu.cocolog-nifty.com/nahitafu/2008/07/78k_0cec.html

HTML convert time: 0.167 sec. Powered by WordPress ME