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

ハードウェア部品 DSL

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

* 6 REGISTER DETAILED DESCRIPTIONS FOR MAGNETOMETER

5.2.4 ハードウェア情報入力用 DSL

5.2.4.1 ハードウェア部品 DSL

’ p r o t o c o l ’ na m e = Q u a l i f i e d N a m e ’ { ’ o p e r a t i o n s += D s l O p e r a t i o n *

’ } ’;

D s l O p e r a t i o n :

( t y p e = D s l T y p e ) ? na m e = ID’ ( ’( p a r a m T y p e += D s l T y p e p a r a m n a m e +=

ID (’ , ’

p a r a m T y p e += D s l T y p e p a r a m n a m e += ID ) *) ?’ ) ’;

D s l C o m p o n e n t :

D s l M c u | D s l D e v i c e ;

D s l M c u :

’ mcu ’ n a m e = ID’ { ’

’ p i n s ␣ { ’ p i n s += D s l P i n (’ , ’ p i n s += D s l P i n ) * ’ } ’ p o r t s += D s l P o r t *

p e r i p h e r a l s += D s l P e r i p h e r a l * (’ sf r s ␣ { ’

sfr += D s l R e g i s t e r (’ , ’sfr += D s l R e g i s t e r ) *

’ } ’) ?

p a c k a g e s += D s l P a c k a g e *

’ } ’;

D s l D e v i c e :

’ d e v i c e ’ n a m e = ID ’ { ’

’ p i n s ␣ { ’ p i n s += D s l P i n (’ , ’ p i n s += D s l P i n ) * ’ } ’ p o r t s += D s l P o r t *

f u n c t i o n s += D s l F u n c t i o n * p a c k a g e s += D s l P a c k a g e * (’ r e g i s t e r s ’ ’ { ’

r e g i s t e r s += D s l R e g i s t e r (’ , ’ r e g i s t e r s += D s l R e g i s t e r ) *

’ } ’) ?

’ } ’;

Name

datasheet { Import }

Component MCU

Device component:

datasheet:

3 4

5.6:

ハードウェア部品

DSL

の定義

Code5.1

をグラフ化したものを図

5.6

に示す.(図形式では簡略化のため接頭語

Dsl

を除去している.)図では記載していないが,ルートの要素として

Model

を定 義している.

Model

では

datasheet

または

Protocol

である.

Protocol

MCU

とデ バイス間の接続プロトコルのインタフェース定義を行うためのもので,プロトコ ル名とそのプロトコルの持つメソッドの列挙を定義する.

定義

datasheet

では,データシート自体を示す定義を行い,内部に

Import

また は,

Component

を含む.

Import

文は別ファイルで定義した

Protocol

を参照する ために用いる.

Component

は,

MCU

または

Device

で定義される.これにより,

MCU

とデバイスの両方のデータシートを扱うようにしている.

MCU:

Name

mcu {

} Port Peripheral

Package

pins { }

, Pin

sfrs { }

, Register

5.7:

ハードウェア部品

DSL(MCU)の定義(一部抜粋)

5.6

より,MCUをより掘り下げた

DSL

定義を図

5.7

に示す.5.2.3で示したよ うに

MCU

データシートの項目として

IO,メモリ・レジスタ,周辺機能,パッケー

(メモリ・レジスタ),

Package

(パッケージ)の定義を行っている.また

Port

は 周辺機能が用いる

Pin

のセットを示すためのものである.

Pin

の定義は,

MCU

の論理的なピン名の列挙を行う.一方

Package

では,パ ッケージのピン名とピン番号と割当てられている論理ピン名を記述する.例え ば,

Atmega328

MLF

パッケージでは,

1

番ピンのピン名が

PD3

,割当てとして

PCINT19, OC2B, INT1

が指定されている.この場合,

Pin

には

PD3, PCINT19, OC2B, INT1

を列挙し,

PackagePin

には,ピン名として

PD3

,ピン番号

1

,他割り当 てとして

PCINT19, OC2B, INT1

を記述する(表記は

PD3(1) { PCINT19,OC2B,INT

}

となる).

Port

Port

名と,その

Port

に属する

Pin

を列挙する.Registerはレジスタ名と 割当てられているアドレスを記述する.

Peripheral

の表記は多少複雑である.Peripheralとして周辺機能名を記述し,そ の周辺機能の持つ機能を

Operation

として複数記述していく.Peripheralの定義で はその周辺機能の提供するプロトコルを指定している.関係としては

Java

で例える とプロトコルがインタフェースで

Peripheral

がそれを実装するクラス,

Operation

がインタフェースの持つメソッドを実装したものとなる.

Operation

内には,その機能を利用するための操作手順を,レジスタの操作とし

て記述する.操作手順はプログラム言語のような表記を行うため,レジスタ操作 の記法に加えて簡易な算術演算や制御構文を記述できるようにしている.このよ うな拡張は

Xtext

の言語拡張ライブラリである

Xbase

を用いて行っている.

MCUデータシー ト

MCU

IO情報

・ 周辺機能

・ メモ リ ・ レジ スタ 情報

・ パッケー ジ 情報

5.8:

ハードウェア部品

DSL

MCU

)の入力例

5.6

より,

Device

をより掘り下げた

DSL

定義を図

5.7

に示す.

MCU

とデバイ スは同じ

DSL

記法で記すが,入力項目は若干異なる.

Pin, Port, Register, Package

MCU

と同様の表記を行う.

Peripheral

は,デバイスではソフトウェアからは明 示的に利用することはないため除外している.

DeviceFunction

ではデバイス機能の定義を行う.粒度としてはメソッドの定義に

あたる.内部の表記法は上記の

Peripheral

Operation

と同じものであるが,

Oper-ation

がレジスタの操作を記述していたのに対して,

DeviceFunction

では

Protocol

で定義されているメソッド呼び出しの形で操作を記述する.

DSLAST

Model Hardware Model

Hardware Modelに対応

する要 素のみを変換 マップ に基 づき 1 :1 変換

( 変換マップは付録 参照 )

<<DslDatasheet>>

Atmega64/128 datasheet

<<DslMCU>>

Atmega328

<<DslPin>>

P1

<<DslPort>>

PortB

<<Datasheet>>

Atmega64/128 datasheet

<<HwMCU>>

Atmega328

<<HwPin>>

P1

<<HwPort>>

PortB

5.9:

ハードウェア部品

DSL(MCU)の DSL

からハードウェア部品モデルへの 変換

Device:

Name

device {

} Port devicefunction

Package

pins { }

, Pin

sfrs { }

, Register

5.10:

ハードウェア部品

DSL

(デバイス)の定義(一部抜粋)

デバイス データシー ト

・ デバイス 名

・ IO情報

・ デバイス機能

・ パッケー ジ情報

・ メモ リ ・ レジ スタ 情報

5.11:

ハードウェア部品

DSL

(デバイス)の入力例

DSLAST

Model Hardware Model

Hardware Modelに対応

する要 素のみを変換 マップ に基 づき 1 :1 変換

( 変換マップは付録 参照 )

<<DslDatasheet>>

KXP84 datasheet

<<DslDevice>>

KXP84

<<DslPin>>

P1

<<DslPort>>

PortB

<<Datasheet>>

KXP84 datasheet

<<HwDevice>>

KXP84

<<HwPin>>

P1

<<HwPort>>

PortB

E・E・E E・E・E

5.12:

ハードウェア部品

DSL(デバイス)の DSL

からハードウェア部品モデル

への変換

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