- 締切済み
H8について教えて下さい。
HD64F3068Fを使用している基板があるのですが、ROMを書込み通常動作をさせている上では問題ないのですが、デバッグ時のみにCPUが暴走しているようなことになる基板が20枚中1枚だけあります。 それの解析を以来されています。 外部のSRAMか内蔵RAMが悪いと思う・・・と言われています。 が、ソフトまるっきり初心者なのでよくわかりません。 イエロースコープがなんとか使えるようになったかな程度です。 ・4MSRAM(512k * 8bit)の全領域を完全にチェックする方法 ・内蔵RAMをチェックする方法 などあれば教えて下さい。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- jacta
- ベストアンサー率26% (845/3158)
> 通信エラーがでます 何を通信しようとしているのか知りませんが、問題を複雑にしないためには、可能な限り簡単な方法でチェックすることをお勧めします。 例えば、合否判定はLEDの点灯とか、ポートに出力して、波形を調べるとかにした方が無難です。余計なことをすると、その部分にバグが入るかもしれませんし、そもそも通信ポートのハードウェアが正常かどうかも分からないわけですから。 > あと、CPU交換・・・はやりそれですかねぇ~。 私なら、交換が簡単なSRAMから付け替えますね。
- jacta
- ベストアンサー率26% (845/3158)
外付けのSRAMについては、普通、0x55、0xAA、インクリメントパターンを全領域に書き込んでから、読み込んだときに同じ値になっているかを判定することになります。アドレスピンが浮いていたり、ショートしている可能性があるので、インクリメントパターンは256バイトごとに初期値をずらした方がよいでしょう。 ただ、こうしたチェックでは、やはりハンダ付けや基板パターンの不良程度しか検出できません。もっと徹底的にデバイスを調べるのであれば、ICテスタなどが必要になるかと思います。 次に、内蔵RAMのチェック方法ですが、シリアルでフラッシュメモリにプログラムを転送するときにも内蔵RAMを使うことになりますので、CPUを動かして調べることは原理的に無理です。 外付けのROMで起動するためには、そのための基板にCPUを実装しなおす必要があるかと思います。そんなことをするぐらいなら、別のCPUに付け替えて、不具合が再現するかどうかを調べた方が簡単です。
お礼
256バイトをずらして書いて見ました。 スタックの領域?まで書こうとすると通信エラーがでます (当たり前ですかね) それでスタックを内蔵RAMに配置すると言う方法がイエロースコープにあるのでやってみたんですが、やはり同じ結果でした。 もうちょっと勉強します! あと、CPU交換・・・はやりそれですかねぇ~。 手っ取り早いですね!
- zwi
- ベストアンサー率56% (730/1282)
メモリのチェックは、1バイトごとに0x00から0xffまでコードを書いてみて読み出したときに同じコードかチェックするのが定番です。全領域のRAMの検索は普通C言語を使わずアセンブラを使いROMに書き込んでテストします。 ただし、これでもメモリの壊れ具合でレアケースで分からないことがあるので、うまく判明しなかった場合はもう一捻りです。 例えば何度もチェックを繰り返したり、書き込みパターンを単調にならないように工夫したり、色々とやってみる必要があります。
お礼
回答ありがとうございます。 アセンブラですか・・・ がんばって勉強してみます。 深いですね・・・
- jacta
- ベストアンサー率26% (845/3158)
何をチェックするのかによって、方法が変わってくると思います。 デバイスの不良を検出したいのでしょうか? 基板へのハンダ付け不良を検出したいのでしょうか? 基板のノイズレベルやクロストークなどの影響を調べたいのでしょうか? メモリの非実装領域の(フルでコードされていないことによる)ミラーイメージの現れ方を調べたいのでしょうか? > 20枚中1枚だけあります。 大抵、こういった不具合は、ハンダ付けかプリント基板の不良に起因することが多いと思います。 チェックプログラムを作るより、テスターとオシロで調べた方が手っ取り早い気がするのですが...
お礼
回答ありがとうございます。 はんだ付け、基板の不良についてはとことん調べましたが、不良箇所は見つけられませんでした。 部品の破損があるかないか調べれたら・・・ という感じで、とりあえずソフトでアプローチしようとしている感じです・
お礼
回答ありがとうございます。 リモートデバッグというのをしています。 とりあえずSRAM -----> CPUの交換をしてみます。