GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
GR-COTTONでWAVPが使いたくてKURUMI版からWavpとFatfsをコピーしてみたのですが、コンパイルエラーになりました。
どうすればよいでしょうか?
GR-COTTONでWAVPのサポート予定があれば、待ちますが。
interrupt_handlers.cのINT_TM00をコメントアウトすればいけると思いますが、すみません今日はCOTTONを持ち帰っていなくて動作確認まではできていません。
コンパイルできるようになりましたが、うまく動作しませんでした。同じプログラムでKURUMIでは動いたので、ライブラリ側で何か対策が必要なのだと思います。
急ぎませんので、対策が見つかったら教えてください。
今日、COTTONで試してみたのですが私の方では動きましたね。ちょっと9ピンをカード接続検出に使っているのを忘れてハマりましたが。
いずれにしても、COTTONの販売に合わせてWAVPスケッチをテンプレート準備はしていきます。
GR-KURUMI のテンプレート GR-KURUMI_Sketch_V1.11.zip と GR-KURUMI_WAVP_V1.01.zip を比較してみたところ、WAVP の内容は KURUMI の標準のテンプレートに対して
readme.txt gr_common/RLduino78/libraries/Fatfs/* gr_common/RLduino78/libraries/Wavp/*
が追加され、あとはサンプルプログラムとしての gr_sketch.cpp の内容が違うのと
gr_common/RLduino78/portable/e2studio/RL78/interrupt_handlers.c
の中の INT_TM00() がコメントアウトされているのみの違いでした。
恐らくは interrupt_handlers.c の書き換えや差し替えが煩雑になることを避けての別テンプレートにしているのではないかと思いますが、インタラプトハンドラにフックできる仕組みを設ければ基本のテンプレートとそれに追加する WAVP ライブラリに分割できるのではないかと思います。その方が保守性を考えれば好ましいのではないでしょうか。
例えば interrupt_handlers.h に
void INT_TM01_HOOK(void) __attribute__ ((weak));
の記述を加え、interrupt_handlers.c の INT_TM00() の内容を
//0x2C void INT_TM00 (void) { if (INT_TM01_HOOK != NULL) { INT_TM01_HOOK(); } }
とすれば、interrupt_handlers.c を書き換えることなくライブラリやユーザープログラムから割り込みを自由にフックできるようなります。他の割り込みについても同様です。
はい、おっしゃる通りです。weak指定でのリンク解決で済みますね。ありがとうございむす。