• ベストアンサー

YellowIDE6でのコンパイルについて

マイコンのソフトウェアとしてYellowIDE6を使用しています。 マイコンの割り込みのポートを変更しようと思いCのソースを変更したのですが下記のメッセージが出てコンパイルできません。対策を教えてください。 《ファイル(..\..\..\STARTUP\CSGH848.ASM)内で未定義の外部シンボル(_nmi)を参照しました。》 また、参考になるサイトがあれば紹介お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> Cのプログラムをirq5に変更したら 元々どう書かれていたのを、どう変更したのですか? さて、mni だろうと、irq5 だろうと同じエラーなのですから、同じように対処してください。 多分、irq1 と書かれていたのを、1カ所ほど irq5 に書き換えたのでしょうが、オリジナルのソース(アセンブラとか、ヘッダとか、もしかしたら、コンフィグレーションも含めて)で、irq1 と書いてある部分を全部探してください。 それらも、ちゃんとつじつまを合わせないと、動作はしません。 ※ただし、アセンブラファイルの irq1 を irq5 と書き換えても動作しません。割り込みのメカニズムを理解しないと、irq5 をアセンブラファイルのどこに書けばいいかは、わからないと思います。 データシートなどを本気で読んでください。 参考になるサイト云々より、まず、付属の解説は理解しましょう。

ibayama
質問者

お礼

何度も回答ありがとうございます。 焦って結果ばかり追い求めてしまいます。 基礎がないのはわかっているのですがどうしても・・・ まず、データシート、ユーザーマニュアル読み込んでみたいと思います。

その他の回答 (1)

回答No.1

Cのソースを変更したのですか? 変更前のソースはコンパイルできていたのですか? だとすると、状況が全くわからないのですが。 そもそも、CSGH848.ASM は、もともとからアセンブラのファイですか? 場所からすると、コンパイラ(というか、IDE が)自動生成したスタートアップファイルのような気はしますが。 あと、エラーは本当にひとつだけですか? _nmi は、多分、NMI(non maskable interrupt) の飛び先ラベルだと思うのですが、_nmi だけなくなるというのもおかしな話で、必要なファイルが欠如していると、割り込み関連の同じエラーがいろいろ出るはずです。 変更前のソースがちゃんとコンパイルできていたのなら、その中で、nmi というラベルを探しましょう。 そして、変更後、それがどうなってしまっているか確認しましょう。 もしも、どこかから、適当にソースを引っ張ってきて、というのなら、ひとそろいのファイルを探しましょう。

ibayama
質問者

補足

説明不足の質問で申し訳ないです。 エラーが出るのはnmiではなくirq5でした。すみません 使っているマイコンはhttp://www.yellowsoft.com/products/h8gset2.htmlのH8/3048one学習キットを使用しているのですが、 そこにサンプルプログラムがあり、ストップウォッチのサンプルを動かしたのですが、スタート、ストップのボタンをサンプルプログラムで使用しているボタンirq1ではなく外部の割り込みirq5でストップウォッチのスタート、ストップを認識したいと考えています。 irq1のプログラムは動くのですが、Cのプログラムをirq5に変更したら《ファイル(..\..\..\STARTUP\CSGH848.ASM)内で未定義の外部シンボル(_irq5)を参照しました。》というエラーが出ました。 STARTUP\CSGH848.ASMはアセンブラファイルでした。 また、質問になって申し訳ないのですがエラーの対処法お願いします。