Changes between Version 3 and Version 4 of SampleProgram


Ignore:
Timestamp:
Dec 20, 2014, 6:09:49 PM (9 years ago)
Author:
ertl-yutaka
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SampleProgram

    v3 v4  
    1 = サンプルアプリケーション =
    2 
     1= サンプルアプリケーションの実行 =
     2== サンプルプログラムのビルド・実行 ==
     3=== 実行形式とビルド方法 ===
     4本プラットフォームのアプリケーションは2つの形式で実行することができます。
     5
     6 * ダイナミックローダを使って動的にロードされて実行する
     7 * ダイナミックローダを使わずスタンドアローンで実行する
     8
     9==== 動的ローディング形式(ダイナミックローダ有り) ====
     10動的ローディング形式はダイナミックローダを使って、SDカードに入れた又はBluetooth等のシリアル通信で受信したアプリケーションのバイナリファイル(ELF形式)をロードして動的に実行する形式です。
     11
     12この実行形式には、以下の特徴があります。
     13
     14 * EV3をリセットしなくても実行中のアプリケーションを動的に書き換えます
     15   * アプリケーションが変更されてもBluetoothを再接続する必要がありません
     16   * PCでアプリケーションのバイナリファイルをSDカードに書き込む手間を省略できます
     17 * 複数のアプリケーションを同じSDカードに入れることができます
     18 * 高速にコンパイルすることができます
     19 * ローダとアプリケーションのインターフェスバージョン(PIL Version)を一致する必要があります
     20   * ローダのPIL Versionが更新される場合、アプリケーションの再コンパイルが必要になります
     21 * アプリケーションの最大サイズの制限があります(ローダの設定に依存、デフォルトは1MB)
     22 * アプリケーションのカーネルオブジェクトの数の制限があります(ローダの設定に依存、デフォルトは以下)
     23   * タスク     最大32個
     24   * セマフォ    最大16個
     25   * イベントフラグ 最大16個
     26   * ミューテックス 最大0個![TODO:]
     27
     28動的ローディング形式を利用するために、アプリケーションのバイナリファイル(ELF形式)をビルドする必要があります。
     29
     30以下の手順でそのバイナリファイルを生成できます。
     31
     32①   プラットフォームのルートディレクトリ(hrp2)に移動します
     33
     34②   アプリケーションのあるワークスペースに移動します
     35
     36 * サンプルプログラム(gyroboy)の例:下記のコマンドでデフォルトのワークスペースに移動します
     37
     38{{{
     39$ cd workspace
     40}}}
     41③   「make mod=<アプリケーションのフォルダ名>」で動的ローディング用バイナリ(Module)をビルドします
     42
     43 * サンプルプログラム(gyroboy)の例:下記のコマンドでビルドします
     44
     45{{{
     46$ make mod=gyroboy
     47}}}
     48④   ビルドが正常に終了すると、「app」という動的ローディング用バイナリが生成されます
     49
     50ダイナミックローダを利用して、以下の手順で生成されたアプリケーションのバイナリファイルをロードすることができます。
     51
     52①   ローダをSDカードに入れていない場合、そのuImageをSDカードのルートフォルダにコピーします
     53
     54 * デフォルトのローダのuImageは「sdcard/uImage」です
     55
     56②   SDカードをEV3に差し込んで、電源を入れてローダを実行します
     57
     58 * ローダのGUIメニューが表示されたら起動は成功しました
     59
     60③   ローダのメニューを使って以下の方式でアプリケーションをロードすることができます
     61
     62 * SD card:SDカードに入れたアプリケーションをロードします。アプリケーションのバイナリファイルをSDカードの「/ev3rt/apps」というフォルダに入れる必要があります。
     63 * Bluetooth:Bluetoothでアプリケーションをロードします。「[http://dev.toppers.jp/#_Bluetooth%E3%81%AE%E6%8E%A5%E7%B6%9A%E6%96%B9%E6%B3%95 Bluetoothの接続方法]」を参考してBluetoothを接続する必要があります。
     64 * Serial port 1:シリアルケーブルでアプリケーションをロードします。
     65
     66④   BluetoothまたはSerial port 1でロードする場合、ターミナルのZMODEM転送機能でアプリケーションのバイナリファイルを送信します
     67
     68[[Image(pic1.png)]]
     69
     70⑤   アプリケーション実行中、戻るボタンを長押し(0.5秒程度)してアプリケーションを終了できます
     71
     72 * アプリケーションを終了すると、ローダのメニューに戻ります。新しいアプリケーションをロードすることができます
     73
     74==== スタンドアローン形式(ダイナミックローダ無し) ====
     75スタンドアローン形式は開発したアプリケーションと本プラットフォームを一つのEV3のブートローダ(U-Boot)用ブートイメージ(uImage)としてビルドして、SDカードの指定場所に入れて実行する形式です。この実行形式には、以下の特徴があります。
     76
     77 * アプリケーションの最大サイズやカーネルオブジェクトの数の制限はありません
     78 * ダイナミックローダに依存せず単独に動作できます
     79 * アプリケーションを更新する度に、手間がかかります
     80   * PCでアプリケーションのブートイメージ(uImage)をSDカードに書き込む操作が必要です
     81   * EV3をリセットしてから実行するのでBluetoothの再接続が必要です
     82 * 同じSDカードにアプリケーションを一つしか入れることができません
     83 * コンパイル時間は比較的遅いです
     84   * アプリケーションだけではなく、デバイスドライバ等もコンパイルする必要があるからです
     85
     86スタンドアローン形式を利用するために、アプリケーションのブートイメージ(uImage)をビルドする必要があります。以下の手順でそのブートイメージを生成できます。
     87
     88①   プラットフォームのルートディレクトリ(hrp2)に移動します
     89
     90②   アプリケーションのあるワークスペースに移動します
     91
     92 * サンプルプログラム(gyroboy)の例:下記のコマンドでデフォルトのワークスペースに移動します
     93
     94{{{
     95$ cd workspace
     96}}}
     97③   「make app=<アプリケーションのフォルダ名>」でスタンドアローン形式用ブートイメージをビルドします
     98
     99 * サンプルプログラム(gyroboy)の例:下記のコマンドでビルドします
     100
     101{{{
     102$ make app=gyroboy
     103}}}
     104④ ビルドが正常終了すると、 下記のような出力情報が表示されます。「uImage」というスタンドアローン形式用ブートイメージが生成されました
     105
     106生成されたuImageをSDカードのルートフォルダにコピーして、そのSDカードをEV3の本体に差し込んで、EV3の電源を入れてアプリケーションを実行します。Bluetoothを接続して、アプリケーションの出力情報を見ることができます。
     107
     108=== Bluetoothの接続方法 ===
     109==== Bluetoothドングルの対応状況 ====
     110Linuxで開発を行う場合、Linuxの事実上の標準プロトコルスタックBlueZがサポートするBluetoothドングルが対応しています。 Windowsで開発を行う場合、Bluetoothドングルのドライバ(プロトコルスタック)により、対応状況が異なります。具体的には、以下の表に参照してください。
     111
     112|| プロトコルスタック || 相性 || 備考 ||
     113|| Broadcom || ◎ || ABE Bluetooth Dongle(レゴ公式販売)、I-O DATA USB-BT40LE、Kinivo BTD-400 ||
     114|| Toshiba || ◎ || 販売しているドングルは少ないです(基本はLet’s Noteで搭載) ||
     115|| Windows汎用ドライバ || ○ || 接続できない時もあります ||
     116|| CSR || × || CSRのSSPドライバにバグあるらしいので接続は自動的に切断されます ||
     117|||||| 凡例 ◎:正常動作 ○:正常動作する場合が多い ×:動作できない ||
     118
     119なお、CSRのスタックを利用するドングルのほぼはWindows汎用ドライバもサポートします。デフォルトがCSRであるドングルで開発したい場合、Windows汎用ドライバを試してください。
     120
     121==== Bluetoothの接続手順(Windows + 汎用ドライバ編) ====
     122 * TODO: 汎用ドライバは安定になっているため,説明を追加
     123
     124
     125
     126==== Bluetoothの接続手順(Windows + Toshibaスタック編) ====
     127①   EV3の電源を入れて、アプリケーションを実行します
     128
     129②   「Bluetooth設定」を開いて、「新しい接続」をクリックします
     130
     131[[Image(pic2.png)]]
     132
     133③   「カスタムモード」を選択して、「次へ」をクリックします
     134
     135[[Image(pic3.png)]]
     136
     137④   「Mindstorms EV3」を選択して、「次へ」をクリックします
     138
     139[[Image(pic4.png)]]
     140
     141 * 「Mindstorms EV3」はデフォルトのデバイス名です。「ev3.h」で変更できます。
     142
     143⑤   「Serial Port Profile」を選択して、「次へ」をクリックします
     144
     145[[Image(pic5.png)]]
     146
     147⑥   「デフォルトのCOMポートを使用する」をチェックして、「次へ」をクリックします
     148
     149[[Image(pic6.png)]]
     150
     151⑦   EV3のBluetoothのシリアルポート番号を確認して、「次へ」をクリックします
     152
     153[[Image(pic7.png)]]
     154
     155⑧   下記の画面が表示されたらEV3の新規接続設定は完成しました
     156
     157[[Image(pic8.png)]]
     158
     159⑨   追加した「Mindstorms EV3」のアイコンをダブルクリックして接続を行います
     160
     161[[Image(pic9.png)]]
     162
     163 * 失敗の場合はもう一度ダブルクリックしてください
     164 * 既にこのアイコンが存在している場合、②から⑧までの新規接続の手順は省略できます
     165
     166⑩   下記の画面が表示されたらPINコード「0000」を入力します
     167
     168[[Image(pic10.png)]]
     169
     170 * 「0000」はデフォルトのPINコードです。「ev3.h」で変更できます。
     171
     172⑪   接続は完成したら、ターミナルエミュレータを開いてEV3のBluetoothのシリアルポートに接続します
     173
     174[[Image(pic11.png)]]
     175
     176 * 図はTera Termの例です
     177
     178⑫   以上でBluetoothの接続が完了しました。ターミナルエミュレータでEV3と通信できるようになりました
     179
     180== サンプルプログラムの一覧 ==
    3181パッケージには以下のサンプルアプリケーションが入っています。
    4182
    5 == 機能テスト用プログラム(helloev3) ==
     183=== 機能テスト用プログラム(helloev3) ===
    6184|| アプリケーション名 || helloev3 ||
    7185|| 機能説明 || プラットフォームの各種機能をテストできるアプリケーション ||
     
    11189|| 使い方 || ![TODO:] ||
    12190
    13 == 二輪型倒立振子ロボット制御(gyroboy) ==
     191=== 二輪型倒立振子ロボット制御(gyroboy) ===
    14192|| アプリケーション名 || gyroboy ||
    15193|| 機能説明 || ジャイロセンサで二輪型倒立振子ロボットを制御するサンプルアプリケーション ||
     
    19197|| 使い方 || ![TODO:] ||
    20198
    21 == ライントレース(linetrace) ==
     199=== ライントレース(linetrace) ===
    22200|| アプリケーション名 || linetrace ||
    23201|| 機能説明 || PID制御で簡単なライントレース機能を実現するサンプルアプリケーション ||
     
    27205|| 使い方 || ![TODO:] ||
    28206
    29 == Trike for EV3(trike) ==
     207=== Trike for EV3(trike) ===
    30208|| アプリケーション名 || trike ||
    31209|| 機能説明 || Trike for EV3で簡単なライントレース機能を実現するサンプルアプリケーション ||