• 検索結果がありません。

ゲートウェイドライバ導出の変換定義

ドキュメント内 JAIST Repository https://dspace.jaist.ac.jp/ (ページ 72-78)

* 6 REGISTER DETAILED DESCRIPTIONS FOR MAGNETOMETER

5.2.6 ゲートウェイドライバ導出の変換定義

るのに対し,ゲートウェイモデルはソフトウェアの視点のモデルであるため,ハー ドウェアモデルからゲートウェイモデルへの変換には,ハードウェアからソフト ウェアへの視点変換が必要となる.本章では,ハードウェアモデルの定義並びに,

ハードウェアモデルからゲートウェイドライバへの変換について詳細に述べる.

5.2.6.1

モデル変換

モデル変換の手順をデバイスドライバの導出,ペリフェラルドライバの導出,初 期化手順の導出と順に説明する.

デバイスドライバの導出 図

5.21

にハードウェアモデルからゲートウェイモデル のデバイスドライバの部分の導出を示す.入力としてハードウェアモデルで定義 したブロック図,デバイスのデータシート,

MCU

のデータシートの各要素を用い て,ゲートウェイモデルのデバイスドライバ部分を導出する.

ゲートウェ イ モ デル

変換処理

ハードウェ ア モ デル

MCU

周辺機能

デバイス

デバイス 機能

プ ロト コル 実現

利用

2

デバイス 機能=>デバイスドライバ 変換

デバイス デバイス 機能操作()

UML Class

周辺機能API操作 周辺機能API操作 周辺機能API操作 プ ロト コル のAPIを 用いてい

たもの を,実際 に実 現して いる周 辺機能のAPIに置き換

デバイス の持つ機能をメ ソ ッド 化 デバイス 毎にクラス 化

5.21:

デバイスドライバの導出

まず,ブロック図(

HwBlockDiagram

)に含まれる,

HwDevice

要素を順に取り 出し,デバイスドライバのクラスに相当する

DeviceBroker

に変換する.続いて,

HwDevice

の持つデバイス機能(

HwDeviceFunction

)とその機能に対応する振舞

いの

Activity

を抽出し,それぞれ

Operation

Activity

に変換する.

HwDevice-Function

Operation

はメソッドのシグネチャ,

Activity

は実装に相当する.

Activity

には具体的な操作手順である

Action

の要素が含まれる(図では例とし てメソッド呼び出しを表す

CallOperationAction

を用いている).

MCU

とデバイ ス間の接続プロトコルの

API

は統一されたものはないため,仮想的な

API

を用い ている.このため変換時に実際に

MCU

で定義されるペリフェラルドライバの

API

に読み替える必要がある.

MCU

のペリフェラルドライバの定義時には,この仮想

API

インタフェースとして継承する形で実装を行うことで,この対応を関係付け ている.以後同様にデバイスごとに変換処理を行う.

ペリフェラルドライバの導出 ペリフェラルドライバは,

MCU

のライブラリとし て提供されている場合は,そのライブラリを

DeviceBroker

要素として定義して用 いる.ここでは提供されていない場合の導出手順を解説する.図

5.22

にペリフェ ラルドライバの導出手順を示す.

HwBlockDiagram

で利用されている周辺機能(

HwPeripheral

)を抽出して,

De-viceBroker

に変換する.また,デバイスドライバの場合と同様に

HwPeripheralFunc-tion

Activity

Operation

Activity

に変換する.

HwPeripheral

Activity

に は周辺機能の操作に必要なレジスタの読み書きが必要となるが,通常の変数アク セスと多少扱いが異なるため,あらたに

Action

を追加した(

ReadRegisterAction

WriteRegisterAction

).操作対象となるレジスタは

MemoryBroker

として定義する.

ゲートウェ イ モ デル

変換処理

周辺機能 周辺機能操作()

UML Class

ハードウェ ア モ デル

MCU

周辺機能

レ ジス タ

周辺機能=>ペリフェラルド ライ バモ デル 変換

レ ジス タ操作 レ ジス タ操作 レ ジス タ操作 周辺機能毎にクラス 化

周辺機能の持つ機能をメ ソ ッド 化

機能毎の操作手順(レジス タ 操作)をメソ ッド 内に ア

ク ショ ンと して 変換

5.22:

ペリフェラルドライバの導出

初期化処理の導出 初期化処理の導出を図

5.23

に示す.まず

HwBlockDiagram

に て利用されている周辺機能の抽出を行い,その周辺機能の初期化手順を

MCU

の 初期化メソッドとして変換する.続いて

HwCircuitDiagram

よりその周辺機能が 利用している

IO

の抽出を行い,その

IO

がどのように利用されているか確認する.

IO

の利用方法に合わせた設定処理を

MCU

の初期化メソッドに追加する形で変換 する.

ゲートウェ イ モ デル

変換処理

ハードウェ ア モ デル

MCU

周辺機能

レ ジス タ

IO

3

周辺機能,ピン , 接続情報=>

MCU

初期化 変換

MCU 初期k処理( ) UML Class

ピ ン初 期化処理 周辺機能初期化 周辺機能初期化 UML Activity

電気的接続関係を参照 し,

利用してい るピンの入出 力 や周辺機能の利用状況に応 じ てピンの 初期 化処理をレ

ジ スタ操作 として列挙 初期化処理をメソッドに ま

と める MCUを クラ ス化

5.23: MCU

初期化処理の導出

5.2.6.2

コード生成

変換したソフトウェアモデルより,コード生成を行う.コード変換の定義は,コー ドテンプレートにより行う.ここでは

C

言語への変換定義を例とする.

C++

Java

等を利用する場合には,そのコードテンプレートを用意する.

まず

DeviceBroker

ごとに一つのヘッダ・ソースファイルを生成する.外部から

利用するメソッドは,ヘッダにエクスポート宣言する形で生成する.ソースファ イルでは,

Operation

要素を関数の定義として変換し,

Activity

に含まれる

Action

要素を順次コードとして変換する.

ゲートウェ イ モ デル

ペリフ ェラ ル ド ライ バ

デバイス ド ライ バ

MCU初期化

コ ード

mcu.h

<peripheral>.h

<device>.h

mcu.c

<peripheral>.c

<device>.c

コ ード生成

ク ラス 毎にクラス名を フ ァイ ル名 として,ヘッ ダとソ ース ファイルを生

成する.

5.24:

ゲートウェイモデルからゲートウェイドライバのコード生成

ゲートウェ イ メ タ モ デル

Classifier

DeviceBroker Operation

Behavior Action

RegisterAction

MARTE要素

UML要素

コ ードテン プレ ート

#include<>

<retType> <Operation> (<Param>);

#include

void <Function>(<Param> <Pvariable>){

<Behavior...>

}

メ ソッ ドの シグ ネチャ

メ ソッ ドの 振舞 い実装

5.25:

コードテンプレート例

6

ドキュメント内 JAIST Repository https://dspace.jaist.ac.jp/ (ページ 72-78)