« 仕事のスイッチ (-_-) | トップページ | 新しいノートPCが欲しい件 (^-^) »

2007年10月28日 (日)

ノウハウ

趣味でロボットを作っている話ではなくて、仕事上あった話です。

先日、あるチップをマイコンから扱うためのプログラムを書いていたところ、JTAG-ICEでそのチップに割り当てられているアドレスの中身を表示させながらステップ実行させると動作が狙い通りに行かず、表示させなければ狙い通りに動く、という現象に遭遇しました。しかも、たまにそうなる、ではなくて、100%そうなる。最初は表示させた場合とさせない場合で動きが違うということに気付かず、仕様書を何度も読み返したりしました。

一日かかっても解決できなかったので一緒に仕事をしている協力会社の方(斜め前の机で仕事している)に聞いてみたところ、「デバッガでそのアドレスにアクセスすると(チップの)ステータスがクリアされちゃうから、安易に見ちゃダメですよ。どうしても見たければ、一時的に変数を作って、値を退避させてください。」ということで、あっさり解決しました。

こういうことは一度経験しないと覚えない、そして教科書には書かれる事の無いノウハウなんだなぁと感じました。

教訓1:自力で解決できそうに無いと思ったら、早めに詳しい人に助力を仰げ。

教訓2:デバッガでチップのステータスポートに割り当てられたアドレスに安易にアクセスするな。

« 仕事のスイッチ (-_-) | トップページ | 新しいノートPCが欲しい件 (^-^) »

コメント

店長さん、こんにちは。

デバッガって、あくまでマイコンの動作をステップ実行してくれるだけで、マイコンの制御対象は管理外ですからね~。当たり前と言えば当たり前、ということに気付かなかったというお話でした。

コンパイラの最適化が入るとソースとアセンブリ形式に直されたものが一致しなくって、今日も「なんで突然ポインタの値が変わるんだ??」と難儀しておりました。

教訓2、それじゃデバッガーの意味なしじゃあないですか(涙).
マイコンじゃあ、日常茶飯事なんでしょうけれど...
でもまあ、デバッガ(それもソースレベルで)使えたりする昨今、非常に有り難いなあ、と思っちょりますが(苦笑)

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/167990/16897407

この記事へのトラックバック一覧です: ノウハウ:

« 仕事のスイッチ (-_-) | トップページ | 新しいノートPCが欲しい件 (^-^) »

最近の写真