ルネサステクノロジーの提供して下さる、HEW2、HTERMを使って
ソースレベルデバッグが、可能になります。
画面をご覧になると、ソースレベルでデバッグできますし、ディスアセンブルもできます。
HEW2を使ったのは、ソースレベルデバッグするには、HEW2の吐き出すabsファイル(ELF)が必要だからです。
それと、Cのプログラム、アセンブリプログラムも、HEW2で作る事ができるからです。
http://www.renesas.com/jpn/products/mpumcu/16bit/tiny/index.htmlを辿って、
最新のHEW2,HTERM(MDI version)をダウンロードして下さい。
それから、3664Fのハードウェアマニュアル、
H8S、H8/300 シリーズ C/C++コンパイラ、アセンブラ、最適化リンケージエディタユーザーズマニュアル等も
ここからhttp://www.renesas.com/avs/servlet/requestから、入手してください。
HEW2の他に、ベストテクノロジー社のGCC developer liteも素晴らしいです。
GCC Developer Lite (H8/SH用GCC付属)http://www.besttechnology.co.jp/download/
それと
フラッシュライタソフトウェア Ver2.6 FWSETUP2_6.EXE (563kb)(ベストテクノロジー社)もダウンロードしておきましょう。
(HTERMのブートモードでの書き込みが、うまくできなかったので、モニタープログラムは、これでwriteした。)
ルネサステクノロジーから、モニタープログラムをdownloadします。http://www.renesas.com/jpn/support/seminar/sample/downh83h.html#mnt
「300t」というフォルダが形成されます。
monitorフォルダを開ける。
monitor.subを、3664fに合うように、改造する。(この辺は、上部フォルダのreadme.htmに書いてあります。)
私は、こんな風にしましたけど...ご自由にどうぞ。
この辺りの事情はhttp://hamayan.ddo.jp/~hamayan/so-net/hterm.htmlが、凄く参考になりました。
是非訪れてみて、ください。
改造できたら、HEW2で、この「300t」のプロジェクトを立ち上げ、ビルドします。
releaseフォルダにmonitor.motが出来上がります。
これを、HTERMのブートモードにて、3664fに書き込もうとしたのですが、うまくできませんでした。
それで、ベストテクノロジー社のフラッシュライタソフトウェア Ver2.6 を使いました。
これで、準備は整いました。
HEW2にて、簡単なプログラムを作り、テストしてみましょう。
ここで、割込みを許可(EI)、不許可(DI)は、set_ccr()を使いますが、これは、「machine.h」に定義されていますので
これをincludeしておきます。
今、timerAの割込みを使うと、すれば
intprg.c ファイルに、最初に、定義しておいて
ここに、プログラクを書いて置きます。
プログラムを書き終わったら、HEW2の環境を、モニタプログラム用に変えます。
オプション->H8Tiny/SLPを選択する。次にLink/Libraryタブをクリックする。
こんな画面が出ますので、ここでuse entry pointにチェックを入れ、_mainを記入する。
次に、Categoryの中から、sectionを選ぶ。
ここの、アドレス変更したりする。
ここで、P(プログラム)のaddressをクリックし、Modifyして、「F900」と記入する。(F880以上の好きな位置に設定)
OKボタンを押して、ダイアログを閉じ、buildすると、デバッグフォルダに、mot、absファイルが出来ているから
htermでは、absファイルの方を選ぶ。
準備完了。
hterm起動。
consoleが開いたら、3664fの電源on。
コマンド->loadをクリック。
後は、ブレークポイント等を設定したり、ディスアセンブル画面を出したり
この辺の事情は「300f」フォルダのmonitor.htmに書いてあります。
割込みが、うまく働かない時は、モニタプログラムのコマンドfで、自分で設定すると、うまく割込みが動きます。
(たぶん、うまく割り込めないと、思う。
私は、プログラム中で、割込みアドレスを自分で指定したり、モニタプログラムで手動で設定したりです。)
これで、ソースレベルデバッグができるように、なりました。
「window->最新の情報に更新」 を選ぶと、全ての画面が、更新されます。
でも、自由になるRAM領域って、1Kバイトしか、ないのよねエ...
これは、間違いでした。 (^_^;;
「RAMの H'F880 (63616) 〜 H'FF80 (65408) の領域 から、ヴェクターアドレスとスタック領域を除いた部分が
使用可能。約1.7Kバイトかな...)
やっぱり、アセンブリ言語かな...
ここまでで、1ヶ月も、かかってしまった...
肝心のプログラムが、捗らない...はかどらない...わからない...(T_T)
H15.8.22
This document created by Scientific Notebook 4.1. この文書は次の製品で作成しました Scientific Notebook 4.1.