委託契約書2009情財第919号 ~OSSを活用した組込みソフトウェア開発教育プログラムの開発と実証~ 組込みソフトウェア実装特別演習 演習実施環境の構成 平成23年2月 公立大学法人 広島市立大学 1 基本アーキテクチャ シミュレーション プロセス監視 (OTPを利用) OTPの アプリケーション として 動作させる 2 分散データベースMnesiaを利用 管理データ 外部環境系データ 動作履歴 計算に使う定数値 動作方法 Erlangシェルから直接コマンドを入力してデータ を追加・変更できる プログラム内からでも可能 3 Erlang環境の整備 Erlang環境のインストール作業 シミュレータ教材(ver2.0)のインストール インストールディレクトリに注意する http://erlangworld.web.fc2.com/erlang/ins2win.html (windowsの場合) C:\Users\xxx へインストールしたと仮定する ソースプログラムのコンパイル 分散データベースの初期化 開発用のエディタの準備 秀丸などのプレーンテキストエディタが必要 使い慣れたテキストエディタ 講義中に紹介されるテキストエディタや統合開発ツールなど 行番号表示、括弧チェック機能、キーワードに色が付くなど 4 最新版のErlangをダウンロード Windows binary のところをダウンロード ダウンロードファイルを実行して指示に従う インストール完了後、インストールされた場所を確認する。 例) C:\Program Files\erl5.7.5.\bin コマンドプロンプトから直接Erlangが実行できるようにパス を設定 システム環境変数の「Path」に、追加する。 例) ; C:\Program Files\erl5.7.5.\bin を追加する。はじめのセミコロンも必要。既存にかかれているパスは絶対 に削除しないこと。 コマンドプロンプトからErlangが実行できるか確認 erl と打って、Erlangが起動すればOK. 5 以下のURLからシミュレータ教材をダウン ロード http://scarlet.sos.info.hiroshima-cu.ac.jp/ipa/sim/ 作業(任意)フォルダに保存して、解凍する。 解凍後、ファイルの内容を確認。 ファイル数:26 フォルダ数:2 logフォルダ内にサンプルファイルが2つ scenarioフォルダ内にサンプルファイルが3つ 機能仕様書が同梱されています 6 実行環境に依存する部分を修正する sim_sup.erl -define(NODE1, -define(NODE2, 'node1@localhost'). 'node2@localhost'). -define(NODE1, -define(NODE2, '[email protected]'). '[email protected]'). 7 シミュレータ教材(ソース一式)一式を任意のディ レクトリにコピー インストール先ディレクトリはどこでもよいが、コマンド プロンプトから起動するので、「C:\Users\xxx」など の場所にインストールするとよい シミュレータのコンパイル コマンドプロンプトを立ち上げ、教材インストール先に cdコマンドで移動する。 ソースプログラムのコンパイル makeと打つ コンパイル後は、xxxxx.beamファイルが出来る 8 分散データベース(Mnesia)の初期化 ノードを2つ立ち上げる(コマンドプロンプトから行う) erl –name [email protected] –cookie abcdef erl –name [email protected] –cookie abcdef どちらかのノードで、DB初期化コマンドを打つ sim_sup:init_sim(). 打ち込むと他ノードも同じメッセージが表示される データの確認 同じディレクトリ上に下記のディレクトリが作成されていること を確認する [email protected] [email protected] 9 ノードを2つ立ち上げる(コマンドプロンプトから行う) erl –name [email protected] –cookie abcdef erl –name [email protected] –cookie abcdef どちらかのノードで、起動コマンドを打つ application:start(brakesim). Mnesiaの開始が遅れて、失敗する場合もある その場合にはもう一度起動コマンドを打つ コマンドでの終了の仕方 application:stop(brakesim). 10 コマンドプロンプトを2つ立ち上げる シミュレータのディレクトリに移動 Erlangシェルの立ち上げ(2ノード) アプリケーションの実行 dcs.erl コンパイルまたはmake application:start(brakesim). テキストエディタ等でプログラムの修正 erl –name [email protected] –cookie yymmdd erl –name [email protected] –cookie yymmdd c (dcs). make 「make」はコマンドプロンプト上。「c(dcs).」は、Erlangノード上。 再実行 以降繰り返し 11 event_loop() -> receive {state_inf,brake, Parameter} -> Des = getParam(torque, Parameter), if Des >= 3 -> NDes = 20, io:format("NewTorque: ~p~n",[NDes]), gen_server:cast({global,wheelFright},{update_ind,dcs,[opetype,brake,userope,speeddown,torque,NDes]}), gen_server:cast({global,wheelFleft},{update_ind,dcs,[opetype,brake,userope,speeddown,torque,NDes]}), gen_server:cast({global,wheelRright},{update_ind,dcs,[opetype,brake,userope,speeddown,torque,NDes]}), gen_server:cast({global,wheelRleft},{update_ind,dcs,[opetype,brake,userope,speeddown,torque,NDes]}), true; true-> false end, io:format("OrgTorque: ~p~n",[Des]), event_loop(); end. ブレーキの踏みこみが一定以上の場合はフルブレーキにする例 12
© Copyright 2024 ExpyDoc