にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

組み込みソフトウェアの大変なところ

私自身は組み込みソフトの中でも上位レイヤなアプリしかしたことないのでドライバ開発の事情はよく知りませんが、それでもPCソフトと違う部分はいくつか経験しました。

時計が合ってない

電源を入れたら毎回1970/01/01 9:00からのスタートなので、何らかの方法で時計を合わせないといけません。テレビなら放送波、イーサからNTPで時刻合わせなどをまずしなければなりません。特にSSL接続を行う場合は尚更。

あるはずの関数が使えない

組み込みベンダやuClinuxなどOSだと、PC Linux上で当たり前のように使っていた関数がなかったりします。私の経験では、getaddrinfoが使えなかったので代替関数を作成して名前引きを行ったことがありました。

メモリの使い方に気を配らないといけない

これは組み込みに限った話ではないと思いますが、組み込みの場合は特に頭を悩まされるのがメモリです。メモリリークじゃなくても、一度に大量ループして動的にメモリをとると、oom killerという鬼さんが現れてメインのプロセスを殺したりします。(そうすると家電はもうちゃんと動きません。Watch Dogとかがいたら別だけど)そんなわけで、動作している途中で使用するメモリ量が上下するようなプログラムの作りはものすごく嫌われます。

まとめ

限られた製品(家電のみ)なので他の組み込み機器では当てはまらないものも多いと思いますが、まずはこういったものの条件を知る必要があるのが組み込みソフト開発だと思います。

余談

今はArduinoとか気軽に使えるマイコンとかが増えて個人的な勉強はしやすそうですね。私は、バンダイから出ているタンサーボーグを買って勉強したりもしました。タンサーボーグはCでプログラミングするのでちょっとした勉強にはいいかと思います。