この文書の現在のバージョンと選択したバージョンの差分を表示します。
hewのシミュレータ・デバッガ [2013/02/03 18:18] member |
hewのシミュレータ・デバッガ [2014/04/29 18:27] (現在) member |
||
---|---|---|---|
ライン 6: | ライン 6: | ||
* 一行ずつ目で追いながらプログラムを実行できる | * 一行ずつ目で追いながらプログラムを実行できる | ||
* 変数の値の確認・変更ができる | * 変数の値の確認・変更ができる | ||
+ | * シリアル通信なしでprintfが使える(シミュレーターIO) | ||
といった利点があります。まあよくあるデバッガです。 | といった利点があります。まあよくあるデバッガです。 | ||
詳しい使い方は [[https://www.google.co.jp/search?q=HEW+シミュレータ|HEW シミュレータ]] で検索してルネサス公式のpdfのマニュアルをダウンロードしてください。 | 詳しい使い方は [[https://www.google.co.jp/search?q=HEW+シミュレータ|HEW シミュレータ]] で検索してルネサス公式のpdfのマニュアルをダウンロードしてください。 | ||
- | ===== シミュレータ導入の流れ ===== | + | ===== 既存のワークスペースにシミュレータを導入したい ===== |
- | 新規にシミュレータが使えるプロジェクトをつくる場合は新規プロジェクト作成画面で設定してやればいいのですが、既存のプロジェクトにシミュレータを導入する場合、 | + | できないことはありませんが、ちゃんと動くかの保証ができない上、シミュレーターIOが使えないので解説しません。 |
- | - シミュレータ使用可能な新規プロジェクトを作成し | + | シミュレーターが動く新しいワークスペースを作成し、そこにソースコードを移行してください(intprg.cも書き換えてるなら忘れずにコピーする)。 |
- | - 生成されたシミュレータ用の設定ファイル(セッションファイル)をインポートする | + | どうしてもやりたい人はwikiの編集履歴から参照してください(うまくいく保証はしません)。 |
- | という少しめんどくさい手順を踏まなければいけません。 | + | |
====== シミュレータ導入 ====== | ====== シミュレータ導入 ====== | ||
ライン 32: | ライン 32: | ||
ここの設定項目はCPUの種類ごとに変わります。 | ここの設定項目はCPUの種類ごとに変わります。 | ||
ここの設定で次のターゲット選択画面で、どのターゲットを選ぶか決まります。 | ここの設定で次のターゲット選択画面で、どのターゲットを選ぶか決まります。 | ||
- | 既存のプロジェクトに導入する人は、ここの設定を既存の物と合わせてください(合わせなくても良いかもしれない)。\\ | + | H8 3052FはAdvanceモードしかないので特に気にしなくていいです。\\ |
+ | sh 7125だとエンディアンの選択があります。 | ||
+ | "次へ" | ||
+ | |||
+ | {{:新規プロジェクト3-2.png|}}\\ | ||
+ | "I/Oライブラリ使用"にチェック(シミュレーターIOを使うため)。 | ||
ターゲット選択画面が出るまで"次へ" | ターゲット選択画面が出るまで"次へ" | ||
{{:新規プロジェクト4.png|}}\\ | {{:新規プロジェクト4.png|}}\\ | ||
ターゲットを選びます\\ | ターゲットを選びます\\ | ||
+ | 2つ前の画面で選んだ動作モードに対応します。 | ||
この例だとAdvanceモードなので、HAの方を選びます。 | この例だとAdvanceモードなので、HAの方を選びます。 | ||
よくわかんない人は全部にチェックでもいいと思います。\\ | よくわかんない人は全部にチェックでもいいと思います。\\ | ||
ライン 43: | ライン 49: | ||
- | ===== 既存のプロジェクトにシミュレータを導入する ===== | ||
- | シミュレータを導入したい既存のプロジェクト(ワークスペース)を開いておきます | ||
- | {{:既存プロジェクト1.png|}}\\ | ||
- | デバッグ(D)=>デバッグセッション\\ | ||
- | |||
- | {{:デバッグセッション.png|}}\\ | ||
- | ダイアログが開いたら"追加" | ||
- | |||
- | {{:simセッション.png|}}\\ | ||
- | "既存セッションの使用"を選んで"参照"で先ほど作ったプロジェクトのフォルダの中にあるデバッグ用の設定ファイルである\\ | ||
- | Simなんとか.hsf | ||
- | を選んで、名前のところに適当にシミュレータ用のセッション名を入れて(ここではH8simuSession)"OK"押して"OK" | ||
- | ターゲットを複数選んだ人はすべて追加してください。\\ | ||
- | |||
- | これで導入は完了です。 | ||
ライン 93: | ライン 84: | ||
{{:デバッグ.png|}} | {{:デバッグ.png|}} | ||
左から | 左から | ||
- | CPUリセット、BP(ブレークポイント)まで実行、カーソルまで実行、リセットしてBPまで実行、?、ステップイン、ステップオーバー、ステップアウト、etc... | + | CPUリセット、実行、カーソルまで実行、リセットして実行、?、ステップイン、ステップオーバー、ステップアウト、etc...\\ |
+ | "実行"は次のブレークポイント(BP)まで実行します。 | ||
==== ブレークポイントの設定 ==== | ==== ブレークポイントの設定 ==== | ||
ライン 100: | ライン 92: | ||
==== 実際にデバッグする ==== | ==== 実際にデバッグする ==== | ||
- | まずどこかにBPを設定し、"CPUリセット"を押してから"BPまで実行"を押すか、"リセットしてBPまで実行"を押す\\ | + | まずどこかにBPを設定し、"CPUリセット"{{:cpuリセット.png|}}を押してから{{:実行.png|}}"実行"を押すか、{{:リセットして実行.png|}}"リセットして実行"を押す\\ |
あとは好きにステップインとかしてください。 | あとは好きにステップインとかしてください。 | ||
ライン 118: | ライン 110: | ||
==== 変数の登録 ==== | ==== 変数の登録 ==== | ||
- | 変数を登録しないと変数をウォッチできません。ウォッチウィンドウの"シンボル登録"ボタンを押して、変数名を入力して登録してください。**最適化で変数がなかったことにされている場合はウォッチできません。** | + | 変数を登録しないと変数をウォッチできません。ウォッチウィンドウの"シンボル登録"ボタンを押して、変数名を入力して登録してください。\\ |
+ | {{:ウォッチ3.png|}} | ||
+ | |||
+ | **最適化で変数がなかったことにされている場合はウォッチできません。** | ||
==== 基数の変更 ==== | ==== 基数の変更 ==== | ||
変数を選択し(ShiftキーやCtrlキーを使って複数選択もできます)右クリックして基数を変更出来ます。\\ | 変数を選択し(ShiftキーやCtrlキーを使って複数選択もできます)右クリックして基数を変更出来ます。\\ | ||
ライン 127: | ライン 123: | ||
{{:guiパネル.png|}}\\ | {{:guiパネル.png|}}\\ | ||
詳しい方法はpdfのマニュアルをみてください。 | 詳しい方法はpdfのマニュアルをみてください。 | ||
+ | |||
+ | {{:ledの設定.png|}} | ||
==== アドレスを簡単に知る方法 ==== | ==== アドレスを簡単に知る方法 ==== | ||
- | アドレスを簡単に調べられる裏ワザがあります。 | + | LEDやスイッチ等のアドレスを簡単に調べられる裏ワザがあります。ライントレーサのLEDを例にして解説してみます。 |
<code> | <code> | ||
- | int *po; | + | void *po; |
po=&P8.DR.BIT; | po=&P8.DR.BIT; | ||
</code> | </code> | ||
- | まず、コンパイルオプションの最適化を切って、int *(ポインタ)型変数を宣言します(volatileだとうまくいかない)。次にP8とかのレジスタのポインタを代入します。 | + | まず、コンパイルオプションの最適化を切って、void *(ポインタ)型変数を宣言します(volatileだとうまくいかない)。次にP8とかのレジスタのポインタを代入します。 |
&を付け忘れ無いように注意しましょう。\\ | &を付け忘れ無いように注意しましょう。\\ | ||
コンパイルしてポインタ変数をウォッチします。\\ | コンパイルしてポインタ変数をウォッチします。\\ | ||
+ | {{:ウォッチ4.png|}}\\ | ||
<code>po=&P8.DR.BIT.B0</code> | <code>po=&P8.DR.BIT.B0</code> | ||
とかやるとエラーになります。 | とかやるとエラーになります。 | ||
+ | |||
+ | |||
+ | iodefne.hでP8.DR.BYTEがunsigned char型で宣言されているので、poはchar*型の方がいいかもしれません。\\ | ||
====== 注意 ====== | ====== 注意 ====== | ||
ライン 149: | ライン 151: | ||
*実機では書き込みできないレジスタに書き込めたり、読み出すと実機をシミュで違う値になってたりするので、コードによっては必ず実機と同じ動きをするとは限らないことに注意\\ | *実機では書き込みできないレジスタに書き込めたり、読み出すと実機をシミュで違う値になってたりするので、コードによっては必ず実機と同じ動きをするとは限らないことに注意\\ | ||
*例 P8.DDR=0なのにP8.DR.BYTEに代入できる(LED光る)\\ | *例 P8.DDR=0なのにP8.DR.BYTEに代入できる(LED光る)\\ | ||
- | *例 P8.DDRを読むと初期値が0になっている(実機だと常に255) | + | *例 P8.DDRを読むと初期値が0になっている(実機だと常に255が返ってくる) |
===== タイマーは使用できない ===== | ===== タイマーは使用できない ===== | ||
ライン 157: | ライン 159: | ||
====== Tips ====== | ====== Tips ====== | ||
===== コンフィギュレーション ===== | ===== コンフィギュレーション ===== | ||
- | Debug ... シミュレータデバッガのためのデバッグ情報が埋め込まれた大きい実行ファイルができる | + | Debug ... シミュレータデバッガのためのデバッグ情報が埋め込まれた大きい実行ファイルができる\\ |
Release ... シミュレータデバッガのためのデバッグ情報が埋め込まれない、小さい実行ファイルができる | Release ... シミュレータデバッガのためのデバッグ情報が埋め込まれない、小さい実行ファイルができる | ||
+ | |||
===== ウォッチとかの浮いてる画面はctrlを押しながら移動するとメインのウィンドウに結合されない ===== | ===== ウォッチとかの浮いてる画面はctrlを押しながら移動するとメインのウィンドウに結合されない ===== | ||