こんにちは現役組み込みエンジニアのtomozoです。
今回は、
組み込みエンジニアのハードウェア学習について
解説します。
この記事は
- 組み込みエンジニアを目指している人
- 組み込みエンジニアになって間もない方
- 少しプログラミングは慣れてきた組み込みエンジニア2,3年目の方
向けの記事です。
組み込みエンジニアってパソコンと向き合って
プログラミングばかりしているって
思われれているのではないでしょうか?
実は組み込みエンジニアはプログラミング以外にも
必要なものの一つとしてハードウェアの知識が必要です。
ハードウェアの知識がなければ、
ハード担当者により良い提案やアドバイスすることもできません。
自分で考えたモノ作りがしたくて組み込みエンジニアになったのに
与えられたこと・言われたことしかできない
コーダー(コーディングだけする人)になってしまう可能性があります。
この記事を読めば
組み込みエンジニアがハードウェアで勉強すべきこと
が分かるようになります。
それでは解説を始めます。
目次
まず勉強すべきハードウェア知識4選
駆け出しの若手組み込みエンジニアが、
まず勉強すべきハードウェアの知識は以下の4つです。
- 回路図
- CPU
- 周辺IC
- 電子デバイス
一つずつ詳しく説明します。
回路図
一つ目は、回路図を読めるようになりましょう。
新人エンジニアあん
中学生の理科の電気で電池と電球が
つながっているこういう絵をかきましたよね。
これが一番簡単な回路図です。
こんな具合にいくつもの様々なIC(素子)が
つながっているものを回路図と言います。
例えば、下の絵のようなラズベリーパイという
安価な電子工作に使えるユニットがあります。
ラズベリーパイの回路図がこちらです。
新人エンジニアあん
tomozo
色々つながっているので複雑ですが、
機能ごとに分けて一つずつ調べながら見ていけば理解できるようになります。
そこで下図のような機能ごとに分けて書かれたブロック図というものがあります。
(かなり省略しているので参考程度にご覧ください。)
このようにブロック図とは何がどういう風につながっているのか
大きいくくり(ブロック)で書いたものです。
組み込み機器はそれぞれ機器ごとに固有のハードウェアがあり、
その中のCPUに組み込みエンジニアが作ったソフトウェアが
書き込まれて色々なデバイスを動作させています。
組み込みエンジニアは何をどのように動かせるかっていうのを
回路図をもとにプログラミングしていきます。
例えば、CPUの1番ポートにLEDがつながっているっていうのを見て
1番ポートをON/OFFすることでLEDを点灯/消灯させるという感じです。
組み込みエンジニアと回路図は切り離せない関係なので
回路図は必ず読めるようになる必要があります。
優秀な組み込みエンジニアになると、回路図の間違いを指摘したり
より良い設計を提案できるようになります。
未完成のプログラムに不具合(バグ)が潜んでいるように、
新規設計した試作ハードウェアにも誤りや不具合があります。
新しい基板で問題が起きたときは自分が作ったソフトウェアだけでなく
ハードウェアも疑って両面から原因を探る必要があります。
CPU(マイコン)
組み込みエンジニアが作ったソフトウェアを
動作させてくれるのがCPU(マイコン)で、
商売道具といっていいくらいずっと付き合っていくものです。
数あるICの中でも自分が扱うマイコンは使いこなせるように
マニュアルをよく読んで勉強しましょう。
各社から高性能な新しいマイコンがどんどん開発されていきますので、
一つ覚えたら終わりというものではなく
情報をリサーチして知っておく必要があります。
いくつか例を挙げると
組み込みで使うCPUには以下のようなメーカーと種類があります。
メーカー | シリーズ |
ルネサス | RL、RX、RZ(ARMベース) |
東芝 | TX、TLCS、TXZ |
テキサス・インスツルメンツ | C2000,MSP430、ARMベース |
各社とも自社開発のコアとARMベースのコアを持ったシリーズを
を取り揃えています。
コアというのは簡単に言えば、
CPUの内部ハードウェアの演算・制御装置
と覚えておきましょう。
tomozo
高性能なマイコンのマニュアルは
なんと1000ページを超えます!
しかも海外製CPUだと英語のみで日本語の翻訳版がないこともあります。
マイコンの基本的な特徴と機能をいくつか簡単に紹介します。
- 処理単位が8/16/32ビットがあり、数字が大きいほど処理が速いが高価
- CISCとRISCというの2系統で分けられる。
CISCとRISCの特徴を表にすると
CISC | RISC | |
正式名称 | Complex Instruction Set Computer | Reduce Instruction Set Computer |
命令 | 高機能な命令をCPUで処理
一つの命令で複雑な処理が可能 |
単純な命令しかないがハードウェアで処理
|
実行速度 | 遅い | 早い |
用途 | パソコン系が多い | 組み込み系が多い |
代表的なメーカー | インテル | ARM |
どちらがいいという議論はされることもありますが、
結論はでておらず設計思想の違いです。
tomozo
- よく利用する代表的な機能
機能 | 用途例 |
タイマー | 何ms経過したかなど時間を計測する時に使用 |
ポート | High/LowすることでデバイスをON/OFF制御する時に使用 |
UART | シリアル通信でほかのデバイスとデータのやり取りをする時に使用 |
割り込み | メインプログラムとは別に何かイベントが起きたときに処理される |
割り込みとは
下の図のように
- メインブログラムを処理
- タイマー割り込みが発生(例えば正確に1msごとに定期的にしたい処理)
- 一旦メインプログラムを中断して、割り込みプログラムを優先して処理
- 割り込み処理終了
- メインプログラムを中断したところから再開して処理
といった制御ができます。
この割り込みという機能は
非常に便利でなくてはならない存在なのですが、
よくバグの原因になることもある
組み込みエンジニア泣かせの憎い存在です。
この他にもマイコンには種類・機能がたくさんあり
すべてを把握するのは大変なので自分が使うものから
一つずつ理解していきましょう。
マイコンの機能についてはこちらの記事で詳しく解説しています。
マイコン基本機能5選【初心者組み込みエンジニア必見】
周辺IC
マイコンの勉強をしながら、
マイコンとつながる周辺ICを学習しましょう。
周辺ICには
- モータードライバ(モーターを回すためのデバイス)
- EEPROM(不揮発性のメモリ)
などがあります。
特性や使い方などは
ICメーカーがデバイスごとにデータシートというマニュアルを
ホームページなどで公開しているのでそれを読めばわかります。
例えばこちらの東芝製のTA8428という
DCモーターを回すためのモータードライバのデータシートを見てみましょう。
このような資料を読みながら使い方を理解し制御します。
6ページにこのような表が載っていますね。
入力 | 出力 | 出力モード | ||
IN1 | IN2 | OUTA | OUT/A | |
H | H | L | L | ブレーキ |
L | H | L | H | 逆転 |
H | L | H | L | 正転 |
L | L | OFF(ハイインピーダンス) | ストップ |
IN1とIN2にHigh/Lowの組み合わせを入力すれば、
モーターを回したり止めたりできることが分かります。
あとは10ページにある
「注意1:入力信号切り替え時は OFF TIME を挿入してください (100 μs 以上)」
を読んでこれは注意しないといけないな
っていうところまでまで読めるようなれば大丈夫です。
マイコン同様に海外メーカーのデバイスだと
データシートが英語しかないってこともありますので
英語にも慣れておくようにしましょう。
tomozo
周辺ICをすべて覚えたり理解する必要はありません。
実際に何かICを使うようになった時に戸惑わないように
代表的なものをいくつか読んでみて
データシートにどんなことが書いてあるのか理解し、
読めば分かるレベルになれば大丈夫です。
電子デバイス
マイコン、周辺ICと来て最後は電子デバイスです。
組み込みで利用される電子デバイスには
- センサ
- スイッチ
- モーター
- カメラ
などがあり多くの種類があります。
例えばセンサを見てみましょう。
透過型のセンサでgoogle検索してみると、
オムロン社のフォトマイクロセンサが出てきました。
組み込み機器で物体の位置検出などでこの手のセンサは
いたるところで使われます。
簡単な電子デバイスなので、データシートも数ページと少ないですが
3ページに2番ピンから出力が出てくるといった情報などが記載されています。
2番ピンの信号がマイコンの入力ポートに入力されて、
マイコンは物体の有り無しを検出できるという仕組みです。
簡単な例ですが、
組み込みエンジニアが何かデバイスを使うときは
データシートを見るというのはの仕事なので、
どんなことが書いてあるのか理解できるようになりましょう。
まとめ
組み込みエンジニアがハードウェアで勉強すべきこと4つ
- 回路図
- CPU(マイコン)
- 周辺IC
- 電子デバイス
勉強の際に意識すること
- データシートやマニュアルを読む
- 簡単なモノから少しずつ理解していく
- たくさんあるのですべて覚えるのは不可能
- 読めば理解できることが重要
- 人に説明すれば理解が深まる
- 電子工作で動かして理解を深める
今回は組み込みエンジニアが学ぶべきハードウェアの基礎について
解説しました。
ハードウェアも専任者がいるくらいなので、奥が深が深いです。
新人エンジニアあん
tomozo
こちらの記事で
組み込みエンジニアが勉強すべきことについてまとめています。
もし興味があれば読んでみてもらえると嬉しいです。
組み込み系の勉強まとめ【必修】ソフトエンジニアとして学ぶべきこと