マイコン開発での失敗談
を拝見し、過去、現在、未来に渡って記録する。
ここでは、マイコン開発とは、CPUを1つ以上含むシステムとする。
組み込みであるとか、パソコンであるとかは問わない。
電源(power supply)
対象システムの電源の仕様が、ハードウェアに明確に記載していない場合がある。
付属文書がある場合には、付属文書には必ず記載があるはずである。
付属文書がついていないシステムを入手した場合には、ハードウェア記載の製造企業、型番などからネットに文書がないか検索する。
箱に製造企業、型番がついていない場合は、箱を開け、基盤についている製造企業、型番から検索する。
失敗談1
電源の仕様を文書で明確に確認しないまま、合いそうなな電源を接続した。
結果、ボード状のICから炎が上がった。
すぐに、電源を切り離した。
もっとやばいのは、電源を入れたときに、測定するため、測定機器も繋いでいた。
すぐに電源を切り離したため、測定機器は壊れなかった。
界面(interface)
失敗談2
SCSIという刻印のある箱があった。
電源の仕様の記載もあった。
記載の電源を接続し、パソコンのSCSIIと接続した。
箱から煙が上がった。
SCSIという記載は、間違いで、SCSIIと同じ幅のパラレルIFを、出荷の際に、添付文書でその出荷分はパラレルIFのものもSCSII表示の箱で出荷したらしい。
幸い、パラレルIFケーブルを接続したら動作した。
箱の記載だけではなく、付属文書を確認しよう。
付属文書がない場合には、箱をバラして、回路を確認しよう。
IFに接続しているICの仕様を見れば、SCSIIかパラレルかは確認できるかもしれない。
失敗談3
ある電動機の制御をしようとした。
付属回路には、特定の製造会社のICがついていた。
製造会社に問い合わせをした。
特定の会社向けに出荷したものであるため、仕様は開示できないとのこと。
入手先を聞かれた。
当方は、問い合わせを受けて借り受けただけであるため、入手元は不明であると回答した。
結果として、仕様がわからなかった。類似の機器から推定できる制御プログラムを動作させてみた。必要十分な動作が得られなかった。
全体を問い合わせ先に返答した。
動作しなかったという意味での失敗。無茶なことをして炎は発生させていない。
停止機能(stopper)
失敗談4
電動機の制御プログラムを作成していた。
動作させたら、実験装置が壊れた。
実験装置が壊れないような停止機能(stopper)をつけていなかった。
実験装置の設計には、停止して欲しい範囲を物理的に決め、物理的に止める機能をつけることの重要性を知った。
電気回路、電子回路としても、制限を設け、止めるような機能の設計を検討した。
ソフトウェアでも、状態を監視し、止めるようなソフトウェア機能を検討した。
三段階の停止機能の設計により、装置を壊す動作はしなくなる。
電動機制御算譜(プログラム)設計における3つの罠6つの教訓(実機)
https://qiita.com/kaizen_nagoya/items/b39b6b7ba0d90dff471d
予備保存(back up)
失敗談5
アセンブラで電動機の制御プログラムを組んでいたときのこと。
装置はFD軌道のMS-DOS 2.11。マイクロソフトのMASMである。
アセンブルして、実行したところ、FDのフォーマットを始めた。
何か、アセンブラの記述を間違えて、フォーマットする命令を呼び出してしまったらしい。
教訓5
教訓5.1 予備の作成
実行する前に、ソースコードは、実行する機材以外のところに予備を造る。
GitHub, bitbucketなどのネットワーク上にソースコードを掲載してから、実機で動かせば、少なくとも実機だけにソースコードがあるという状態ではなくなる。
教訓5.2 実機での動作の前に模擬試験または試験
実機で実行する前に、模擬試験環境で実行するか、
不正な実行をしないかどうか試験をすることが大事。
開発用OSの版
失敗談6
開発用OSの指定のある開発環境を、手元にある開発OSの異なる版に導入しようとして、丸1日費やして断念した。
コンパイルするたびに、不足するヘッダファイル、不足するライブラリが次々に出てきて、都合、30種類くらいのヘッダファイル、ライブラリを導入した。
もっと早めに見切りをつければよかったが、
経験のために、やってみた。
開発用クロスコンパイラのコンパイル
失敗談7
クロスコンパイラの導入の失敗は枚挙するときりがない。
主な原因だけ記載する。
1) 複数のコンパイラを導入していて、ヘッダファイル、ライブラリ、Path指定の順番が悪さをする
2) 複数のクロスコンパイラを導入していて、ヘッダファイル、ライブラリ、path指定の順番が悪さをする
3) 複数のOSを切り替えて使用するように導入した。他のOSのファイル、ヘッダーファイル、ライブラリ等が悪さをする。
4)
初めての制御用IC
失敗談8
あるネットワーク制御用ICを搭載しているシステムで, Linuxを動作させようとした。
ネットで検索したらSUSI Linuxだけ、ドライバのα版を公開していた。
導入したがうまく動作しなかった。
真っさらな状態からの導入
成功談1 真っさらな状態からの導入(ハードウェア編)
ポルトガル語OS上で、動画配信システムの構築。
うまく導入できないという相談。
対応する仕様にあった機器のハードディスクをフォーマットして初期状態から導入。
手順通りに導入していったら、順調に動作。
うまく導入できなかったのは、目的以外のソフトウェアとの衝突の可能性がある。
教訓
何かうまく行かないことがあれば、ハードウェアを初期化してやり直す
成功談2
Macintosh で Scilabの導入に何度も失敗した。
そこで、ある企業のある技術者(複数)に、作業診断を依頼した。
依頼後、作業を記録しながら、途中で不必要な作業をせずに(作業記録以外の)導入したら、導入に成功した。
作業診断を依頼した技術者も、同時に導入に成功した。
作業の途中で、他の作業をした内容が衝突していた可能性がある。
教訓
ソフトウェアの導入時に、別のソフトウェアを導入したり、起動したりしない。
文書履歴(document history)
ver. 0.10 初稿 20180715
ver. 0.11 20180716
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.