VxWorks Evaluation

VxWorks
Evaluation
 

Try the industry-leading real-time operating system (RTOS). Please fill out this form and a Wind River® sales team member will reach out to you to discuss your evaluation request.

Badge
 

By submitting this form you agree that your personal information will be used by Wind River to process this request and send you further information about Wind River products and services pursuant to our privacy notice located here: windriver.com/company/terms/privacy.

VxWorks

THE #1 COMMERCIALLY DEPLOYED RTOS
  • Deployed by industry innovators for more than 30 years
  • Embedded processor support for all architectures
  • Certified to DO-178C DAL A, ISO 26262 ASIL D, IEC 61508 SIL 3
  • Proven in hundreds of safety-critical projects across multiple industries and standards
  • Built on an upgradeable, future-proof architecture
Buy VxWorks Now *Online purchasing available only in the following countries: U.S., Canada, Japan, Denmark, Finland, France, Germany, Italy, Spain, Sweden, UK

The Perfect Project


How software is developed and delivered affects the bottom line at most industry companies. Software now represents the bigger value contribution, and offers the possibility to differentiate your product from the competition. So how software gets developed, and how it gets delivered, are no longer isolated questions for the engineering department—they are executive staff questions that affect the company’s bottom line. Software development practices are undergoing dramatic changes. Continuous and Agile practices are used everywhere, all for the better.

Return to Resource Center

Simics One Page Product Overview


Wind River® Simics® allows developers to have on-demand and easy access to any target system, more efficient collaboration between developers, and more efficient and stable automation, enabling organizations to reap the business benefits of Agile and Continuous Development practices. This allows you to shorten the product lifecycle, so you can create and deliver better software, faster—even for complex, embedded, connected, and large IoT systems.

Return to Resource Center

Cross Build Linux Application for Wind River Linux - Japan




組込み製品開発に不可欠なクロスプラットフォーム開発とは


組込み製品をセルフプラットフォーム開発することの難しさ

汎用PC上で動作するソフトウェアは、開発から実行までを同じアーキテクチャ上で行うセルフプラットフォーム開発(セルフ開発:下図)で実装されます。汎用PC上で動作するエディタや開発ツール、統合開発環境(IDE)などを利用してプログラムを実装し、ビルドして、テストします。一連の開発は、実行環境と同じ汎用PCのCPU、メモリ、ストレージなどのリソースを利用し、アーキテクチャをまたぐことなくソースコードからバイナリイメージを生成します。近年注目を集めているVisual Studio Code等の開発ツールを簡単に利用できることも、セルフ開発のメリットです。

hypervisor

汎用PC(エンタープライズLinux)は十分なリソースを持つため、セルフ開発手法が一般的


一方、組込み機器上で動作するソフトウェアを同じ組込み機器上で開発することはほぼ不可能です。組込み機器は、その用途に必要で十分な最低限のハードウェアリソースのみを有し、これらのリソースを最大限活用し、最良のパフォーマンスを達成するように設計されています。そのため、開発ツールや統合開発環境を実行するために必要な余剰なリソースは一切ありません(下図)。GUIの無い組込み機器も珍しくないでしょう。そのため、Visual Studio Code等のモダンなツールを活用したセルフ開発は不可能です。さらには、組込み機器のCPU、メモリ、ストレージといったコンピューティングリソースはビルドのワークロードに適した設計でないため、バイナリイメージを生成する作業には多大な時間を浪費してしまいます。こうした理由から、組込み機器の開発では基本的にセルフ開発を採用しません。

hypervisor

組込みシステムは実行に必要なリソースのみを持ち、開発に必要なリソースを搭載しない




クロスプラットフォーム開発(クロス開発)

こうした理由から、組込みLinuxのソフトウェア開発では、開発時と実行時でアーキテクチャが切り替わる「クロスプラットフォーム開発」が主流となっています。クロスプラットフォーム開発では、ソースコードを汎用PCアーキテクチャ上で、プログラムをエディタや統合開発環境(IDE)により実装し、クロスコンパイラを使用して組込み製品のアーキテクチャに対応したバイナリイメージを生成し、プラットフォームをまたいで、ターゲットデバイスのアーキテクチャ上でバイナリイメージを実行します(下図)。

hypervisor

ホストPCによりターゲットデバイス用のソフトウェアを実行できるクロスプラットフォーム開発


クロス開発により生成できるバイナリイメージは、組込みLinuxに組み込まれるアプリケーション、ミドルウェア、デバイスドライバ、カーネルなど多岐に渡ります。いずれもターゲットデバイスのCPUに対応した命令(ISA:命令セットアーキテクチャ)で構成され、ターゲットデバイス上にインストールされている組込みLinuxのミドルウェア、ライブラリ、カーネルと連携して動作可能です。また、クロス開発により汎用PCを開発に利用できることから、Wind River Linux Distro のminimal imageをはじめとするGUIを備えていないターゲットに対しても、Visual Studio Code等のモダンなツールで開発することができます(右図)。

Why Wind River Linux

ホストPC上のVisual Studio Codeを使って開発できる



クロスプラットフォーム開発に欠かせないQEMU

クロス開発により汎用PC上でターゲットデバイスのソフトウェアを開発することはできますが、組込み製品開発では、肝心なターゲットデバイスを入手出来ないことが多々あります。その背景には、ソフトウェアとハードウェアを並行して開発するプロジェクトである場合や、世界的な半導体の供給不足の影響によるもの、ターゲットデバイス1基が非常に高価であり開発者全員分のターゲットデバイスを準備する予算を確保できないことなど様々な理由があります。

こうした状況を打破できる開発ツールがQEMUです。仮想的なハードウェアプラットフォームを生成できるQEMUは、リードタイムゼロ、コストゼロであらゆるターゲットデバイスを汎用PC上に生成することができます。CPUの種別(Intel x86 64-bit、Arm、PowerPC、etc.)や、CPUの構成(シングルコア/マルチコア)、メモリの搭載量、ストレージの搭載量、仮想ネットワークデバイスなどをはじめとする周辺装置(ペリフェラル)の構成など様々なコンフィグレーションが可能です。ただし、QEMUは汎用PC上で、ターゲットデバイス向けのアセンブラコード(例:Arm 64-bit)をすべてソフトウェアにより解読し、エミュレートすることから、実機と比べると動作が非常に遅くなります。特にGUIなど、リッチな機能をテストするためには多くの時間が必要となることを覚えておきましょう。

QEMUを使うことにより、お客様の組込み製品に採用予定のターゲットデバイスと同等の仮想ハードウェアを汎用PC上に生成し、クロス開発で生成したバイナリイメージを手元で直ぐに実行して評価することができます。これによりターゲットデバイスのない状況であってもソフトウェアの開発を推進できる、ターゲットレスな組込み製品開発を実現可能です(下図)。

hypervisor

ターゲットレスな開発を実現できるクロスコンパイラとQEMU



Wind River LinuxのSDKは、クロスプラットフォーム開発環境を提供します。クロスコンパイラをはじめとするターゲットデバイス向けの開発ツールをはじめ、ターゲットデバイスのISAをエミュレートできるQEMUを同梱しています。さらに詳しいWind River Linuxの特徴は、下記の「Wind River Linuxが選ばれる理由」をご参照ください。

Wind River Linuxが選ばれる理由
「基礎からわかるWind River Linux -商用組込みLinux製品のメリットとは」




はじめてのクロスプラットフォーム開発で組込みLinuxアプリケーションを開発しよう

それでは実際に、汎用PCと異なるアーキテクチャ(プラットフォーム)上で動作するWind River Linux Distro向けの組込みLinuxアプリケーションを開発する方法についてご説明します。Wind River Linux Distro向けのアプリケーション開発では、Wind River Linux Distroと同時に入手出来るDevelopment SDKを利用します。開発は下記の手順で行います。

  • 開発/実行環境の準備
  • Development SDKの入手とインストール
  • QEMU上でWind River Linuxを起動
  • アプリケーションの開発
  • アプリケーションのデプロイと実行


hypervisor
動画:はじめてのクロスプラットフォーム開発 - ターゲット無しで組込みLinuxアプリケーションを開発する
※動画は LTS21 となっておりますが、LTS22 も類似の手順で実行可能です。




開発/実行環境の準備

Wind River Linux Distroを実行するには、LinuxをインストールしたホストPCが必要です。推奨されるホストPCの要件は「Wind River Linux Release Notes:Host System Recommendations and Requirements」をご確認ください。また、「Necessary Linux Host System Libraries and Executables」に掲載されているパッケージも事前にインストールしてください。今回の動画ではホストPCにUbuntu Desktop 20.04(x86 64bit)を選択しています。



Development SDKの入手とインストール

Development SDKはWind River Linux Distroに対応したSDKです。入手方法とインストール方法は「ビルド無し!バイナリ配布で簡単にはじめるYoctoベースの組込みLinuxディストリビューション」をご参照ください。



QEMU上でWind River Linuxを起動

Wind River Linux Distroのminimal imageをQEMU上で起動します。minimal imageの起動方法の詳細は「ビルド無し!バイナリ配布で簡単にはじめるYoctoベースの組込みLinuxディストリビューション」をご参照ください。このQEMUがターゲットデバイスとなります。今回は、このQEMU上のOS内で実行できるアプリケーションを開発します。

QEMUと、ホストPC、それぞれの上で"uname -a"コマンドを実行すると、アーキテクチャを確認できます。QEMUでは"aarch64(Arm 64-bit)"と出力され、ホストPCでは"x86 64-bit"と出力されます。これより、ターゲットデバイスのアプリケーションをホストPCにより開発するには、プラットフォームをまたぐクロスプラットフォーム開発が必要となります。クロスプラットフォーム開発による開発効率向上の例をひとつ挙げると、minimal imageにはGUIがないことから、セルフ開発ではVisual Studio CodeなどのリッチなGUIインタフェースの開発ツールを使うことができませんが、クロス開発により、ホストPCのリソースを活用してVisual Studio Codeなどの先進的な開発ツールを駆使してアプリケーションを実装、開発することができることです。

Why Wind River Linux

ターゲットデバイスのアーキテクチャとホストPCのアーキテクチャ



アプリケーションの開発

それでは実際にアプリケーションを実装してみましょう。今回は「Wind River Linux Distro Quick Start, LTS 22:Creating a Sample Hello World Application」に例として挙げられているHello, World!アプリケーションを実装して、ビルドします(Wind River Linux Distro クイックスタートガイドをご利用の場合、「5.2. Hello Worldアプリケーションの作成」をご参照ください)。まず、ホームディレクトリ内に開発用のディレクトリを作成します(例:mkaddsample)。作成後、ディレクトリ内に"hello.c"と"Makefile"の2個のファイルを作成します。Vimなどのエディタを使っても良いですし、Visual Studio Codeなどのモダンな開発環境を使ってもよいでしょう。

実装後、". /home/USERNAME/wrlinux-sdk/21.20/environment-setup-cortex72-wrs-linux"を実行します。本コマンドは環境変数に作用し、通常の"make"コマンドから呼び出されるコンパイラやリンカーをx86 64-bit用のものからArm 64-bit用のものへと切り替えます。これにより、本コマンド以降の"make"コマンドは、内部でクロスプラットフォームコンパイラ(クロスコンパイラ)が実行され、Arm 64-bitのバイナリイメージを生成できるようになります。最後に"make"コマンドを実行し、ビルドに成功すると"hello_Linux"が生成されます(下図)。

ホストPC上での操作
                        
cd mkappsample/
~/mkappsample$ ls
hello.c  hello_Linux  hello.o  img  install  Makefile  runqemu
~/mkappsample$ file hello_Linux
hello_Linux: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=998a05430142b456e9359564302c02020c8a5b8f, for GNU/Linux 3.14.0, with debug_info, not stripped
                        
                    

Why Wind River Linux

環境変数の切り替えのみで、ビルドをセルフビルドにするかクロスビルドにするか切り替えが可能



アプリケーションのデプロイと実行

最後に、ビルドしたアプリケーションをQEMU上にデプロイし、実行してみましょう。QEMUへのデプロイには"scp"コマンドを使います。ホストPCのIPアドレスを"ip addr"コマンドで確認し、デプロイするファイルのフルパスを確認します(例:/home/USERNAME/mkappsample/hello_Linux ./)以上を基に、QEMU上で下記の"scp"コマンドを実行してください。

Wind River Linux上での操作
                        
# scp USERNAME@ホストのIPアドレス: /home/USERNAME/mkappsample/hello_Linux ./                   
                        
                    

QEMU上で"scp"コマンドが完了すれば、プログラムの準備は完了です。まず"file"コマンドを実行し、aarch64向けの実行ファイルであることを確認した後、"./hello_Linux"を実行してください。

Wind River Linux上での操作
                        
# file ./hello_Linux
hello_Linux: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1 Build ID[shar1]=… , for GNU/Linux 3.14.0, with debug_info, not stripped
# ./hello_Linux
Hello World with Wind River Linux!                                                              
                        
                    




ソースコード配布のWind River Linuxに対応したSDK

ソースコード配布のWind River Linuxの場合、ソースコードからLinuxディストリビューションを作成する"bitbake"コマンドのオプションに"-c popurate_sdk_ext"を付与することで、作成したLinuxディストリビューションに対応したSDKを入手することができます。作成したSDKを利用することにより、ターゲットデバイス用のアプリケーションやミドルウェアを汎用PC上で開発することができます。また、QEMUも同梱されており、ターゲットデバイス無しで作成したLinuxディストリビューションの実行が可能です。

右図はWind River LinuxにGUI(XFCE)が含まれているLinuxディストリビューションに対応するSDKが生成された様子を示します。SDKの名前は"wrlinux-graphics-10.21.20.11-glibc-x86_64-qemuarm64-wrlinux-image-std-sato-sdk-ext.sh"です。

Why Wind River Linux

ソースコード配布のWind River Linuxに対応するSDK



以上が、Wind River Linux向けの組込みLinuxアプリケーションをクロスコンパイル技術によりビルドする手順です。x86アーキテクチャのボード上でWind River Linux Distro用のアプリケーションを開発する手順については「5.2. Hello Worldアプリケーションの作成」をご参照ください。次回の記事では、Wind River LinuxをカスタマイズするためのLinux Assembly Tool(LAT)についてご紹介します。



リソース

Previous Next

Cloud Convergence-Japan

 



クラウドコンバージェンス

Feb 24, 2022 通信

著者:Michel Chabroux/ミッシェル・シャブロウ

クラウドはここ数年で多くの変革をもたらしました。ストレージやコンピューティングへのアクセス方法、ブラウザやモバイル端末からどこでもトランザクションを実行できる方法やビジネスとの関わり方などです。例えば、携帯電話で撮った写真はどこかに保存されますし、フィットネストラッカーや銀行アプリケーション、企業のフリーダイヤルに電話したときの会話に使われる自然言語処理(NLP)、インターネット検索などを考えてみてください。ロボット、飛行機、医療機器、製造業の制御装置など、さまざまな種類のシステムを作る企業と15年以上携わってきた私の立場からすると、クラウドは重要なインフラストラクチャの一部なのです。言い過ぎでしょうか?

クリティカルインフラストラクチャのプレーヤーは、デバイスを接続してデータを取得しています。新しいサービスやソフトウェア機能、セキュリティのアップデート、新しい機能を導入し、より大きなシステムに統合しています。デバイスは、ハイパースケールクラウドからエッジクラウド、エレクトロメカニカルエッジにまたがるグローバルサイバーフィジカルシステムの一部なのです。

では、実際にデバイスはクラウドに移行しているのでしょうか?私はそうは思いませんし、少なくとも現在それは意味がないと考えています。5Gは広帯域で低遅延の接続性をもたらすと言われています。しかし、1桁台の秒数の応答時間を期待するには、まだ十分ではありません。そのため、センサーからのデータをその場で処理する必要があります。多くのデータはクラウドに転送され、処理されますが、75%はまだエッジ上で処理されています。

接続性やデータだけでなく、あらゆるシステムの重要な構成要素はソフトウェアです。ソフトウェアをデプロイしている多くの人にとって、ソフトウェアが「作って終わり」ではないことは明らかです。ソフトウェアは、開発からデプロイ、運用に至るまでを管理する必要があります。クラウドテクノロジーは、ソフトウェアの管理を容易にするために、多くのイノベーションを推進しました。そのようなテクノロジーの1つが、大規模な拡張を可能にした「コンテナ技術」です。

さて、コンテナというと、理解されていないことが多く、また、さまざまな誤解もあります。コンテナは特定の問題を解決するために導入された技術です。私は、Googleの「コンテナとは、アプリケーション コードに、ソフトウェア サービスの実行に必要な特定バージョンのプログラミング言語ランタイムやライブラリなどの依存関係を加えた軽量のパッケージ」という定義がまさに完璧だと思っています。

コンテナ技術の最も直接的なメリットは、ミッションクリティカルなシステムにおけるソフトウェア管理の課題に対応したソリューションを提供できることです。実際、企業はすでにこの技術をIT側で使用しており、ほとんどの問題を解決しています。残されたのは、デバイスエッジのラストワンマイル(最後の接点)をつないで、エンド・ツー・エンドのクラウドベースのインフラを構築することです。


遠回りに感じるかもしれませんが、だからこそウインドリバーは2021年に、Open Container Initiative(OCI)に準拠したリアルタイムOSであるVxWorks(Wind River Studioの主要コンポーネント)用のコンテナエンジンを導入したのです。そして、既存のインフラストラクチャ(Kubernetesなど)、ツール、プロセス、ワークフローを使用し、機能的に安全なインテリジェントデバイスに適用することができるようになりました。つまり、VxWorksやLinuxのアプリケーションを、あらゆるITシステムと同じ構成でデプロイ・管理することができるようになったのです。(ここでは、VxWorks用のリアルタイムコンテナがLinux上で動作するとか、しないとかを言ってるわけではありません。)

なぜそれが重要なのでしょうか?クラウドコンバージェンスは、標準規格(OCI仕様はオープンでCNCFによって管理されています)、既存のインフラ、そして最も重要な人間の知識と経験を活用することによって、コスト削減を実現します。これらの変化は、デジタルトランスフォーメーションへの道のりのステップとなります。

VxWorksコンテナエンジンは、ミッションクリティカルなソフトウェアの厳しい要求に応えるためにゼロから設計されました。OCIイメージランタイムディストリビューション仕様に準拠しています。DO-178C DAL Aまで認定されるように設計されており、すべてのオプションを含めても400KB未満です。

次回は、ウインドリバーがどのようにハイパースケールクラウドを利用して、デジタルフィードバックループを推進し、テストオプションを増やすことができるのかについてご紹介します。