simotin13's message

simotin13といいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

5分で理解するVxWorks入門

概要

組み込みソフトウェアの開発ではリアルタイムOS(RTOS)が採用されることが多く、RTOSの例としてiTronVxWorksが挙げられます。しかしながら、VxWorksが具体的にどういったOSなのかあまり世の中に広くは知られていないように思います。この記事では何回かに分けてVxWorkに関して具体的にどういったOSなのかを説明してきたいと思います。

そもそもVxWorksとは?

WindRiver社から販売されているリアルタイムOSです。 航空・宇宙・防衛の分野で広く使われています。NASAの火星探査機でも使用があり信頼性の高いOSとして知られています。
日本国内でも工場向け機器などで採用されています。

ターゲットCPU

リアルタイムOSというとターゲットのCPUはワンチップマイコンのようなローエンドのCPUがイメージされますが、VxWorksではどういったCPUがサポートされているのでしょうか。VxWorksでは

等のアーキテクチャをサポートしており、MMUを搭載したハイエンドモデルのCPUをターゲットとし、SMP構成をサポートしています。RTOSとしてこう言ったハイエンドのCPUをサポートしているOSはあまりありません。他にはQNXというUnix系のOSが組み込みでは利用されることがありますが、知名度でいうとVxWorksの方が知られているかもしれません。

特徴

ハイエンドなCPU向けのOSですが、RTOSですので、リアルタイム性を実現するための機能はサポートされています。タスク(スレッド)単位で優先度を指定でき、セマフォを使ったタスク間の同期・排他なども比較的容易に実現できます。

またファイルシステムやネットワークプロトコルスタックの機能も存在します。これらの機能のAPIは100%ではありませんがPOSIXに準拠したAPIとして提供されているのでUnix/Linuxでのプログラミングになじみのある方には比較的容易にプログラミングができるでしょう。過去にUnix系OSで使用されるオープンソースをいくつかVxWorksに移植して利用したことがありますが、Unix系OSで動作するソースコードからの移植性はかなり高いと感じました。

非常に高機能で便利なOSではありますが、値段はどのくらいなのでしょうか。契約形態によって異なるので、直接具体的な価格を知ることはできませんが、ターゲットボードのサポートを考慮するとそれなりの価格になることは容易に想像できます。

開発環境

VxWorksの開発環境はどのような構成になっているのでしょうか。
WindRiver社からはWindRiverWorkbenchというEclipseベースの統合開発環境が提供されています(有償)。開発に使用する言語としては、アセンブラC言語C++言語での開発が可能です。 workbenchでは開発ツールとしてgccベースのツールチェイン一式を使ってビルドを行います。デバッグgdbを使ったデバッグができ、workbenchのGUI上からデバッグが可能です。

また、ターゲット上でのデバッグだけでなく、ホスト環境上で動作するシミュレータもワークベンチには含まれているので実装後に気軽にデバッグすることが可能です。

近年WindRiverはLLVMベースの開発環境の整備に力を入れており、最新のバージョンでは利用できるプログラミング言語の選択肢も広がっているようです。

参考

VxWorksの概要については、英語になりますがWindRiverから公開されている動画が参考になります。
www.youtube.com

まとめ

今回は簡単にVxWorksについてまとめてみました。次回は今回の記事で書けなかったAPIVxWorksを使った開発に関する話を書いていきたいと思います。