Team for GR-PEACH Producer Meeting

ひろちゃんの実験

06 Jan 2015

ひろちゃんの実験  その1  UsbSerial

 GR-PEACHで、UsbSerialを試しました。

 注目点は、 HighSpeed信号でUsbSerialが実現できた事です。 HighSpeed動作は、測定機で確認出来ました。  内容は、次の写真で確認下さい。

 UsbSerialは、GR-PEACHに実装済のコネクタで確認出来ました。  次は、UsbHostと考えています。

 コアー社のHPを見ると「RZ/A1H接続MicroUSBコネクタ(HOST/FUNCTION切り替え可)」と有ります。プログラムをUsbHostにしたら自動的に切り替わるのかな?  ご教示頂けませんか。

/media/uploads/kagawahi/--_photo1.jpg /media/uploads/kagawahi/--2.jpg

/media/uploads/kagawahi/--3.jpg

07 Jan 2015

ソフト的詳細なお話はAPIの中の人にお任せ致しますがRZはHost/Functionの切り替えは内部レジスタの設定で切り替わるはずですのでHostUSBのAPIを使用すればHostになるはずです。

但しターゲットに電源を供給する場合は未実装になっているJP3にピンヘッダ(2pin)を実装してショートピンでショートしていただかないとターゲットに電源を供給できませんのでご注意下さい。

07 Jan 2015

ひろちゃんの実験  その2  UsbHostHidKb

 GR-PEACHで、UsbHostHidKbを試しました。

Takahito Niinoさんのお陰で動作確認が出来ました。

 GR-PEACHに「JP3」を追加して、UsbHostケーブルでキーボードに接続しました。  ソフトは、1/6完成したGR-PEACHのライブラリと、USBHo stKeyboardに有るAPIをそのまま使いました。

 結果は、次の様に動作をしています。キー押下でギコチナイ動きの様ですが、まずは開通祝いです。

/media/uploads/kagawahi/usbhost--.jpg /media/uploads/kagawahi/usbhost--2.jpg /media/uploads/kagawahi/usbhost--4.jpg

07 Jan 2015

ひろちゃんの実験  基本的な事をご教示願います

★元々のmbedのライブラリと、GR-PEACHのライブラリの関係

 GR-PEACHでプログラム開発する場合、ライブラリを「mbed」から「mbed-src」に変更します。  「mbed-src」に変更する理由が理解できないので、ご教示頂きたく。

 私が考えた事を下記しますので、評価頂きたく。

 ①GR-PEACHで使用のRZ/A1H特有のハードウエア関係だけを変更したライブラリを使うため。

 ②RZ/A1H特有のハードウエア関係以外は、元々のmbedライブラリと同じ。

 ③だから、APIは、元々のmbedのAPIが使える。

★実験3のための調査

 実験3で、GR-PEACHをUSBHo stにしてHighSpeedで100Mバイトの転送をしたいのですが、容易 に実現する方法は有りますでしょうか?

 今のところ、USBメモリを使った「USBHostMSD」かなと思っています。  他に良い方法が有ればご教示頂きたく。

 「USBHostMSD」や他の方法の詳しい資料やサイトが有れば紹介頂きたく。  出来れば日本語のものを。

07 Jan 2015

USBHostをお試しいただきありがとうございます。 下記に回答します。

★元々のmbedのライブラリと、GR-PEACHのライブラリの関係
各ベンダーが変更した内容は一度「mbed-src」に反映され、ARMさんによる確認作業の後に「mbed」ライブラリに反映されます。 最終的には「mbed」と「mbed-src」は同じ内容となりますが、変更内容を早くご提供できるように「mbed-src」をご紹介させて頂いております。 また、「mbed」はソースコードが参照できないのに対して、「mbed-src」はソースコードが参照可能といった違いがあります。

★実験3のための調査
USBのHost、Function(Device)間で通信をするケースですと、USBHostSerialの利用がシンプルかと思います。ただし、現在USBHostSerialは正常に動作しておらず、原因を調査中です。#すみません
「USBHostMSD」についてはこちらでもHandbook以上の情報はありませんが、USBHostMSDを使用してUSBメモリからファイル情報を読み出すサンプルを作ってみました。よろしければご利用ください。

USBメモリ直下のtest2.txtファイルからデータを1Mバイト読み出すサンプル

#include "mbed.h"
#include "USBHostMSD.h"

DigitalOut led(LED1);

#define READ_SIZE    (1024 * 1000)  // 1MB

static uint8_t read_buff[4096 + 1] = {0};

void msd_task(void const *) {

    USBHostMSD msd("usb");
    int total_size;
    int read_size;

    while(1) {
        
        // try to connect a MSD device
        while(!msd.connect()) {
            Thread::wait(500);
        }

        FILE * rfp = fopen("/usb/test2.txt", "r");
        total_size = 0;
        printf("read start\n");
        while (total_size < READ_SIZE) {
            read_size = fread(read_buff, sizeof(uint8_t), sizeof(read_buff) - 1, rfp);
            total_size += read_size;
//            printf("%d\n", read_size);
//            printf("%s\n", read_buff);
        }
        printf("read end\n");

        // wait disconnect
        while(msd.connect()) {
            Thread::wait(500);
        }
    }
}

int main() {
    Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
    while(1) {
        led=!led;
        Thread::wait(10000);
    }
}

("test2.txt"は予めUSBメモリ直下に用意しておく必要があります。READ_SIZEを変更すると異なるサイズの確認ができます。)

07 Jan 2015

ひろちゃんの実験  基本的な事の件

 Daiki Kato様有難うございます。

 早速、試してみました。

 データ作成がまだなので、16KBの転送をしました。Logを見ると、1.4秒程掛っています。  同じ事を、FullSpeedでは、体感で10秒以上掛っています。HighSpeedは、速いですね。

Logの先頭部を下記します。データ転送開始まで、手続きが有るのですね。

★USBHostSerial利用の話

 「USBHostSerialの利用がシンプル」と有りましたが、理解できてません。  例えば、Function(Device)側は、もう一台UsbSerialに設定したGR-PEACHでよいとか、もう少しご教示頂けないでしょうか。

宜しくお願いします。

/media/uploads/kagawahi/116_usbhostmsd_16kb_1.jpg

08 Jan 2015

USBHostSerial、USBHostMSDはどちらもバルク転送ですが、USBHostSerialの方が余分な通信が少ない分シンプルで、転送自体のサイズや時間が分かりやすいと思います。

USBHostMSDの場合、ストレージにアクセスする為の準備として、SCSIの初期化やLUNの確認といったデータ転送以外の転送が多く含まれます。 また、FATファイルシステムを使用する為、FATの解析やクラスターチェーンを辿る処理、USBメモリ断片化による速度低下などの影響があります。

ちなみにどのようなFunction(Device)との通信を予定しているでしょうか?用途によっても適する転送方法も変わるかと思います。

08 Jan 2015

ひろちゃんの実験  基本的な事の件

 Daiki Kato様有難うございます。

USBHostSerialについて、全く概念が判ってない状態です。 例えば、UsbSerialの概念はと言われたら、「UsbSerial」と云う言葉を分解したら、ホストから「Usb」で送られてきた信号を「Serial」に変換する機能だな、と理解するだけです。

 だから、「USBHostSerial」と云われたら、GR-PEACHがUSBホストになって「Serial的なパケットを発行する」機能だなと理解するのですが、Function(Device)は何が必要か理解できていません。

 例えば、Function(Device)側に、UsbSerialに設定したGR-PEACHを用意するのがよいのか?  例えば、FTDI社のFT232を用意するのがよいのか? すら判っていません。

 私が今考えているのは、GR-PEACHをUSBホストにした測定機に出来ないかです。  HighSpeedのUSBホストから、同じデータを高速に必要な時に安定して発生したいのです。  そのため、Function(Device)側に、UsbSerialに設定したGR-PEACHを用意しても良いと思っています。なんとなく、、「USBHostSerial」の機能は純粋と云うか素直と云うか解り易いようですね。

 今は、「どのようなFunction(Device)との通信を予定」が考えられない状態です。すいませんが、概念が理解出来るように具体的にご教示願いませんか。

 私の希望は、「HighSpeedのUSBホストから、同じデータを高速に必要な時に安定して発生したい」のです。出来たら、FullSpeed、LowSpeedの切り替えが出来たらよいのですが。

 宜しくお願いします。

09 Jan 2015

mbedで用意されているドライバの中で、HostからFunction(Device)に対してデータを要求するにはUSBHostMSDが適しています。
(USBHostSerialはFunction(Device)側が送信したいデータがある場合のみ通信が発生します。また、mbedで用意されているUSBHostSerialは1byte単位で通信が発生する為、今回の用途ではあまり適していないと思われます。)
USBHostMSDはMSC(マスストレージクラス)を使用した通信となります。

通信速度については、Function(Device)がその速度(Hi-Speed、Full Speed、Low Speed)に対応している必要があります。
通常、Function(Device)は「Full Speed(or Hi-Speed)」と「Low Speed」のどちらか一方のみをサポートします。
MSCのデバイスでは「Low Speed」は一般的では無い為、「Low Speed」通信を試す(対応したデバイスを見つける)のは難しいと思います。
Hi-Speedに対応しているFunction(Device)は、Full Speedにも対応しています。Full Speedで通信したい場合は下記の変更を行ってください。

USBHost\USBHost\USBHALHost_RZ_A1.cpp"

void USBHALHost::init() {
    ohciwrapp_init(&_usbisr, 1);
    ↓
    ohciwrapp_init(&_usbisr, 0);
}



USBの概念について、参考になりそうなURLを記載します。

データ転送方式
http://japan.renesas.com/applications/key_technology/connectivity/usb/about_usb/usb1_1/usb1_2/

デバイスクラス
http://www.wdic.org/w/WDIC/%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%82%AF%E3%83%A9%E3%82%B9

USBにはコントロール転送、バルク転送、インタラプト転送、アイソクロナス転送の4つの転送方式があります。 (mbedのUSBHostはアイソクロナス転送に対応していません)
USB間の通信は、この転送方式を組み合わせて定義したクラスによって通信します。
USBHostMouse、USBHostKeyboardはHIDクラス、USBHostMSDはMSC、USBHostSerialはCDC、USBHostHubはHUBクラスによる通信を行います。

09 Jan 2015

ひろちゃんの実験  基本的な事の件

 Daiki Kato様回答有難うございます。

 私は、USBやUSBのクラスの概要は理解してるつもりです

 しかし、「USBHostSerial」について、Webで調べたのですが情報が検索出来ませんでした。  「USBHostSerial」を使うために、Function(Device)側は何を用意すればよいかご教示願えませんでしょうか。

 それと、「GR-PEACH用USBHostライブラリ公開」は、有難く拝見しました。  これを使ったら報告させて頂きます。

09 Jan 2015

ひろちゃんの実験  その3  

「暫定版GR-PEACH用USBHostライブラリの公開」の USB_HOST_TEST 1、2、3

 GR-PEACHで、「暫定版GR-PEACH用USBHostライブラリの公開」の USB_HOST_TEST 1、2、3  を試しました。

★USB_HOST_TEST 1    1:USBHostMouse_HelloWorld

 立ち上げ手順が必要

 ◎マウスを接続したままPeachをリセットしたら立ち上がら無い、  Ledは、点滅しない

 ◎マウスを取り外した状態で、Peachをリセットすると立ち上がる、その後マウスを接続する

 簡単な動作のログを下記します

/media/uploads/kagawahi/usbhostmouse.jpg

★USB_HOST_TEST 2    2:USBHostKeyboard_HelloWorld

 キーボードを接続したままでも付けた状態でもPeachをリセットしたら立ち上る

 簡単な動作のログを下記します

/media/uploads/kagawahi/usbhostkeyboard_2.jpg

★USB_HOST_TEST 3    3:USBHostMSD_HelloWorld

 無事動作しました。出来たファイルの先頭部を下記します。

/media/uploads/kagawahi/usbhostmsd.jpg

10 Jan 2015

USBHostSerialのFunction(Device)側にはUSBSerialに設定したmbedボードが必要です。
「USB_HOST_TEST 4」にUSBHostSerial動作のサンプルを追加しました。
クラスドライバ側に問題があり、Handbookのサンプルのままでは正常に動作しません。
USBHostSerialを動作させる場合はこちらのサンプルをご利用ください。

10 Jan 2015

ひろちゃんの実験  その4  

「暫定版GR-PEACH用USBHostライブラリの公開」の USB_HOST_TEST 4

 GR-PEACHで、「暫定版GR-PEACH用USBHostライブラリの公開」の USB_HOST_TEST 4  を試しました。

★USB_HOST_TEST 4    4:USBHostSerial_HelloWorld

 次の構成で、USBHostSerialを試しました。

  ・USBHostSerialのHost側は、GR-PEACH

 ・USBHostSerialのFunction(Device)側は、LPC1768

 HostとDevicd間のデータの流れを観測しました。HIDの手順でデータの授受をしています。エニュメレーションもシンプルです。

 今回は、Devicd側がFullSpeedなので遅いですが、GR-PEACHをDevicd側にすればHighSpeed転送になるのでしょう。期待しています。

/media/uploads/kagawahi/dscn5784p20.jpg

/media/uploads/kagawahi/117_usbhosttest1_4.jpg

/media/uploads/kagawahi/117_usbhosttest4_scope.jpg

10 Jan 2015

ひろちゃんの実験  Usb実験の整理

 Usb関連の実験を整理して、次の実験に備えたいとのでご協力頂きたく、宜しくお願します。

★USB関連ライブラリの整理

 元々のmbedのライブラリと、GR-PEACHのライブラリの関係を整理しました。  (文章の整理方法が判らず、間の空いた、冗長な表になりました)

実験__ARM mbed______GR-PEACH

未___USBKeyboard_____?

未___USBMouseKeyboard__?

未___USBHID_______?

未___USBMIDI_______?

完了__USBSerial______USBSerial

未___USBAudio______?

未___USBMSD_______?

未___?_________USBDevice

完了__USBHostKeyboard___USB_HOST_TEST 2

完了__?_________USB_HOST_TEST 1

完了__USBHostMSD_____USB_HOST_TEST 3

完了__USBHostSerial____USB_HOST_TEST 4

未___USBHostHub_____USBHostHub

未___?_________USBHost3GModule

未___?_________USBHostHID

未___?_________USBHostMIDI

★今後の実験のための調査    

 ★今後の実験のための調査    

 実験項目の「未」項目と「USBHostSerialやUSBHostMIDIやUSBHostKeyboard等をHubを使って複合的なUSBHost」「USBHostAudio」について実験を進めて行きたいと思います。何処まで出来るか不明ですが。

 一度に実験が出来ないので、取敢えず優先順位を付けると。

 ①USBHostHID

 ②USBHostHubと各種USBHostの組み合わせ

 ③USBAudioやUSBHostAudio

 これに当たり、其々の機能やテストプログラムの調査のご協力頂きたく宜しくお願いします。

13 Jan 2015

USBHostについて回答します。USBDeviceについては別途回答します。

GR-PEACHのライブラリとしてはGR-PEACHのボード依存部分を用意しています。
クラスドライバ等についてはmbedで用意されているものがそのまま使用されます。
その為、基本的にはHandbookに記載されているクラスドライバ、および、サンプルがそのままご利用できます。
(但し、USBHostSerialはHandbookのサンプルのままでは動作しませんでした。下記「USB_HOST_TEST 4」参照。)
USBHostMIDI、USBHost3GModuleについてはHandbookに公開されていない為、ARMさんに確認します。

GR-PEACH_USBHostのサンプルについて

  • USB_HOST_TEST 1
    USBHostMouseのサンプルをそのまま使用しています。
  • USB_HOST_TEST 2
    USBHostKeyboardのサンプルをそのまま使用しています。
  • USB_HOST_TEST 3
    USBHostMSDのサンプルに対して以下の変更を行っています。
    1.ファイルに書き込む文字列を"Hello fun SD Card World: %d!\r\n"から"Hello fun USB World: %d!\r\n"に変更しています。
  • USB_HOST_TEST 4
    USBHostSerialのサンプルに対して以下の変更を行っています。
    1.serial.connected()の参照箇所を削除。(serial.connected()の処理に問題があり、戻り値がtrueにならない為。)
    2.serial.baud(9600)を追加。(Function(Device)側に接続するUSBSerialの仕様でボーレートなどの通信設定がされないと通信が開始されない為。)


①USBHostHID
USBHostHIDの実験とはUSBHostMouse、USBHostKeyboardの実験を指していますでしょうか?
上記を指しているのであれば、USBHostMouseは「USB_HOST_TEST 1」、USBHostKeyboardは「USB_HOST_TEST 2」で確認できます。

②USBHostHubと各種USBHostの組み合わせ
各クラスドライバのサンプルはHUB経由で接続すればUSBHostHubが使用されるようになっています。
HUB先動作を確認する場合、サンプルは変更せずにHUBを接続してお試しください。

複数USBHostの組合せについては、以下のように各サンプルプログラムのタスクを同時に作成することで試せました。

int main() {
    Thread mouseTask(mouse_task, NULL, osPriorityNormal, 256 * 4);
    Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4);
    Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
//    Thread serialTask(serial_task, NULL, osPriorityNormal, 256 * 4);
    while(1) {
        led=!led;
        Thread::wait(500);
    }
}


こちらでの動作結果を以下に記載します。(HUB無しの動作結果は省略します)

  • HUB先での動作(ライブラリ名:結果)
    USBHostHub+USBHostKeyboard:OK
    USBHostHub+USBHostMouse:OK
    USBHostHub+USBHostMSD:OK
    USBHostHub+USBHostSerial:OK

  • 複数USBHostの組合せ(ライブラリ名:結果)
    USBHostHub+USBHostKeyboard+USBHostMouse+USBHostMSD:OK
    USBHostHub+USBHostKeyboard+USBHostMouse+USBHostSerial:OK
    USBHostHub+USBHostMSD+USBHostSerial:NG
    USBHostHub+USBHostMSD+USBHostSerial+USBHostKeyboard+USBHostMouse:NG

    USBHostMSDとUSBHostSerialを同時に動作させようとすると、USBHostMSDが正常に動作しません。
    USBHostSerialがUSBメモリをUSBSerialと誤認するのが原因のようです。ARMさんに確認します。

③USBAudioやUSBHostAudio
USBHostについて回答します。USBDeviceについては別途回答します。
mbedではUSBHostAudioのクラスドライバは用意されていません。

13 Jan 2015

素人でよくわからないのですが、

USB_HOST_TEST 4

の部分は

1.serial.connected()の参照箇所を削除。(serial.connected()の処理に問題があり、戻り値がtrueにならない為。)

serial.connected()の処理に問題は修正するつもりなのか?

2.serial.baud(9600)を追加。(Function(Device)側に接続するUSBSerialの仕様でボーレートなどの通信設定がされないと通信が開始されない為。)

ライブラリ内部で、初期設定すればいいことでは?

なんでこんなことを言うかというと

サンプルソースを無修正で動くようにするのが、mbedのライブラリの役割では?

この認識が間違っているのであれば、指摘事項は無意味になりますけど

13 Jan 2015

ひろちゃんです

 詳細で貴重な情報有難うございます。役立させて頂きます。

 ◎「USBHostHID」は、mbedのHPでは機能が判らず名前から判断しました。    ぼんやりと思ったのは、「Hid Usage Tables」に沿って定義したら、自分用のキーパッドとかジョイステックが出来るのかです。Hidの定義は大きいのでmbedでは制限が有ると思いますが。

 ◎「USBHostAudio」は、アイソクロナス転送なので試してみたかったのです。    USBで定義されているコントロール転送、バルク転送、インタラプト転送は使われているが、アイソクロナス転送だけがUSBHostAudioで使われているのではと思いました。

 丁寧な回答有難うございます

14 Jan 2015

ひろちゃんです

USBHostHubのコンパイルエラーでご教示頂きたく。

 次の写真は、mbedに有るUSBHostHub_HelloWorld をPeach用に mbedをmbed-src に変更したものです。

 ◎Lpc1768でコンパイルすると_成功  ◎Peachでコンパイルすると_エラー

手順で間違いが有るのでしょうか?

理解できない現象なので、ご教示願えないでしょうか。

/media/uploads/kagawahi/error_peach_usbhosthub_helloworld.jpg

14 Jan 2015

Kazuyuki Eguchi 様

USBHostSerialの問題はARMさんに報告しました。修正されれば無修正で動くライブラリが公開されると思います。


廣光 加川 様

・USBHostHID
クラスドライバを自作すればジョイステックなどのドライバも作成可能と思われます。

・USBHostAudio
mbedのUSBHostとしてアイソクロナス転送のインターフェースが用意されていません。その為、GR-PEACHのUSBHostとしてもアイソクロナス転送は実装していません。

・コンパイルエラーの件
GR-PEACH用のUSBHostは正式リリース前なので、Handbookからダウンロードしたライブラリには変更が含まれていません。
お手数ですが、Handbookからインポートした場合は、USBHostをGR-PEACH_USBHostで公開しているUSBHostと差し替えて頂く必要があります。
GR-PEACH_USBHostの「USB_HOST_TEST 5」にUSBHostHubのサンプルを追加しましたので、よろしければそちらをご利用ください。

14 Jan 2015

USBDeviceについて回答します。

USBHostと同様に、GR-PEACH用のライブラリとして、ボード依存部分を用意しています。
クラスドライバ等についてはmbedで用意されているものがそのまま使用されます。
その為、基本的にはHandbookに記載されているクラスドライバ、および、サンプルがそのままご利用できます。
但し、USBAudioに関しては、クラスドライバがUSB Audio 1.0対応のため動作しません。
(USB Audio 1.0はFull-Speedで、USB Audio 2.0はHi-Speedで動作するよう、規格で決められています。)
現在Full-Speedで通信するUSBDeviceを準備中です。

動作確認結果を以下に記載します。(ライブラリ名:結果)
USBMouse:OK
USBKeyboard:OK
USBMouseKeyboard:OK
USBSerial:OK
USBHID:USBHID_HelloWorldにて通信が発生することを確認
USBMIDI:USBMIDI_HelloWorldにてPC上のMIDIプログラムがGR-PEACHをMIDIとして認識することを確認
USBMSD:コンパイルで問題があり、現在ARMさんに確認中
USBAudio:現在Full-Speedで通信するUSBDeviceを準備中

14 Jan 2015

mbed officialのHIDは、Keyboard専用とMouse専用ですね。
この2つだけは、Protocol codeが割り当てられているので、判別が簡単なのです(Interface Descriptorのみで判別可)。
それ以外のHIDデバイスについては、Report Descriptorをパースしないと判別出来ないので、汎用的に扱うよりは自分が使うデバイスを決め打ちしてコードを書くことが多いと思います。
本当は、HID Skeltonみたいなドライバが用意されていて、Report Descriptorを取得するAPIが提供されていれば楽なんですが、ここから自分で作らないといけないんです...。
で、手元にあったゲームパッド繋げて動かしてみました。ReportDescriptorの取得方法のサンプルとして使えると思います。

Import programpeach_USBHost_gamepad_sample

USBHost Gamepad driver sample for GR-PEACH

DEBUGレベルを上げると、ちょっとログが多めに出るようにしてあります。

USBHost/dbg.h(21)

#define DEBUG 3 /*INFO,ERR,WARN*/

これを3より大きな値に変更してください。

15 Jan 2015

このWebカメラのサンプルを試そうか考えて、まだ、手が動いてないのですが、そもそもサポート外の要因ありますか? これから、Webカメラも買うんで、先にわかることは、把握しておきたいです。

http://developer.mbed.org/users/va009039/code/USBHostC270_example/file/ea4badc78215/USBHostC270/decodeMJPEG

猪股

15 Jan 2015

Webカメラはアイソクロナス転送なので動きません。誰かが頑張って実装する必要があります。

15 Jan 2015

ひろちゃんの実験  その5

<写真内の誤記 2件を修正>

お陰さまで、下記確認出来ました。

USBHostHub+USBHostKeyboard+USBHostMouse+USBHostSerial

USB_HOST_TEST 5 に USBHostSerial を追加しました。

/media/uploads/kagawahi/peach_usbhost_hubkbmouseri_1_1.jpg

15 Jan 2015

Yuuichi Akagawa wrote:

Webカメラはアイソクロナス転送なので動きません。誰かが頑張って実装する必要があります。

残念。まだ、できるか不明ですが、 http://va009039.blogspot.jp/2012/05/usbmbed.htm この記事から掘り下げていくと、良いかしら?

15 Jan 2015

ひろちゃんです

 ARM mbed Handbookを見てみれば、Device, HID, MIDI,Audio,のUSBHostは残念ながら無いのですね。欲しいものですね。

 USBHostHIDが有れば、Yuuichi AkagawaさんがおっしゃるHID Skeltonみたいなドライバが期待できるのでしょうね。

 次は、USBHostXxxxを利用する方法なのですが、私の弱い処が有りますのでご教示頂けたらを助かります。

★USBHostXxxxのスレッドとmain との通信

 USBHostXxxxはスレッドで動作しています。  以前、VC++のスレッドを使ったとき、main との通信で手こずっりました。

 mbedでの「スレッドとmain との通信」について手引きが有れば助かるのですが。  書籍とか、HPとか、サンプルプログラム等が有ればご教示願えないでしょうか。

 宜しくお願いします。

16 Jan 2015

Hirofumi Inomata 様
Yuuichi Akagawa 様

アイソクロナス転送の対応について、社内で検討します。正式回答はもう少々お待ちください。


廣光 加川 様

スレッド間通信のサンプルとしてRTOSQueueMailはいかがでしょうか。 CMSIS-RTOS RTXの仕様についてはこちらで紹介されています。
(mbedで使用するCMSIS-RTOS RTXのバージョンはV4.61です。)

17 Jan 2015

ひろちゃんの実験  その6

 SPIでグラフィックLCDを制御

 次のSPIを使いグラフィックLCDを制御しました。問題も無く使えました。

   AQM1248 128x48Dot GraficLcd program

  SPI spi_lcd(P11_14, P11_15, P11_12); mosi, miso, sck

  DigitalOut spi_lcd_nCs(P11_13);

  DigitalOut spi_lcd_Rs(P8_11); 0:Cmd, 1:DispData

 表示文字が小さすぎです。

/media/uploads/kagawahi/peach_spigraflcd_aqm1248_p20.jpg

/media/uploads/kagawahi/peach_spigraflcd_aqm1248_cut.jpg

18 Jan 2015

ひろちゃんです

USBHostHubとCMSIS-RTOS RTXとMMUの関係をご教示頂きたく。

 紹介頂いたCMSIS-RTOS RTXを調べていたら次の資料が入手出来ました。  ・ルネサス社「RZ/A1グループ CMSIS-RTOS RTX 紹介」    ・Interface誌2014-7「Cortex-A9対応!ARM純正軽量リアルタイムOSRTX」  

 資料に有るサンプルプログラム「2つのLEDを異なる周期で点滅」を見ているとUSBHostHubの構成に似ています。  USBHostHubの内部構成は、RTOSか類似を使っているのでは? と思いました。

 ★USBHostHubとCMSIS-RTOS RTXの関係は?

 ★MMUはスレッド毎に管理されているのか?   以前、WindowsのVC++のスレッドを使ったとき、main との通信で手こずりました。   mbedのRTOS を調べていたら、スレッドもmainも同じメモリ空間を使っているのではと想われます。同じメモリ空間ならスレッドもmainも自由にやり取り出来ます。問題は、メモリやIOの競合防止です。

 お手数ですが宜しくお願いします。

20 Jan 2015

ひろちゃんの実験  その7

 キーボードで入力した文字をTextLcdに表示しました。問題も無く使えました。

 使用したライブラリは、USBHostKeyboardとTextLCDです。USBHostKeyboardで取得した文字データは、グローバル変数を使い main 関数に渡し、TextLcdに表示しました。

 気になっていたスレッド間のデータの授受でのトラブルも無く動作しました。  mbedでは、Windowsのスレッド管理の複雑さはない様です。

/media/uploads/kagawahi/peach_usbhostkb_textlcdp20.jpg

/media/uploads/kagawahi/peach_usbhostkb_textlcdcut.jpg