Windows Embedded Standard

仕事の関係で先日より Windows Embedded Standard の勉強を始めた。さらに、先週末某社開催のセミナーに参加してきた。
で、分かったことは

  • ターゲットが Windows XP Pro が動作するスペックであること
  • あらかじめ適当なストレージをつないで Win XP Pro と必要なデバイスドライバをインストールしておくこと
  • 上記 Win XP 上でハードウェアプロファイルあらかじめ取得すること

がほぼ必須なことらしいこと。必ずしも Win XP をインストールしなくても、ハードウェアプロファイルを取得する方法はあるんだが、完全なプロファイルを取得するには Win XP のインストールが前提らしい。

 組み込み系の Windows(CE、XP Embedded、Standard)をインストールするプラットフォームなら、上記条件をクリアできるものがほとんどであるのは分かるが、組み込み開発でこの条件を満たせるような恵まれた環境って普通ありえないんじゃない?
 しかも、これだけリッチな条件でブートストラップするのに、サポートできるハードウェアの構成は原則として単一構成のみ。複数のモデルや追加のデバイスをサポートすることはできないらしい(一応ランタイムでドライバのインストールを行うことはできるけど、複数のプロファイルをベースにしたイメージの構築は保証しないようだ)。

 さらに、取得したプロファイルをベースにターゲットの仕様や動作させるアプリケーションに基づいて、専用のツールで必要なコンポーネントを選択しOSイメージを構築する訳だが、出来上がったイメージは実際には完成形ではなくて、実際にこのイメージで起動することでハードウェアの初期化手順、デバイスドライバのインストール等様々なランタイム情報をイメージに追加することでようやく完成する。

 他の組み込み系のOS(iTRON、Linux、*BSD)でこんな七面倒なことをやってられるかと思う。

 ツール類は確かに優れていて、機能ごとにコンポーネントを細かく取捨選択できフットプリントを調整することも容易い。が、肝心のコンポーネントの選択指針がまるで分からず、そのあたりがセミナーに参加することでようやく分かったほどで、わざと分かりにくく作ってるんじゃないかと疑いたくなるほど。

 Windows Embedded Standard が仮定しているようなターゲットなら、多分 Linux カーネルをブートするのは容易いし、一度ブートできれば必要なドライバ、モジュール類はほぼ特定できると思う。
 リードオンリーなデバイスでのファイルシステムサポートなどもLinuxや*BSDの方がよほど優れてる。今更だが。

 さすがに、ハードウェアやデバイス類のサポートは豊富だし、デバイスメーカも普通はXP用のドライバは開発してくれるので、それをコンポーネント化して利用できるのはWindowsの面目躍如なんだろうけど。

 ほぼ XP の機能が実現できるのが売りらしいが、それでこのしょぼさに正直がっかり。

 やっぱり、MSの言うところの組み込みと、世間一般の組み込みって相当に隔たりがあると思う。