Changes between Initial Version and Version 1 of UserManual


Ignore:
Timestamp:
Dec 20, 2014, 4:31:41 PM (9 years ago)
Author:
ertl-yutaka
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UserManual

    v1 v1  
     1= ユーザマニュアル =
     2== 1. Application Programming Interface ==
     3== 1.1 利用できるAPI ==
     4本プラットフォームは、下記の3つのAPIで開発することができます。
     5
     6 * TOPPERS/HRP2カーネルAPI
     7   * リアルタイムOSの機能を提供します
     8   * 詳細は「[http://www.toppers.jp/documents.html#ngki_spec TOPPERS新世代カーネル統合仕様書 Release 1.6.0]」を参照してください
     9 * 標準Cライブラリ(Newlib)
     10   * C言語で開発する時、文字列操作や入出力等の必要かつ基本的な機能を提供します
     11   * 詳細は「[https://sourceware.org/newlib/docs.html Newlib Documentations]」を参照してください
     12 * EV3用C言語API
     13   * モータ、センサ等EV3独自の機能をサポートするAPIです
     14   * 詳細は「[http://www.toppers.jp/ev3pf/EV3RT_C_API_Reference/index.html EV3RT C言語APIリファレンス]」を参照してください
     15
     16== 1.2 Bluetooth 通信機能 ==
     17本プラットフォームはBluetoothのSerial Port Profile(SPP)をサポートします。Bluetooth接続を仮想のシリアルポートとして通信することができます。
     18
     19TOPPERS/HRP2カーネルのシリアルインターフェスドライバを利用する場合、SIO_PORT_BTというID番号で下記の例のようにBluetooth通信を行うことができます。
     20
     21{{{
     22// Bluetooth仮想シリアルポートからbufが指すバッファへ最大lenバイトを読み込む
     23serial_rea_dat(SIO_PORT_BT, buf, len);
     24
     25// bufが指すバッファからBluetooth仮想シリアルポートへ最大lenバイトを書き込む
     26serial_wri_dat(SIO_PORT_BT, buf, len);
     27}}}
     28また、SIO_BT_FILENOというファイルディスクリプタを使って標準Cライブラリのファイル操作関数でも下記の例のようにBluetooth通信を実現できます。
     29
     30{{{
     31// Bluetooth仮想シリアルポートのファイルをオープンする
     32FILE *bt = ev3_serial_open_file(EV3_SERIAL_BT);
     33
     34// 書式化した文字列をBluetooth仮想シリアルポートへ書き込む
     35fprintf(bt, "Bluetooth SPP ID: %d\n", EV3_SERIAL_BT);
     36
     37// Bluetooth仮想シリアルポートから1文字を読み取る
     38int c = fgetc(bt);
     39}}}
     40これらの受送信機能を使って、Bluetoothでの情報出力やリモートコントロール等が実現できます。
     41
     42== 1.3. SDカード内のファイル操作 ==
     43本プラットフォームはSDカード内のファイル操作をサポートします。ファイル操作は標準Cライブラリのファイル操作関数とEV3用C言語APIのファイルシステムに関する関数で実現できます。これらの関数を操作する時、ファイル(又はディレクトリ)のパスが必要する場合があります。その場合、ルートフォルダ「/」はSDカードのルートフォルダを意味します。例えば、「/test.wav」はSDカードのルートフォルダ内にある「test.wav」を指します。
     44
     45= 2.アプリケーションのビルド管理 =
     46== 2.1. アプリケーションのフォルダ構成 ==
     47アプリケーションのフォルダの典型的な構成は以下のようです。
     48
     49{{{
     50.
     51├── app.c                 アプリケーションのデフォルトのソースファイル
     52├── app.cfg               アプリケーションのコンフィグレーションファイル
     53├── app.h                 アプリケーションのデフォルトのヘッダファイル
     54├── Makefile.inc          全ての実行形式で共有するメイクファイル
     55├── Makefile.appmod       動的ローディング形式用のメイクファイル
     56├── Makefile.app          スタンドアローン形式用のメイクファイル
     57├── …          他のフォルダ(無い場合もある)
     58│   └── …
     59└── …           他のファイル(無い場合もある) 
     60}}}
     61単一ソースファイルしかない小規模のアプリケーションに対して、「app.c/.h」の内容を修正するだけで十分です。但し、比較的に大規模のアプリケーションの場合、複数のソースファイルで開発することが多いです。その時、ソースファイルやヘッダファイルを追加することだけではなく、「Makefile.inc」と「app.cfg」を修正する必要もあります。
     62
     63== 2.2. ソースファイルの追加 ==
     64アプリケーションのソースファイルは以下の手順で追加することができます。
     65
     66①   追加したいソースファイル(例:newsrc.c)をアプリケーションのフォルダに入れます
     67
     68②   「Makefile.inc」の「APPL_COBJS」にソースファイルのオブジェクトファイル名を追加します
     69
     70{{{
     71例:
     72Before:
     73APPL_COBJS += app1.o
     74
     75After:
     76APPL_COBJS += app1.o newsrc.o
     77}}}
     78③   「app.cfg」に「ATT_MOD」でソースファイルのオブジェクトファイルのメモリオブジェクトを登録します
     79
     80{{{
     81例:
     82Before:
     83ATT_MOD("app.o");
     84
     85After:
     86ATT_MOD("app.o");
     87ATT_MOD("newsrc.o");
     88}}}
     89④   これで、ソースファイルの追加が完了しました
     90
     91= 3. ワークスペース機能 =
     92== 3.1. ワークスペースとそのフォルダ構成 ==
     93ワークスペースはプロジェクトの入れ物です。ワークスペース機能を利用して、複数のアプリケーションのプロジェクトを管理することができます。
     94
     95ワークスペースのフォルダはプラットフォームのルートフォルダ(hrp2)の下にあります。本プラットフォームで提供するサンプルアプリケーションは全てデフォルトのワークスペース(hrp2/workspace)に入っています。
     96
     97ワークスペース機能を実現するためのファイルと複数のアプリケーションのフォルダから構成されます。その例として、デフォルトのワークスペースのフォルダ構成は以下のようです。
     98
     99{{{
     100.
     101├── common                共有ファイルのフォルダ
     102│   └── …
     103├── gyroboy               アプリケーションgyroboy
     104│   └── …
     105├── helloev3              アプリケーションhelloev3
     106│   └── …
     107├── linetrace             アプリケーションlinetrace
     108│   └── …
     109└── Makefile              ワークスペース用Makefile
     110}}}
     111== 3.2. アプリケーションのビルド ==
     112ワークスペース機能を利用して、アプリケーションをビルドすることが簡単にできます。
     113
     114ワークスペースのフォルダに移動して、以下のコマンドでアプリケーションのスタンドアローン形式のブートイメージ(uImage)をビルドできます。ビルドが正常終了したら、ワークスペースのフォルダの下に「uImage」というファイルが生成されます。
     115
     116{{{
     117$ make app=アプリケーションのフォルダ名
     118}}}
     119ワークスペースのフォルダに移動して、以下のコマンドでアプリケーションの動作ローディング用のバイナリファイル(Loadable Moduleと呼ぶ)をビルドできます。ビルドが正常終了したら、ワークスペースのフォルダの下に「app」というファイルが生成されます。
     120
     121{{{
     122$ make mod=アプリケーションのフォルダ名
     123}}}
     124== 3.3. アプリケーションの新規作成 ==
     125既にワークスペースにあるアプリケーションをテンプレートとして、以下の手順で新しいアプリケーションを作成できます。
     126
     127①   ワークスペースのフォルダに移動します
     128
     129②   「cp -r <テンプレートとしたアプリケーションのフォルダ名> <新しいアプリケーションのフォルダ名>」で新しいアプリケーションを作成できます(gyroboyをテンプレートとした例)
     130
     131{{{
     132$ cp –r gyroboy newapp1
     133}}}
     134③   以上で「newapp1」というアプリケーションを新規作成しました
     135
     136== 3.4. ワークスペースの新規作成 ==
     137既に存在するワークスペースをテンプレートとして、以下の手順で新しいワークスペースを作成できます。
     138
     139①   プラットフォームのルートフォルダ(hrp2)に移動します
     140
     141②   「cp -r <テンプレートとしたワークスペースのフォルダ名> <新しいワークスペースのフォルダ名>」で新しいワークスペースを作成できます(デフォルトのワークスペースをテンプレートとした例)
     142
     143{{{
     144$ cp –r workspace newworkspace1
     145}}}
     146③   以上で「newworkspace1」というワークスペースを新規作成しました
     147
     148注意:ワークスペースのフォルダは必ずプラットフォームのルートフォルダ(hrp2)に入れること
     149
     150= 4. プラットフォームのカスタマイズ =
     151= ![TODO:] =