TL;DR
組み込み業界では、動かないのがあたりまえ。動かすのは自分たちなんだ!
はじめに
組み込みエンジニアに求められる資質は、下記だと思っている。
ハードウェアとソフトウェアの両方を垣根なく見れること
組み込み業界では、動かないのがあたりまえ。動かすのは自分たちなんだ!
組み込み環境は本当に地獄だぜ、ヒャッハー
組み込みにおいてはCPUから各種部品まで、くっつけただけでは**(ある意味)動かないのが当たり前** です。
それぞれの部品にはそれぞれの初期化処理なんかがあって、その通りに動かせば動く はず です。
なぜはずか?
その処理シーケンスは、それぞれの部品が理想的な状態で動かすときの手順なので、現実の部品とつなぐには問題が生じる場合もある。
例えば自作PCだと「相性」って言われる問題ですね……
組み込み環境で動かすのは自分たち
組み込み環境で物が動かないならば、(1)自ら現象を調査し、(2)仮説を立て、(3)検証し、問題を1つずつつぶしていかなければならない。
特に、ハードウェアに関するトラブルだと「こっちのはんだ付けが甘かったッス!」なんていうことも可能性として否定しきれない。
そのほかの業界との共通点・相違点
共通点
- 基本的な知識は流用可能なものが多い。
- セキュリティ
- ネットワークプロトコル
- 画像処理や音声処理
相違点
- 障害調査は「まずこれは正常動作するデバイスですか?」から始まる。
- もしかすると、そもそも正常動作しないハードウェアかもしれない。
- もしかすると、そもそも正常動作しないソフトウェアかもしれない。
- もしかすると、そもそも正常動作しない設定かもしれない。
- 同じソースコードが、同じバイナリを出力するとは限らない
- x86で正常動作したソースコードだから、ARMv8-Aで正常動作するはずだって?あははは、そんなわけ・・・ないのですよ・・・
- GCC 9で実績あるソースコードだから、clangでもうごくはずだって?あはははは(涙)
- なぜ あなたは 古いマイコン ソースコード 別のマイコン 動く 考えたですか?
- 部品にはEOL(End of life)がある。
- 組み込みで利用している部品は、供給が止まることがある。つまり、EOLとかディスコンとか。
- その前に大体部品を探して切り替えるなどの対応が必要になる。
- 最悪「部品供給されなくなったので、製品終了です」
- 製品にはEOL(End of life)があるはずなんだけどなあ…
- ものすごーくながーく使ってくださるお客様もいる。ありがたいのはありがたいのですが…
- 製品依存で流用できない知識も少なくない
- このボードだけの仕様です、みたいな話は否定しきれない。
- 別ボードになったら使えなくなります、とか辛いですね
まとめ
組み込みの仕事で最も大切な事は、これだと思う。
ハードウェアとソフトウェアの両方を垣根なく見れること
そのうえで…
- 組み込みの仕事は、多分これから先もある程度はなくならない。
- だからといって右肩上がりに儲かるという話でもない。
- 色々、色々!!考えましょう!!