- ベストアンサー
picマイコンのソースコードを確認する方法とは?
- pic16f84aのマイコンに何度も変更して書き直したが、動作しない問題が発生した。動作したソースコードを確認する方法を教えて欲しい。
- pic16f84aのマイコンに書き込んで試みたが、相変わらず動作しない。動作したソースコードの確認方法を知りたい。
- pic16f84aのマイコンが突然動作するようになったが、どの変更が効果的だったのかわからない。動作したソースコードの確認方法を教えてほしい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
今後のためですが、バージョン管理をしっかりしておきましょう。 バージョン管理ツールを利用するのもいいですが、一番簡単なのは、ソースに変更を加える前に プロジェクト全体をフォルダごとコピーしておくことです。 また、ソースを変更する場合も、直接書き換えるのではなく、コメントアウトして消さないでおきます。 変更を加える場合、行を変えて新しく記述し、変更した日時、経緯、理由などを、そこにコメントでメモしておきましょう。
その他の回答 (3)
- koujikuu
- ベストアンサー率43% (429/993)
PICKIT2で読み出した、HEXファイルを、MPLAB IDEにImportして読み出すとProgram Memory(Machine)ウインドウにてディスアセンブルした状態で見ることが出来ます (コメントも無く、データエリアも分離されてません) あとはLstファイルのマシン語、C言語ソースと比較するしかありません PICKIT3 MPLABX IDEでも同様のことが出来るはず・・ 次回からソースリストにはバージョン番号と、変更箇所の記載を薦めます。
お礼
ありがとう御座いました。 ご指導いただきましたように、リストの管理をし、今回のようなことの起きないように注意して、PICの 勉強に取り組んでいきたいと思います。 今後ともよろしくお願いいたします。
C言語だと原則、元には戻りませんが、逆アセンブルは可能です。 PICKIT3で読みだして、逆アセンブルすると良いです。 もちろん、コメントなどは復活しません。
お礼
ありがとう御座いました。 今回の経験を活かし二度とこのようなことの起きないよう取組たいと思います。 今後ともよろしくお願いいたします。
- ninoue
- ベストアンサー率52% (1288/2437)
PICは使った事がありませんが、他の機種と同様な手順で確認する事が出来ると思われます。 (新機種開発時にメーカー作成ドライバの動作不良問題が発生し、バイナリモジュールしかない状態で逆アセンブラやインサーキットテスタやデバッガ等を使って問題追及し、メーカーに問題点の訂正依頼を行ったりした経験があります) アセンブラソースの復元は逆アセンブラを使えば比較的に容易なので、現在問題にされているのはコンパイルソースの復元問題な訳ですね。 また逆コンパイラがあれば良いのですが、PIC用としては無いようですね。 (特に確認した訳ではありませんが) 地道に一歩一歩進めて行く他ないのではと思われます。 先ず逆アセンブラソースを作成し、変数ラベル、プログラムラベル等を追加して16進アドレスから意味のあるラベルを含んだアセンブラソースを復元していくのが最初でしょう。 プログラムの飛び先アドレスや変数アドレスが逆アセンブラ上で16進実効アドレスで記されていた時、意味のある飛び先アドレスや変数アドレスについて、エディタで16進==>ラベルに各々一括変換していきます。 その時一度に意味のある飛び先ラベルや変数名を付ける事は無理だったら、適当に分り易い変数名等を付けておき、意味が分かる毎により適した変数名に変更したりしていきます。 まず正しいと思っているが不正なプログラム(B)の逆アセンブルリストについて上記ラベル付けを行います。 コンパイラがコンパイル結果のアセンブルソースを出してくれれば楽ですが。 次に正しく動いているプログラム(A)の逆アセンブルリストを作り、上記のラベル付けをします。変数リスト等はBと殆ど同じでしょうから、Bを参照しながらラベル変換していく事が出来るでしょう。 プログラムの数十ステップの塊り毎にラベル付けされ、アクセスする変数名が分れば対応するコンパイラソースも概略想像が付くようになるでしょう。 load, add, sub, store, compare, jumpif, call等の塊りの行数や、アクセスする変数名等をA,Bで見比べていけば、各ブロック毎に対応する同一のソースなのか、異なっている部分があるのか、片方にしか無い部分が間に挟み込まれているのか等が次第に分るようになる筈でしょう。 代表的なコンパイラソースがどのようにアセンブラソースにコンパイルされるか等について、サンプルソースを作ってコンパイルし確認する等もトライしてみて下さい。 以上のような事を繰り返していけばコンパイラソースの復元も出来るのではないでしょうか。
お礼
ありがとう御座いました。 お忙しい中をいろいろご検討いただきまして申し訳ありませんでした。 今後は、他の方からもご指導いただきましたようにファイル管理をしっかりして、今後も勉強していきたいと思っております。 今後ともよろしくお願いいたします。
お礼
何度もお手数をおかけしまして申し訳ありません。 ご指導いただきましたように取り組んでいきたいと思います。 素人とはいえ、いささか恥ずかしい限りです。 今後ともよろしくお願いいたします。