組み込み開発

出典: Wiki@browncat.org

組み込み開発に対する目標というか雑感というか、愚考してみる。2006/7/10

目次

[編集] Linuxを組込みの開発ホストにしたい。

現在はわかっている人にしか使えない。
メーカのサポートはWindowsがメインである。
より簡便な開発支援ツールが必要であろう。

さらに考える。

[編集] 組み込み開発のOpen化をもっと進めたい。

もともと組み込み開発はそのターゲットの多様性から ソースコードの必要性はPC上のソフトなどと比べて大きい。 実際、組み込み向けのソフトはソースコード提供が含まれるものは珍しくない。 しかし様々な理由からオープン化はなかなか行われていない。

組み込み開発のOpen化はGNUツールチェインが基礎となり、 今EclipseがIDEの主流となって発展しつつある。

やっと業界が統一的な方向性へと移りつつある雰囲気である。 PC上のソフトは単体アプリケーションからサービスへの移行が叫ばれて久しい。 すなわちWindowsやLinuxなどと比べると数年の隔たりの感がある。

これは多様な開発ターゲット、メーカ主導のツール、デバッガ、 企業秘密からOpen Source採用の困難性などの要因があり、 製品は長期の安定した動作が必要とされ、業界全体がコンサバティブである。

またデバイス向けプログラマは数が少なく、 一般OSやWEB開発にさほど長けていないという隔たりもある。 能力的には可能であっても、そんな時間はない、というのが一般的であろう。

しかし、インフラにOpenなシステムが有効なことはGCCの方向性からも明白であった。
Eclipseが今またそのひとつとなろうとしている。
デバイスメーカも開発環境サポートコストの低減など、メリットは大きい。


現在、日本のソフトウェア産業は海外アウトソーシングも含め、多様な競争にさらされている。 組み込み開発もタイムラグはあるが例外ではない。
これらに打ち勝つため、様々なコストを圧縮し、短いTime To Marketで なおかつ高品質なソフトをリリースするには、 既存のコードやツールの利用は大きなポイントである。

プログラマや設計者は目的物の開発により時間を割き、 企業もまた製品自体に力を注ぐべきである。

[編集] サービスへ

企業秘密などのベールは、しかしそう厚いものではない。と考える。 もちろん製品に採用されるほとんどのアルゴリズムやコードは公開されない。 単に自社技術の保護だけではなく、 特許などの関連、また採用技術に対する契約の問題もあり、 そう公開できるものではない。 また公開すべきものでもない。

共通のベースとなる部分は主にデバイスメーカやOSメーカが提供し、 先も書いたように多くの場合ソースコード提供である。 特にデバイスメーカはライブラリを含む開発ツールを無償提供する場合も少なくはない。

当然デバイスメーカにとって自社製品のノウハウなどは 広まってくれた方が、採用実績が増えるものである。

では採用する側はどうか?

自社製品や過去の遺産など種々の制約はあるであろうが、 ベストなコストパフォーマンスの製品や構成を採用するのが最善である。 そしてそのデバイスなどを使うためのコードは一部メーカが提供している。

しかし、現在も車輪の再生産は行われているのである。

メーカ提供のソフトウェアは互いに互換性がなく、多くの場合移植は困難である。 ハードウェアもソフトウェアも一つのメーカを採用すれば、 続いて同じメーカの製品を採用することが多い。囲い込みである。 また、同じ目的のコードは一企業内では再利用されるかもしれないが、 Openに企業を超えた利用はされないのである。

これを打開する一つの方法がLinuxの採用である。 組込みLinuxは従来の組み込みOSと比べ、多くの機能を持つ。 POSIX準拠のライブラリ、ファイルシステム、ネットワークスタックを備え、数種のGUIもある。 またUSBやBluetoothなどのモダンなインターフェースに対するスタックも組み込むことが可能である。 アプリケーションは基本的にPC上で動作するものと同じものが動作する可能性が高く、 リッチなターゲットが作成可能である。

しかし問題もある。組み込みに使用するにはリソースを多く必要とし、 リアルタイム性も低い。また高度な機能を必要としない製品も多い。 これらを改善するuCLinuxやRTLinuxなどが存在するが、やはりiTronやvxWorks、デバイスメーカ提供OSなどに及ぶものではない。

逆にミドルウェアが貧弱なiTronなどではLinuxと同じような高機能なターゲットを作成するのは困難であり また費用もかかる。vxWorksなどは機能的に中間であるがもともと高価である。 また、制約によりOSは無しというケースも少なくはない。

こういった多様性を前提とした新しいインフラが必要なのではないか?
それはOSや開発ツールだけではないのではないか?
インターネットを基盤とし、相互利益を生みやすい仕組みが必要なのではないか?
企業が採用しやすいライセンスを持ち、容易にアクセスでき、そして実用に直結する。 そういうサービスが必要なのではないか?

まあ、大風呂敷を広げてしまったが、 実際出来うることは限られている。 共有できるミドルウェアやベースとなるライブラリ、 GNUなどでは提供されないツール。 アプリケーション以前の部分を包括したコンフィグレータ。 ノウハウや基礎を解説したドキュメント。
それらは全てwebをベースとしたシステムでまとめる。

[編集] 次は?また今必要なものは?

書いてしまうと陳腐ではある...
結局車輪をもう一つ作るだけの気もするが...

  • open化すると有効なソフトウェア
    • 各種デバイスやI/Fの操作ライブラリ
    • CPUのスタートアップコード
    • 一般的アルゴリズムのライブラリ
    • ROM化支援ツール
    • Flashツール
    • デバッグモニタ
    • SレコードなどのDLツール
    • クロスプラットフォーム(uItron/vxWorks/Linux/OSEKなど)
    • デバッグエージェント
    • ネットワークサーバ類
    • 上記プログラムのwebベースのコンフィグレータ
      • オンサイトでもオフサイトでも使える
      • オンサイトでも外部参照可能
      • セキュア
  • 即インストール可能な開発ツール類
  • 立ち上げを短縮するツール類
  • 組み込み開発の実用ドキュメント
    • 各種ドキュメントなどへのリンク
    • 各種ドキュメントの和訳
    • 基礎的かつ実用的な解説
  • プロジェクト管理
    • プロジェクト管理
    • 見積もり
    • コラボレーションツール
  • テスト向けツールや評価手法など
    • 評価手法
    • 統計的手法
    • 一般的なボード上のデバイス向けテストプログラム
      • メモリテスト
      • 提供ソフトのテストスイート
      • などなど。。。
ナビゲーション
Ads