組み込みソフトウェアの開発ってどのような仕事?
そのように思っている人は多いのではないでしょうか?
組み込みソフトウェア開発者の業務内容はパソコンソフトと違って多岐に渡るのでわかりにくいです。
私は約7年間メーカーで組み込みソフトのエンジニアとして勤務しました.
今回の記事は,下記のような方に参考になると思います.
組み込みソフトウェアエンジニアの業務内容について知りたい
組み込みソフトウェア開発者の仕事内容
ここから少し専門的な内容に踏み込んでいきます.
組み込みソフト開発の主な業務内容を挙げてみました.
・組み込みOSの開発,改造
・ネットワークプロトコル関連の開発
・ブートローダーの開発
・映像処理回路の制御
・機械系(モーター),スイッチ,LEDなどの制御
・ストレージ制御,ファイルシステム関連の開発
・PC系ソフトウェアと同様のソフトウェア(サーバ,GUIなど)
主にC言語,アセンブリを使用する仕事から説明します.
まず最も技術レベルが要求されるのは,組み込みOSの開発や改造です.
近年ではほとんどのデジタル製品にOSが搭載されています.
これらのOSを開発,あるいは既存のOSを改造する仕事です.
Linuxなどを改造した組み込みLinuxを使用するケースも増えています.
このとき,ネットワーク機能を備えた製品の場合はネットワークのTCP/IPスタックなどを実装する場合もあります.
このあたりまで担当できれば,トップレベルの技術者です!
私もそこまでたどり着いていないので,皆さんは是非OS開発エンジニアを目指してください!
次に,ブートローダーの開発について説明します.
ブートローダーというのはCPUが起動直後に実行するプログラムです.
パソコンでいうと,BIOSと呼ばれているプログラムに相当します.
CPUは起動直後は,自分自身に対して「設定」してあげる必要があります.
その設定を行った後に,プログラムを実行することになります.
このような処理を実行するのがブートローダーです.
CPUは、自分自身のレジスタを制御するためにはアセンブリ言語を使う必要があります。
C言語では、自分自身のレジスタにアクセスできないからです。
例として,テレビを分解すると上の図のような構造になっています.
パソコンのように,ハードディスクが搭載されていますね.
映像製品では,放送局から受信したデータを受け取り,画像処理をしています.
そのため,動画コーデックなどの映像回路を制御する必要があります.
それらのデータを画面に転送するためにデータ転送系の制御も必要になります.
また,エアコンやプリンタなどの機械系の製品には,モーターなどを制御する必要があります.
次に,ファイルシステムは知っていると思いますが,組み込みソフトウェアの場合は独自にファイルシステムを作成する場合もあります.
これは扱うデータがかなり限定されている場合が多いので(テレビの場合,映像データなど),それに最適化した構造にするためです.
以上で説明した業務は,俗語で「下回りの開発」とか呼ばれることがあります.
一方で,組み込み製品のCPUは高性能化しているため,これまではPCでしか実現できなかったような機能も実装できるようになってきました.
その結果,製品にサーバを搭載し,ネットワーク機能を備えるなど様々な処理ができるようになってきました.
その結果,組み込み業界以外のバックグラウンドをもつプログラマも歓迎されるようになってきています.
組み込みソフトウェア開発で用いるプログラミング言語
昔は製品に搭載されているCPUが低性能であったため,ほとんどがC言語により開発されていました.
C言語だけで事足りていたといった方が正しい言い方でしょう。
近年ではCPUが高性能化し,GUIなどの様々な機能が搭載できるようになったため,JAVA, C, C++などの様々なプログラミング言語が用いられるようになりました.
つまり、OS機能あるいは簡易OS機能に加えて、その上で動作するアプリケーションの開発が活発になっているのです。
組み込みソフトウェアというものがイメージがわかないという方は,下記の記事を参考にしてください.
コメント