このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| hewのシミュレータ・デバッガ [2013/02/03 18:18] – member | hewのシミュレータ・デバッガ [2014/04/29 18:27] (現在) – member | ||
|---|---|---|---|
| 行 6: | 行 6: | ||
| * 一行ずつ目で追いながらプログラムを実行できる | * 一行ずつ目で追いながらプログラムを実行できる | ||
| * 変数の値の確認・変更ができる | * 変数の値の確認・変更ができる | ||
| + | * シリアル通信なしでprintfが使える(シミュレーターIO) | ||
| といった利点があります。まあよくあるデバッガです。 | といった利点があります。まあよくあるデバッガです。 | ||
| 詳しい使い方は [[https:// | 詳しい使い方は [[https:// | ||
| - | ===== シミュレータ導入の流れ | + | ===== 既存のワークスペースにシミュレータを導入したい |
| - | 新規にシミュレータが使えるプロジェクトをつくる場合は新規プロジェクト作成画面で設定してやればいいのですが、既存のプロジェクトにシミュレータを導入する場合、 | + | できないことはありませんが、ちゃんと動くかの保証ができない上、シミュレーターIOが使えないので解説しません。 |
| - | | + | シミュレーターが動く新しいワークスペースを作成し、そこにソースコードを移行してください(intprg.cも書き換えてるなら忘れずにコピーする)。 |
| - | - 生成されたシミュレータ用の設定ファイル(セッションファイル)をインポートする | + | どうしてもやりたい人はwikiの編集履歴から参照してください(うまくいく保証はしません)。 |
| - | という少しめんどくさい手順を踏まなければいけません。 | + | |
| ====== シミュレータ導入 ====== | ====== シミュレータ導入 ====== | ||
| 行 32: | 行 32: | ||
| ここの設定項目はCPUの種類ごとに変わります。 | ここの設定項目はCPUの種類ごとに変わります。 | ||
| ここの設定で次のターゲット選択画面で、どのターゲットを選ぶか決まります。 | ここの設定で次のターゲット選択画面で、どのターゲットを選ぶか決まります。 | ||
| - | 既存のプロジェクトに導入する人は、ここの設定を既存の物と合わせてください(合わせなくても良いかもしれない)。\\ | + | H8 3052FはAdvanceモードしかないので特に気にしなくていいです。\\ |
| + | sh 7125だとエンディアンの選択があります。 | ||
| + | " | ||
| + | |||
| + | {{:新規プロジェクト3-2.png|}}\\ | ||
| + | " | ||
| ターゲット選択画面が出るまで" | ターゲット選択画面が出るまで" | ||
| {{: | {{: | ||
| ターゲットを選びます\\ | ターゲットを選びます\\ | ||
| + | 2つ前の画面で選んだ動作モードに対応します。 | ||
| この例だとAdvanceモードなので、HAの方を選びます。 | この例だとAdvanceモードなので、HAの方を選びます。 | ||
| よくわかんない人は全部にチェックでもいいと思います。\\ | よくわかんない人は全部にチェックでもいいと思います。\\ | ||
| 行 43: | 行 49: | ||
| - | ===== 既存のプロジェクトにシミュレータを導入する ===== | ||
| - | シミュレータを導入したい既存のプロジェクト(ワークスペース)を開いておきます | ||
| - | {{: | ||
| - | デバッグ(D)=> | ||
| - | |||
| - | {{: | ||
| - | ダイアログが開いたら" | ||
| - | |||
| - | {{: | ||
| - | " | ||
| - | Simなんとか.hsf | ||
| - | を選んで、名前のところに適当にシミュレータ用のセッション名を入れて(ここではH8simuSession)" | ||
| - | ターゲットを複数選んだ人はすべて追加してください。\\ | ||
| - | |||
| - | これで導入は完了です。 | ||
| 行 93: | 行 84: | ||
| {{: | {{: | ||
| 左から | 左から | ||
| - | CPUリセット、BP(ブレークポイント)まで実行、カーソルまで実行、リセットしてBPまで実行、?、ステップイン、ステップオーバー、ステップアウト、etc... | + | CPUリセット、実行、カーソルまで実行、リセットして実行、?、ステップイン、ステップオーバー、ステップアウト、etc...\\ |
| + | " | ||
| ==== ブレークポイントの設定 ==== | ==== ブレークポイントの設定 ==== | ||
| - | {{: | + | {{: |
| S/ | S/ | ||
| ==== 実際にデバッグする ==== | ==== 実際にデバッグする ==== | ||
| - | まずどこかにBPを設定し、" | + | まずどこかにBPを設定し、" |
| あとは好きにステップインとかしてください。 | あとは好きにステップインとかしてください。 | ||
| 行 118: | 行 110: | ||
| ==== 変数の登録 ==== | ==== 変数の登録 ==== | ||
| - | 変数を登録しないと変数をウォッチできません。ウォッチウィンドウの" | + | 変数を登録しないと変数をウォッチできません。ウォッチウィンドウの" |
| + | {{: | ||
| + | |||
| + | **最適化で変数がなかったことにされている場合はウォッチできません。** | ||
| ==== 基数の変更 ==== | ==== 基数の変更 ==== | ||
| 変数を選択し(ShiftキーやCtrlキーを使って複数選択もできます)右クリックして基数を変更出来ます。\\ | 変数を選択し(ShiftキーやCtrlキーを使って複数選択もできます)右クリックして基数を変更出来ます。\\ | ||
| 行 127: | 行 123: | ||
| {{: | {{: | ||
| 詳しい方法はpdfのマニュアルをみてください。 | 詳しい方法はpdfのマニュアルをみてください。 | ||
| + | |||
| + | {{: | ||
| ==== アドレスを簡単に知る方法 ==== | ==== アドレスを簡単に知る方法 ==== | ||
| - | アドレスを簡単に調べられる裏ワザがあります。 | + | LEDやスイッチ等のアドレスを簡単に調べられる裏ワザがあります。ライントレーサのLEDを例にして解説してみます。 |
| < | < | ||
| - | int *po; | + | void *po; |
| po=& | po=& | ||
| </ | </ | ||
| - | まず、コンパイルオプションの最適化を切って、int *(ポインタ)型変数を宣言します(volatileだとうまくいかない)。次にP8とかのレジスタのポインタを代入します。 | + | まず、コンパイルオプションの最適化を切って、void *(ポインタ)型変数を宣言します(volatileだとうまくいかない)。次にP8とかのレジスタのポインタを代入します。 |
| & | & | ||
| コンパイルしてポインタ変数をウォッチします。\\ | コンパイルしてポインタ変数をウォッチします。\\ | ||
| + | {{: | ||
| < | < | ||
| とかやるとエラーになります。 | とかやるとエラーになります。 | ||
| + | |||
| + | |||
| + | 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を押しながら移動するとメインのウィンドウに結合されない ===== | ||