組み込みソフトウェア向けHichart処理系の開発

Download Report

Transcript 組み込みソフトウェア向けHichart処理系の開発

組み込みソフトウェア向け
Hichart処理系の開発
◎大徳雄太(東洋大)
後藤隆彰(東洋大)
切島忠昭(東洋大)
夜久竹夫(日大)
土田賢省(東洋大)
2008/3/21
電子情報通信学会2008年総合大会
1
発表内容
1.
はじめに
1.1. 背景
1.2. 目的
2.
本システム
2.1. システム概要
2.2. 振舞い表
3.
4.
実行例
まとめ
2008/3/21
電子情報通信学会2008年総合大会
2
1. はじめに
2008/3/21
電子情報通信学会2008年総合大会
3
1.1. 背景(1/3)

組み込みソフトウェア開発は,日本の基幹産業にな
るものとして注目を集めている

組み込みソフトウェアの市場規模は急速に拡大し,
開発の大規模化・複雑化が著しい

我々は,Hichartに基づく様々な処理系や開発支援
ツールの研究開発を行ってきた

その中で蓄積された形式的手法や技術を,組み込
みソフトウェアにも役立てられると思われる
2008/3/21
電子情報通信学会2008年総合大会
4
1.1. 背景(2/3)

組み込みソフトウェアの振舞いに関し、様々
な試みがなされている

玉井哲雄,青山幹雄,柴山悦哉,五十嵐淳,“
信頼性の高いコンポーネント技術の研究”

紫合治,“組込みソフト設計のための物理実体(
間接オブジェクト)の分析”

赤木匡博,“オブジェクト指向方法論のための通
信モデルに関する研究”
2008/3/21
電子情報通信学会2008年総合大会
5
1.1. 背景(3/3)

UMLやMATLAB等,システム上でシミュレ
ーションを行うものは存在

物理実体を制御する組み込みソフトウェア
開発では,シミュレーションだけでは不十分
な場合がある

実機での動作実験を行う際のパラメータの
設定が重要
2008/3/21
電子情報通信学会2008年総合大会
6
1.2. 目的

実機の物理的なパラメータに着目した振舞
い仕様を扱う,Hichartに基づく組み込みソ
フトウェア開発環境の構築
2008/3/21
電子情報通信学会2008年総合大会
7
2. 本システム
2008/3/21
電子情報通信学会2008年総合大会
8
2.1. システム概要(1/2)

本研究では,レゴ社の「教育用レゴ
マインドストームRCX」を使用する

NtoHでは,NQCソースコードから
Hichart内部データへの変換を行
う

HtoNでは,Hichart内部データか
らNQCソースコードへの変換を行う

生成されたNQCソースコードは,
BricxCCを用いることで,コンパイ
ル及びRCXへの転送が可能
図1 システム構成図
2008/3/21
電子情報通信学会2008年総合大会
9
2.1. システム概要(2/2)

本システムを用いて,Hichartエディタと振舞
い表を照らし合わせながらプログラムを開発
することにより,プログラムに振舞い仕様を反
映することが容易になると期待できる
2008/3/21
電子情報通信学会2008年総合大会
10
2.2. 振舞い表(1/4)

記述レベルの高い振舞いの仕様をまとめた表

例えば,「RCXが机から落下せずに走行す
る」などの内容が記述される

特定の振舞いに対する各入出力装置のパラ
メータのセットを,振舞い仕様とする
2008/3/21
電子情報通信学会2008年総合大会
11
2.2. 振舞い表(2/4)

過去の実験で取得したデータなどを基に作成
する

プログラムとは独立に用意する
2008/3/21
電子情報通信学会2008年総合大会
12
2.2. 振舞い表(3/4)
表1 「机から落下せずに走行する」振舞い表
センサーの感度:s
0-32
33-49
50-100
机の端を認識
×
○
○
その場で回転しない
○
○
×

表中の○,×は,RCXのある振舞いが,その
パラメータの範囲内で,期待通りのものである
か否かを示す
2008/3/21
電子情報通信学会2008年総合大会
13
2.2. 振舞い表(4/4)

振舞い表画面の主な機能として,以下の二つ
がある
 選択したセルの振舞いに必要なパラメータを,
Hichart図に自動的に反映する
 パラメータの範囲の最大値と最小値の平均値を
反映する
2008/3/21
電子情報通信学会2008年総合大会
14
3. 実行例
2008/3/21
電子情報通信学会2008年総合大会
15
3. 実行例(1/3)

RCXが,「机から落下せずに走行するプログ
ラム」を例として説明する

光センサーが机の端を認識すると,RCXが後
退,方向転換することで,落下しないようにし
ている
2008/3/21
電子情報通信学会2008年総合大会
16
3. 実行例(2/3)
図2 実行時のHichart図と振舞い表画面
2008/3/21
電子情報通信学会2008年総合大会
17
デモ
2008/3/21
電子情報通信学会2008年総合大会
18
3. 実行例(3/3)

振舞い表を用いてプログラムを開発すること
で,行わせたい振舞いに必要なパラメータの
設定が容易になる

パラメータの自動反映機能を用いて編集した
プログラムからも,正常にNQCソースコードを
生成できる
2008/3/21
電子情報通信学会2008年総合大会
19
4. まとめ
2008/3/21
電子情報通信学会2008年総合大会
20
4. まとめ(1/3)

以下の機能を備えたHichartエディタを開発
した
 NQCソースコードとHichartの双方向変換
機能
 振舞い表の表示機能
 パラメータの自動反映機能
2008/3/21
電子情報通信学会2008年総合大会
21
4. まとめ(2/3)

物理実体の振舞いを制御する組み込みソフト
ウェア開発において,テスト時のパラメータの
設定の手間を省けるなどの効果が期待できる
例:移動体(飛行船,掃除ロボット)など
2008/3/21
電子情報通信学会2008年総合大会
22
4. まとめ(3/3)

今後の課題
 すべての入出力装置への対応
 データベースから振舞い表を自動生成する
機能の開発
2008/3/21
電子情報通信学会2008年総合大会
23
終
2008/3/21
電子情報通信学会2008年総合大会
24
表2 RCX定数
SetOutput()のモードz
SetDirection()の方向
SetPower()の回転力
PlaySound()の音
OUT_ON,OUT_OFF,OUT_FLOAT
OUT_FWD,OUT_REV,OUT_TOGGLE
OUT_LOW,OUT_HALF,OUT_FULL
SOUND_CLICK,SOUND_DOUBLE_BEEP,SOUND_DOWN,
SOUND_UP,SOUND_LOW_BEEP,SOUND_FAST_UP
SelectDisplay()のモード
DISPLAY_WATCH,DISPLAY_SENSOR_1,DISPLAY_SENSO
R_2,DISPLAY_SENSOR_3,DISPLAY_OUT_A,DISPLAY_OU
T_B,DISPLAY_OUT_C
SetTxPowerのパワー
SetSensor()に使える設定
TX_POWER_LO,TX_POWER_HI
SENSOR_TOUCH,SENSOR_LIGHT,SENSOR_ROTATION,S
ENSOR_CELCIUS,SENSOR_FAHRENHEIT,SENSOR_PUL
SE,SENSOR_EDGE
SerSensorMode()のモード
SENSOR_MODE_RAW,SENSOR_MODE_BOOL,SENSOR_M
ODE_EDGE,SENSOR_MODE_PULSE,SENSOR_MODE_PE
RCENT,SENSOR_MODE_CELCIUS,SENSOR_MODE_FAH
RENHEIT,SENSOR_MODE_ROTATION
SetSensorType()のタイプ
SENSOR_TYPE_TOUCH,SENSOR_TYPE_TEMPERATURE,
SENSOR_TYPE_LIGHT,SENSOR_TYPE_ROTATION
On(),Off()などの出力
OUT_A, OUT_B, OUT_C
2008/3/21
電子情報通信学会2008年総合大会
25
振舞い仕様について

システムの動作を振舞いと呼ぶ

システムの振舞い及びその仕様に対しての研
究が行われている

シミュレーションでの研究が多いが,本研究で
は,実機を動かす際のパラメータに注目して
いる
2008/3/21
電子情報通信学会2008年総合大会
26
参考文献

紫合 治,組み込みソフト設計のための物理実態(
間接オブジェクト)の分析

玉井 哲雄,青山 幹雄,五十嵐 敦,柴山 悦哉,
信頼性の高いコンポーネント技術の研究

荒井 玲子,リアルタイムシステムと上流設計システ
ムツール
等
2008/3/21
電子情報通信学会2008年総合大会
27
変換の実現手法(1/7)

JavaCC と JJTree を使用して変換を実現
2008/3/21
電子情報通信学会2008年総合大会
28
変換の実現手法(2/7)

変換システムの全体像
JJTree
定義ファイル
NQCソース
構文木の
ノードクラス
変換プログラム
JJTree
NQCの字句・
構文解析クラス
JavaCC
Hichart
入力
生成
JavaCC
定義ファイル
参照
システムの全体像
2008/3/21
電子情報通信学会2008年総合大会
29
変換の実現手法(3/7)




JavaCC
構文解析と字句解析を実行するJavaプログラムを生成する
プログラムジェネレータ
Lex / yaccによく似ており,トークン定義・BNF記法に基づい
た記述からなる
構文にマッチした時の処理(アクション)が記述可能
2008/3/21
電子情報通信学会2008年総合大会
30
変換の実現手法(4/7)



JJTree
JavaCCのプリプロセッサで,構文解析の結果からツリー構
造を作るプログラムを,自動的に生成する
ツリー構造の生成規則をコントロールすることができる
2008/3/21
電子情報通信学会2008年総合大会
31
変換の実現手法(5/7)
トークンの定義

以下の例は型名である“int”および
加算演算子の“+”のトークンを定義している

IDENTは正規表現を用いて変数名などに使用する文字列を
定義している

|
|
<INT : “int”>
<ADDOP :
“+”>
<IDENT:[“a”-“z”, “A”-“Z”, “_”] (["a"-"z", "A"-"Z", "_", "0"-"9"])*>
トークンの定義
2008/3/21
電子情報通信学会2008年総合大会
32
変換の実現手法(6/7)

構文定義

“if ( 式 ) 文 [ else 文 ]”という並びを定義している

{ }内は構文木生成に関するアクションの記述
void ifS() : {}{
<IF> {jjtThis.tokenString = "if";}
<LP> E() <RP> S()
[ LOOKAHEAD(1) <ELSE> S() ]
}
構文定義の例
2008/3/21
電子情報通信学会2008年総合大
会
33
変換の実現手法(7/7)

変換の手順
字句/構文解析(JavaCC)・
構文木生成(JJTree)
構文木を順次辿り,
Hichartノードを生成していく
2008/3/21
電子情報通信学会2008年総合大会
34