2024年4月14日日曜日

古いマイコンボード#2

先月末、年度末のドタバタから開放されたあとで、新しいPCの環境整理を始めた。
数年前の記事のマイコンボード、まだまだ遊びで使うつもりなので、クロスGCCも用意していた。
新しいPCがイイ感じなので、調子に乗って新しいgcc-13.2を使った。
Super−H用のクロスGCCをnewlibと一緒にビルドしたのだが、クロスコンパイルをするとリンク時にエラーになっていた。
細かいことは忘れたけど、newlibを少しいじったように思う。
ターゲット用のバイナリができることを確認したあとで、UART経由で書き込んで、簡単な動作確認をしていた。
その時は、動作しているように思えたが…。
他の作業もあるので、あまり細かく見ていなかった。

先週、引っ張り出してみると、何故かうまく動かない。
まず、IIC接続のRTCがまともにアクセスできない。
このコードは2006年頃に書いたままだ。当時はかなり忙しく、せいぜい一日30分ぐらいしか使えないので、ギリギリまで手抜きをしている。コメントに書いてある内容とコードの動作が違っていたりする。そのためコンパイラが変わると動かない可能性は十分にある。
最初はそれを疑っていたのだが、SPI接続のSDカードのアクセスもできない。

gcc-13.2のクロスコンパイラを作ったときにnewlibをいじっていたので、もしや開発環境側に問題があるか?とその時は考えた。
今まで使ってきたGCCのソースを一応保存してあるので、古いGCCのクロスコンパイラを用意してビルドしてみた。
それでもだめ。
さらに古いPC内に残っている動作していた実行形式も動かない。
考えてみると、UARTからの書き込みプログラムは正常に動作しているし、kermitでのUART経由の操作もうまく行っている。
すなわち、コンパイラは問題ないだろう。

ということは、H/W?とうとう壊れてしまったのか?

先週も今週も、季節が良いので、やっぱり外に出たくなる。
菜の花と桜がきれいだし、暖かくて気持ちいい。外で弁当をたべるとおいしい。
特に今日は、「さくら草まつり」。パンサー尾形さんや小島奈津子さんなどが来て盛り上げてくれるらしい。
これに行かない手はない。
(見に行ったけど、面白かった)

ということで、調査の作業は午前中と夜だけ。
花見でビールを飲んでしまうので、夜は調査に向かない。
結果的に午前中の数時間で調査する。

マイコンボードに接続しているドーターボード?(こっちのほうが大きいんだけど)の回路図がもうどこにしまっているかわからない。
それを探し出すのに手間がかかった。そして、回路図と実機を追いかけながら、故障している箇所を探す。
するとSDカードの電源制御の部分の抵抗の定数を間違えている場所が2箇所も見つかった。
今まで動いていたのが不思議なくらいだ。

正しい部品に交換して、試してみると正常に動作した。

ちょうど開発環境の入れ替えと故障が重なって問題が複雑に見えたが、要は18年前のミスが原因だった。
今まで発生しなかった現象が出るようになった原因は?
じつは先月の動作確認時に乱暴に扱って、どこかが短絡して変なことになった。
そのときに、どこかにダメージがあったのかもしれない。
それも細かいことは覚えていない。

ほぼほぼむき出しなので、ケースにいれるなり、もう少し安全に気を使おう。

0 件のコメント:

コメントを投稿