Comments
Transcript
Wind River オンラインサポート Tech Tip 第 4 回 リアルタイムプロセス
Wind River オンラインサポート Tech Tip 第 4 回 リアルタイムプロセス(RTP) 前編 今回より 2 回に渡り VxWorks6.x よりあらたに導入されたリアリタイムプロセスについて、解説します。リアルタイムプロ セス(RTP)は VxWorks で初めてユーザ空間でアプリケーションを実行することができるテクノロジーです。 1. リアルタイムプロセス(RTP)概要 図 1 は通常のタスク、割り込みサービスルーチン、カーネルとの関係を表したものです。RTP はカーネルプロセスや他 の RTP との間に保護境界を作り、直接アクセスができないのでデータやプログラム領域の破壊を防ぐことができます。 他の RTP とは共有ライブラリ、共有データという共有リソースを排他制御をしながら利用することで通信することができ ます。また、従来のタスクや ISR とはメッセージキューなどのオブジェクトをパブリック化することで通信をすることもでき ます。 図1 2. RTP プログラムの作成 プログラムを作るにはリアルタイムプロジェクトを作り、アプリケーションをインポートします。これはサンプルソースです。 ご覧のとおり、RTP は必ず main()で始まり、いままでのプログラムと同じようにタスクを作成することができます。 3. メモリマップとユーザ空間 従来の VxWorks はすべてカーネル空間で動作していました。RTP の導入によりユーザ空間でアプリケーションを実行 できるようになりました。図 2 のように RTP を使うとカーネルヒープの領域に RTP で作成したメモリーを動的にマッピン グします。MMU を使えば保護領域を設定してテキストは読込専用にすることができるので、悪いプログラムによる破 壊を防ぐことができます。RTP では MMU は必須ではありませんので、MMU をオフにすることでパフォーマンスが悪化 しないようにすることもできます。 図2 4. RTP の実行 RTP を実行するには以下 4 つの方法があります。 1. カーネルシェルからコマンドで起動 rtpSp “host:c:/install_dir /target/usr/root/PPC32diab/bin/myVxApp.vxe first second third” 2. Workbench から起動 RTP ファイルを選択後、サブメニューから実行またはデバッグ 3. ブート時に自動起動 usrRtpAppInit.c に rtpSpawn ()を追加して自動的に起動させる。 4. アプリケーションやカーネルタスクからプログラミングで起動 rtpSpawn (args[0], args, NULL, 100, 0x10000, 0, VX_FP_TASK); RTP は xxxx.vxe ファイルというオブジェクトができますので、このファイルを vxWorks 上のファイルシステムに置くことに よって CMD モードのシェルで Unix のように起動することもできます。 [vxWorks]# /romfs/myVxApp.vxe first second 次回は、CMD モードのデバッグや RTP の活用方法などをご紹介いたします。