Comments
Description
Transcript
を使った TOPPERSシステムの開発とリモート保守
RLL(リモートリンクローダ)を使った TOPPERSシステムの開発とリモート保守 2005年11月18日 OS&ソリューショングループ 近年の組込みシステム 組込みシステムの制御対象 • 高機能化 • 複雑化 • ネットワーク化 • 小型化 組込みシステム開発への要求 • Time-to-marketの短縮 • 開発コストの削減 フィールドアップデートの要求 • 品質・信頼性 システムテストの重要性増大 A.I.Corporation 2 フィールドアップデートやテストでの要求 オンラインへの負荷が少ない(部分入れ替え) 可能なフィールドアップデート技術 ITRONが多い、16ビット、32ビットのローエンド マイコンでも動作可能なこと。 MMU無しで可能なこと 動的ロードが可能なこと。 自動で連続してきること A.I.Corporation 3 従来のロード方式 仮想多重 仮想多重 アドレス空間 アドレス空間 方式 方式 ターゲット上でロケータ動作、モジュール間の ターゲット上でロケータ動作、モジュール間の シンボル参照は参照時に動的に行なわれる シンボル参照は参照時に動的に行なわれる ⇒ ⇒ ターゲット負荷大きい ターゲット負荷大きい ターゲット ターゲット ターゲット上でリンカ、ロケータ動作 ターゲット上でリンカ、ロケータ動作 リンク リンク ⇒ ⇒ ターゲット負荷大きい ターゲット負荷大きい 方式 方式 A.I.Corporation 4 “リモートリンクローダ方式”とは? リモート リモート リンク リンク 方式 方式 ターゲット外のサーバで、リンク、ロケート、 ターゲット外のサーバで、リンク、ロケート、 モジュール間シンボル参照テーブル作成を行う モジュール間シンボル参照テーブル作成を行う ⇒ ⇒ RLLエージェント FATファイル システム TCP/IP モジ ジュ ュ ール ル モ ー モジ ジュ ュ ール ル モ ー モジ ジュ ュ ール ル モ ー ダイナミックダウンロード RLLサーバ RLLサーバ Windows Windows /Linux /Linux SH-C SH-C ADS ADS Diab Diab GCC GCC PC μITRON4.0 カーネル ターゲット リモートリンク TOPPERS-Pro部分 A.I.Corporation 5 RLLの特徴のまとめ μITRONの持つ軽さと高いリアルタイム 性を損なわず、ダイナミックローディング 機能を実現 CPUパワーの小さい8、16bit、ローエン ド32bitマイコンでもダイナミックローディ ングが可能に A.I.Corporation 6 リモートリンクローディング ターゲット機器 サーバ(PC) メモリマップ メモリマップ 情報 情報 通信 リロケータブル オブジェクト メモリ ローダ機能 アドレス アドレス 解決した 解決した ロードモジュール ロードモジュール メモリマップ情報 物理アドレス の解決 メモリへの ロード実行 物理アドレスに マップした ロードモジュール リンク機能 ロードモジュール A.I.Corporation 7 ITRON仕様に追加した概念 概念1:モジュール 概念2:シンボルエクスポート A.I.Corporation 8 ITRON仕様に追加した概念 1 モジュール • 従来ITRONシステムはカーネルを含む全ての機能が1リンクされ るモデルが基本(モジュールの概念は持っていない)。 複数リンクモデルを採用し、リンク単位(=モジュール)で機能の 新規追加やバージョンアップが行えるようにした。モジュールは ID番号で識別されるものとした。 Kernel File System Application 1Module kernel FileSystem Application Bug A.I.Corporation 更新 Application + 9 モジュールの種類 ベースモジュール • • • 予め機器に書き込まれるモジュール、動的 な更新は出来ない基幹機能 ロードモジュールの受け皿 最小機能構成 → ITRONカーネル、RLL ロードモジュール • • RLLによって動的にロード、アンロード可能 なモジュール ロードモジュールの属性として基幹属性とオ プション属性を持つ A.I.Corporation 10 機能単位でダイナミックローディングを活用 する場合の例 不具合対策 モジュール バグや機能UPによる チャット アプリケーション ロードモジュール モジュール差し替え バグ 電話帳 Webブラウザ ロードモジュール ロードモジュール デジタルカメラ 編集モジュール 新機能のプラグイン ベースモジュール( ITRONカーネル+RLL ) A.I.Corporation 11 ロードモジュール RLLによって動的にロード、アンロード可能なモジュール ロードモジュールの属性として基幹属性とオプション属性 を持つ ロードモジュールはリンクするオブジェクトモジュール単位 (タスク、ドライバ、ライブラリ、データ、など) LinuxなどプロセスモデルのOSでは一般的にプロセス単 位であり、小さな修正でもプロセス全体をロードしなけれ ばならない TOPPERS-Proはリンク単位なので自由度が大きい A.I.Corporation 12 μITRONに追加した概念2 シンボルエクスポート • リンク単位の異なる外部モジュールのシンボルは参 照できない。 → モジュール間のシンボル参照の仕組みと してシンボルエクスポート宣言機能を静的APIと して提供。 エクスポート可能なシンボル • 関数名、変数名 • ロードモジュールに生成されたカーネルオブジェクト識 別名 A.I.Corporation 13 モジュール間のシンボル参照 グローバル参照テーブル エクスポート モジュール1 モジュール2 モジュール3 Task 3 Task 2 共有メモリ Task 1 間接アクセス 間接アクセス 共有ライブラリ 共有ライブラリ 直接アクセス エクスポート シンボル ベースモジュール(ITRONカーネル+RLL) A.I.Corporation 14 ベースモジュールのシンボル参照 前提条件:ベースモジュールは更新不可 → ベースモジュールのシンボルアドレスは不変 カーネルサービスコールを含む、システムパフォー マンスに影響する参照頻度の高いシンボルが 存在すると想像する ベースモジュールからエクスポートされたシンボ ルはロードモジュールから直接参照可能とした。 A.I.Corporation 15 ベースモジュールのシンボル参照解決方法 ロードモジュールビルド時、リンカ ロードモジュールビルド時、リンカ に定義ファイルを読み込ませる事 に定義ファイルを読み込ませる事 でシンボルのアドレス解決 でシンボルのアドレス解決 ロードモジュール Import Task tslp_ slp_tsk() tsk() 直接呼び出し •コンフィグレータが自動生成 •コンフィグレータが自動生成 •書式は使用ツール依存 •書式は使用ツール依存 →GNUの場合ldリンカスク →GNUの場合ldリンカスク リプトのSyntaxで出力 リプトのSyntaxで出力 ベースモジュール エクスポート シンボル 定義ファイル Export ITRONサービスコール ITRONサービスコール User Library ベースモジュール A.I.Corporation 16 ロードモジュール間のシンボル参照 ロードモジュールのロードアドレスは機器毎に一 定でない → ベースモジュールのシンボル参照のように ロードモジュールビルド時、静的に解決できな い。 シンボルアドレステーブルを介しての間接参照 方式で実行時に動的に解決。 A.I.Corporation 17 ロードモジュール間のシンボル参照の仕組み グローバル参照テーブル ID 0 1 2 ・ ロードモジュール ロードモジュール コンフィグレーションファイル EXPORT {"int {"int ExptFunc( ExptFunc( int para)"} para)"} EXPORT {"User Type ExptTable"} {"UserType ExptTable"} Cソースファイル int ExptFunc( ExptFunc( int para) para) { } シンボルアドレス &ExptFunc() &ExptTable 参照 登録 (活性化時) 間接 呼び出し ロードモジュール Cソースファイル /*エクスポートシンボルの /*エクスポートシンボルの 型情報, 型情報,参照マクロを 読み込み */ #include <global_ref.h > <global_ref.h> void taskfunc( taskfunc( VP_INT para) para) { ExptFunc( ExptFunc( 3); } global_ref.h #define ExptFunc ¥ (* (int )) ¥ (int (*)(int (*)(int)) global_reference_table[0]) UserType ExptTable; ExptTable; A.I.Corporation 18 RLLの活用1 フィールドアップデート 新機能の追加、既存機能のバージョンアップ、不具合対策に ■ 従来 人が現地に出向くなどして入れ替える ■ TOPPERSのRLLを使うと ネットワーク経由で動的にリモートメンテナンス TOPPERS+RLL サーバ A.I.Corporation 19 フィールドアップデート事例 1 ハンディターミナルのような、アプリケー ションの入れ替えが必要なシステム End End User User Application Application WEB WEB Application Application 機器メーカ メンテナンス機能 メンテナンス機能 Bluetoothプロトコルスタック Bluetoothプロトコルスタック TOPPERS-Pro TOPPERS-Pro TOPPERS/FI4 TOPPERS/FI4 RLL(Remote RLL(Remote Link Link Loader) Loader) TCP/IPプロトコルスタック TCP/IPプロトコルスタック FATファイルシステム FATファイルシステム 無線LANドライバ 無線LANドライバ SDドライバ SDドライバ サーバ Hardware Hardware A.I.Corporation 20 フィールドアップデート事例 2 ホームネットワークを利用した各種家電機器 ホームネットワークを利用した各種家電機器 のソフトウェアバージョンアップ のソフトウェアバージョンアップ 機器メーカ 無線LAN エアコン 照明 センサ ADSL 保守サーバ ホーム ゲートウェイ TV インターネット網 冷蔵庫 A.I.Corporation 21 フィールドアップデート事例 3 携帯電話の赤外線を利用した 携帯電話の赤外線を利用した 各種機器のソフトウェアバージョンアップ 各種機器のソフトウェアバージョンアップ 機器メーカ 伝送路を選ばないダウンロード機能 IrDA サーバ 携帯電話網 A.I.Corporation 22 フィールドアップデート事例 4 非接触ICカードリーダー/ライター 非接触ICカードリーダー/ライター 新しいサービスメニューにも、すぐに対応! サーバ 乗車券 電子マネー ICカード 個人認証 カードR/W ネットクレジット 新サービスがスタート A.I.Corporation 23 フィールドアップデート事例 5 デジタルカメラ デジタルカメラ サーバ TOPPERS-Pro TOPPERS-Pro TOPPERS/FI4 TOPPERS/FI4 プリント機能 RLL(Remote RLL(Remote Link Link Loader) Loader) TCP/IPプロトコルスタック TCP/IPプロトコルスタック FATファイルシステム FATファイルシステム 無線LANドライバ 無線LANドライバ SD/SDIOドライバ SD/SDIOドライバ Lens Lens Driver Driver Printer Printer Driver Driver カメラ レンズ Hardware Hardware A.I.Corporation 24 RLLの活用 テスト 自動システムテスト 動的チューニング A.I.Corporation 25 自動システムテスト 実ターゲットとPC仮想ターゲットのネットワークテスト環境 実ターゲットとPC仮想ターゲットのネットワークテスト環境 テストサーバ (RLLサーバ) 実機ターゲットボード TOPPERS+RLL TOPPERS+RLL テストサーバ (RLLサーバ) PC TOPPERS+RLL PCを仮想ターゲットとするケース A.I.Corporation 26 RLLを利用した連続システムテスト メモリが限られた実機上でも、小さいテストドライバ(テストスクリプト) を一つづつ動的ロードして実行することで多数のテストプログラムを 自動的に連続実行。 ロード テストタスク1 実行 テストタスク テストタスク2 アンロード テストタスク4 テストタスク3 テストシナリオ テストタスク3 機器のソフトウェアが 使うメモリ テストタスク2 テストタスク1 テストタスク4 機器の全メモリ A.I.Corporation 27 ターゲットを止めない動的連続テスト実行 ・デバッガと異なりダウンロードする度にシステムのリセットを行なわないので、 稼動状態での連続テストが可能。従って機器の操作手順などに依存した テストパターンやタイミングや動作状況などで発生する問題などの検出率を 大幅にあげることが可能 リセット ↓ RLL テストタスク1 リセット ↓ デバッガ テストタスク2 リセット ↓ テストタスク1 テストタスク3 リセット ↓ テストタスク2 リセット ↓ テストタスク3 A.I.Corporation テストタスク4 テストタスク4 28 ターゲット状況から特定テストタスクの実行をトリガー可能 ・ターゲットからのトリガーでテストプログラムの動的ロードと実行ができるの で稼動中の注目イベントや注目コンテキスト発生をもって特定のテストプログ ラム実行が可能 注目イベント発生! 注目イベント発生! リセット ↓ テストタスク1 テストタスク2 通知 通知 テストタスクの ロード&実行 テストタスクの ロード&実行 サーバ A.I.Corporation 29 テストパターンを簡単に増せる ・テストプログラムの実行順番を変えるだけで異なるテストシナリオになり、 テストパターンの網羅率を容易に上昇可能。 パターン1 テストタスク1 テストタスク2 テストタスク3 テストタスク4 テストタスク5 パターン2 テストタスク1 テストタスク3 テストタスク2 テストタスク4 テストタスク5 パターン3 テストタスク1 テストタスク2 テストタスク3 テストタスク5 テストタスク4 パターン4 テストタスク5 テストタスク2 テストタスク3 テストタスク4 テストタスク1 こういうことはプログラムでもできるが、一度にロードするテストプログラムのサイズが増えると やはりメモリの問題が出てくる。またテストプログラム自身がOSの一つのタスクとして動くこと が多いので、テストプログラム自身が大きく・複雑化すると実アプリケーションに影響を与えて しまう可能性がでてくる。(例:メモリの使用量など)。従って、一度にロードして実行するテスト プログラムはできるだけシンプルで簡単なものであることが望ましい。 A.I.Corporation 30 動的チューニング Matlabで対象モジュール作成 RLLモジュールビルド RLLランタイム 生成オブジェクト 動的にダウンロード ターゲット稼動中 RLLサーバ 結果測定 A.I.Corporation 31 動的チューニングの例 移動体機器のテスト&チューニング 移動体機器のテスト&チューニング 動いている機器(例:車)に無線を使いテストプログラムや チューニングコード/データなどを動的にロード&実行 公衆無線網など TOPPERS+RLL サーバ ECU A.I.Corporation 32 TOPPERS-Proのご紹介 NPO法人TOPPERSプロジェクトが開発した オープンソースμITRON4.0フルセットカーネル をベース リモートリンクローダ(RLL)搭載 TCP/IP、ファイルシステム標準装備 各種CPU、コンパイラ、開発環境対応 開発支援用にパソコン版が付属 メモリ保護機能(オプション) (株)エーアイコーポレーションによるライセンス、 技術サポート、品質保証、知財補償 A.I.Corporation 33 TOPPERS-Proソリューション TOPPERS-Pro ユーザアプリケーション 音声認識 メール WEBブラウザ Bluetooth その他各種 ミドルウェア TTS セキュリティ GUI IrDA ZigBee モバイルIP SMTP SMB UDF SyncML UPnP Webサーバ ノンFAT信頼性 ファイルシステム フラッシュファイル システム CORBA USB TCP/IP 各種 ドライバ 無線LAN ドライバ File System SD/SDIO ドライバ リモートリンク ローダ(RLL) イーサネット ドライバ μITRON4.0 仕様RTOS TOPPERS-Pro SH,ARM,M32,PowerPC,ColdFire,V850,Pentium,その他 A.I.Corporation 34 終わり ご静聴ありがとうございました。 E-mail WEB TEL FAX : : : : [email protected] www.aicp.co.jp 03-3493-7981 03-3493-7993 A.I.Corporation 35