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