はじめに
IntelのArduino認定ボード「Intel Galileo Development Board(インテル Galileo 開発ボード)」の第2世代版が日本で発売されました。私も入手したので、まずは簡単に見てみたいと思います。
用語について
このメモでは従来のIntel Galileoと新しいIntel Galileoの両方を扱うことから、以下のように呼び分けたいと思います:
- Intel Galileo Development Board → Intel Galileo Gen 1あるいは単にGen 1
- Intel Galileo Gen 2 Development Board → Intel Galileo Gen 2あるいは単にGen 2
使用環境
メインの使用環境として以下のものを使用しました:
- マザーボードはASUS P6T、CPUにはIntel Core i7-930、グラフィックボードはNVIDIA GeForce GTX 580、メモリーは24GB、HDDは1TBのパーティションを設定したものを使用しています。
- OSには日本語版のWindows 7 Ultimate Service Pack 1の64ビット版を使用しています。
サブの使用環境として以下のものを使用しました:
- 日本ヒューレット・パッカードの「HP Pavilion DM1-4009AU / AMD E-450 APU with AMD Radeon™ HD 6320 Graphics / SSDはIntel SSD 320 160GB(出荷時のもの) / メモリ8GB(出荷時から4GB増量)」を使用しています。
- OSには工場出荷時の日本語版のWindows 7 Home Premiumの64ビット版を、別途購入したWindows Anytime Upgradeを適用してUltimateにし、その後Service Pack 1を適用したものを使用しています。
Intel Galileo Gen 2の変更ポイント
- USBホスト・ポートがMicro-USB Type ABからUSB Standard-A receptacleに変更されました。
- 各種I/Oが全般的に高速化しました。
- GPIOが20本中12本がSoCネイティブ、残り8本がGPIOエキスパンダーによるものに変更されました(従来は20本中2本がSoCネイティブ、残りはGPIOエキスパンダーによるものでした)。
- PWMが12ビット制御に変更されました。
- 付属のACアダプターの電源出力が5V 3A※1から12V 1.5Aに変更になりました。なお、電源ジャックは従来のものと同じですので、Gen 1とGen 2の両方を使用する場合には誤ってGen 1にGen 2のACアダプターを接続しないように注意が必要です。
- スクリーン用シリアル・ポートがFTDI USBコンバーター互換(TTL 3.3V 6ピン)に変更となり、ハードウェア・フロー制御が可能になりました(従来はRS-232 3ピン ミニ・ステレオ・ジャックでした)。また、同ポートはスケッチでも切り替えて使用できるようになりました。
- 基板サイズが若干大きくなりました(Gen 1は100mm×70mm、Gen 2は123.8mm×72.0mm)。
- オプションでPower over Ethernetに対応するようになりました。※2
- ADCが12ビットから10ビットに変更されました。
- スケッチ用に専用EEPROMが搭載されました。
その他の内容については「IntelがIntel Galileoボード(Gen2)の概要情報を公表」で、「Intel® Galileo Gen2 Product Brief」の日本語意訳を公開していますので、参考にしていただければと思います。
写真で確認
Intel Galileo Gen 2を写真で見てみたいと思います。
ちなみに、従来の量産前のGen 1は“写真で見る「Intel Galileo Development Board」”、量産版のGen 1は“量産版「インテル Galileo 開発ボード」を購入しました”で写真を掲載しています。
箱
まず箱ですが、若干色が違いますが概ね同じデザインです(左がGen 2、右がGen 1です)。あえて目視で判別するのであれば、Gen 2の箱の方が若干青色が濃く、左上の「Intel Galileo」のロゴが、「ガリレオと思しき人物※3」にかかっていないのがGen 2、かかっているのがGen 1というのがわかりやすい気がします。
もっとも販売店でもない限り、このあたりを気にする必要のある人は少ないでしょう。※4
箱に印字された製品情報
事前の情報通り、「Product Code」が従来の量産版の「Galileo1
」から「Galileo2
」に変更となっています:
フォーマットは従来通りで、製造国も中国のまま変更なしです(ちなみに量産前のバージョンは台湾製でした)。
Intel Galileo Gen 2のパッケージに含まれるもの
- Intel Galileo Gen 2本体
- ACアダプター(12V 1.5A)
- 各国のコンセントに対応したACアダプターの口(5個)
- 各国語でIMPORTANT SAFETY & REGULATORY INFORMATIONを印刷した紙
従来付属していた標準USB⇔Micro USB変換ケーブルは付属していません。もしも所持していないか空いているケーブルが無いようであれば別途購入する必要があります。
Intel Galileo Gen 2ボード
若干大きくなるとともに、やや配置面の整理が行われ、点在していたLEDが基板上部に集められています:
搭載するIntel Quark SoC X1000
今回のIntel Galileo Gen 2に搭載されているIntel Quark SoC X1000の基板部に印字のある番号は従来のIntel Galileo Gen 1の量産版に採用されていたIntel Quark SoC X1000の番号「G59708 01 PW7」とも、エンジニアリング・サンプルでの番号「G59708 01 PH6」とも異なる「G59708 01 PH1」となっています。S-SPECについては量産版と同じ「SR1BY」となっています:
参考メモ:量産版「インテル Galileo 開発ボード」を購入しました
Intel Galileo Gen 2は対応する新しいSDKが必要
Intel Galileo Gen 2は新しいボードであるため、対応するソフトウェア・パッケージが必要となります:
ちなみに、このサイトを見る限り、Intel Galileo Gen 2の日本語表記は「インテル® Galileo Gen 2 ボード」というようです。以前のボードは「インテル® Galileo 開発ボード」でしたので、「開発」という言葉を取って、代わりにそこに「Gen 2」と入れたような感じですね。
このIntel Galileo Gen 2に対応したArduinoソフトウェア開発環境は、Gen 1でも問題なく使用できます。従来あった不具合の修正や使用できる機能の追加が行われていますので、Gen 1で使用する場合にも新しいArduinoソフトウェア開発環境に切り替えることをお勧めします。
Intel Galileo Gen 2のドキュメント
Gen 2のドキュメントは関係は以下のページからダウンロードできます:
執筆時点では以下のドキュメントが掲載されています:
- Galileo and Galileo Gen 2 Shield Testing Report
- Intel® Galileo Gen 2 Schematic
- Intel® Galileo Gen2 Product Brief
- Intel® Galileo Gen2 Warranty Card
- Intel® Galileo Release Notes
- Intel® Galileo Getting Started
このうち、一番上のシールドのテスト・レポートはものすごい力作で、見てみて感動してしまいました。担当者のご苦労はさぞかし大変なものであったのではないかと思われます。
Intel Galileo Gen 2に「足」を装着
Intel Galileo Gen 2のパッケージには、基板を接地面から上方に持ち上げるための「足」が付属していません。この状態では正常な使用の範囲であっても、Gen 2ボードの裏面にあるPCI Express Mini Card※5、JTAGポートおよびその他の部品にダメージを与える可能性があります。
このため、何らかの手段で「足」を追加するか、専用のケースに収納することをお勧めします。
私はというと、Gen 2ボードを固定するために作られた四隅にある穴に直径4ミリメートル、長さ40ミリメートルのネジを挿しています。これは東急ハンズで購入しました:
装着するとこのような感じになります:
Intel Galileo Gen 2の使用場所が傷つきやすい場合などは、ネジの先に樹脂などでキャップや加工をした方がいいでしょう。
Intel Galileo Gen 2のドライバーのインストール
Intel Galileo Gen 2はホスト・マシン側※6に専用のドライバーをインストールする必要があります。この専用のドライバーはIntel Galileo Gen 1とGen 2で同じものであり、従来Gen 1を接続していたマシンであれば新たにドライバーをインストールすることなくGen 2を「Galileo」として認識します。
初めてIntel Galileo Gen 2を接続する場合には、ドライバーのインストールが必要です:
- 付属のACアダプターに「JF」および「21」と刻印のあるコネクターを付け(突起がある方をACアダプターの↑という刻印のある方向に挿し、押し込むことではめることができます)てコンセントに差し込みます。※7
- 付属のACアダプターをGalileo Gen 2に接続してから別売りのUSB標準⇔Micro USBケーブルでパソコンと接続します。Galileo Gen 2の起動が完了するとWindowsから認識されます。初回の接続時にはドライバーのインストールが必要です:
- 「Gadget Serial v2.4」のドライバーを探してのインストールが開始されるので、ドライバーが見つからずに終了するまで待ちます:
※上記のウィンドウは「閉じる(C)」ボタンを押して閉じます。
- 「
Intel_Galileo_Arduino_SW_1.5.3_on_Windows_v1.0.2.zip
」をIntelのサイトからダウンロードします。※8 - ダウンロードが終わったら、該当するZIPファイルを短いファイル・パスで展開します。「マイ ドキュメント」など、長いパスでは展開に失敗するのでご注意ください。今回は「
C:\arduino-1.5.3
」に展開したものとしています。 - 「スタート」ボタンを押してスタートメニューを開き「コントロール パネル」を選択します。
- 「システムとセキュリティ」を選択します。
- 上から3番目のグループにある「デバイス マネージャー」を選択します。UACの設定によっては使用可否が尋ねられるので許可をします。
- 「デバイス マネージャー」ウィンドウの中に「ほかのデバイス」という項目で「Gadget Serial v2.4」が表示されているのでこれを右クリックし、表示されたショートカットメニュー
から「ドライバー ソフトウェアの更新(P)…」を選択します。 - 「ドライバー ソフトウェアの更新 – Gadget Serial v2.4」ウィンドウが開くので下の「コンピューターを参照してドライバー ソフトウェアを検索します(R)」を選択します。
- 「次の場所でドライバー ソフトウェアを検索します:」のテキストボックスに「
C:\arduino-1.5.3\hardware\arduino\x86\tools
」と入力して※9「サブ フォルダーも検索する(I)」にチェックを入れて「次へ(N)」ボタンをクリックします。 - 「ドライバー ソフトウェアの更新 – Gadget Serial v2.4」というウィンドウに「ドライバー ソフトウェアをインストールしています…」と表示されるのでしばらく待ちます。
- 「Windows セキュリティ」というウィンドウが表示されて「このデバイス ソフトウェアをインストールしますか?」と表示されたら「インストール(I)」ボタンをクリックします。
- 「ドライバー ソフトウェアの更新 – Gadget Serial v2.4」というウィンドウに「ドライバー ソフトウェアをインストールしています…」と表示されるのでしばらく待ちます。
- 「ドライバー ソフトウェアの更新 – Galileo(COMx)」※10というウィンドウに「ドライバー ソフトウェアが正常に更新されました。このデバイスのドライバー ソフトウェアのインストールを完了しました:Galileo」と表示されるので「閉じる(C)」ボタンをクリックします。
- 「デバイス マネージャー」ウィンドウの中の「ポート(COM と LPT)」の中に「Galileo(COMx)」※11と表示されます。
- 「Gadget Serial v2.4」のドライバーを探してのインストールが開始されるので、ドライバーが見つからずに終了するまで待ちます:
ここで初めてACアダプターをIntel Galileo Gen 2に接続していますが、従来のGen 1用のACアダプターを誤って接続すると電圧が足らずに正常に動作しません。また、このGen 2用のACアダプターをGen 1に接続すると、おそらくはGen 1を破損させると思われます。両方を同時に使用する場合は、プラグが一緒であるため、誤って接続しないように細心の注意を払いましょう。
Intel Galileo Gen 2の動作確認
前項のACアダプターの接続とドライバーのインストールが終わっていることを前提に、Arduinoソフトウェア開発環境から定番の「Blink(LED点滅(通称・Lチカ))」による動作テストをしてみます:
C:\arduino-1.5.3\arduino.exe
を実行してArduino IDEを起動します。- メニューから「ツール」→「マイコンボード」→「Intel® Galileo Gen 2」と選択して、対象のマイコンボードを「Intel® Galileo Gen 2」とします。この選択はウィンドウの右下の表示に反映されます。
- メニューから「ツール」→「シリアルポート」→「COMxx※12」と選択します。この選択はウィンドウの右下の表示に反映されます。
- メニューから「ファイル」→「スケッチの例」→「Basics」→「Blink」と選択します。
- 新しくスケッチ「Blink」を読み込んだウィンドウが表示されるの最初のArduinoウィンドウを閉じます。
- アイコンの丸で囲まれた「→」をクリックして「マイコンボードに書き込む」を実行します。
- 書き込みが完了するまで少し待ちます。
- 書き込みが完了するとウィンドウ下部の表示が流れていき、そのうえに「マイコンボードへの書き込みが完了しました。」と表示されます。※13
- USBホスト・コネクター(USB標準ホスト・コネクター)の右側の「L」というシルク印刷の下にあるLEDが1000ミリ秒(1秒)間隔で点滅するのが確認できるはずです。※14
RTC用バッテリー
RTC用のバッテリーはGen 1とGen 2で同じものが使用できます。必要に応じて自作※15するか市販品※16を購入するという手があります。
手に入らない場合には、簡単な工作ですので“「Intel Galileo Development Board」を使用する準備”などを参考に自作してみるのもいいかもしれません。
Intel Galileo Gen 1とGen 2のGPIO速度チェック
Intel Galileo Gen 2はGen 1と比較してGPIOの速度がネイティブということで高速化されています。このあたりが実際どのような感じであるかを、先ほど実行したサンプルの「Blink」を改造してテストをしてみたいと思います。
テストに使用したプログラムのソース・コードを以下に示します:
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
int loopCount = 100000;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
Serial.begin(115200);
}
// the loop routine runs over and over again forever:
void loop() {
int i;
unsigned long start, stop;
Serial.println("Starting...");
start = millis();
for(i = 0; i < loopCount; i++) {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
//delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
//delay(1000); // wait for a second
}
stop = millis();
Serial.println("Finished!!");
Serial.print("time: ");
Serial.print(stop - start);
Serial.println(" ms");
delay(10000);
}
太字で強調した部分が元々のサンプル「Blink」に対して変更を加えた部分です。変更点は以下の通りです:
- Arduino IDEに備わっている「シリアルモニタ」に対してログを出力する処理を追加しました。これによって逐次状況を「シリアルモニタ」上で確認できます。「シリアルモニタ」はArduino IDEのメニューを「ツール」→「シリアルモニタ Ctrl+Shift+M」と選択することで表示できます。
- LEDの接続されているGPIOポートに対してディレイなしで規定回数(今回は100,000回)のオン/オフを出力するようにしました。
これを実行した結果は以下の通りになりました:
対象 | 実行時間(1周) |
---|---|
Intel Galileo Gen 2 | 260 ms |
Intel Galileo Gen 1 | 451,243 ms |
このように、約1,735倍という文字通り桁違いの高速化を達成しています。
なお、すべてのポートがこの速度というわけではなく、Gen 2で装備されているデジタルI/Oの20本中8本はGPIOエキスパンダー経由となっており、この速度は出ません。実際にこのGPIOエキスパンダーによるポートを使用するように先ほどのソース・コードの「int led = 13;
」を「int led = 7;
」に変更して実行したところ、結果は以下の通りになりました:
対象 | 実行時間(1周) |
---|---|
Intel Galileo Gen 2 – GPIOエキスパンダー経由 | 56,136 ms |
このようにネイティブGPIOの214.9倍の時間がかかりました。
Intel Galileo Gen 1のGPIOの速度
少し本題から話はそれますが、関連する話ですので書いておきたいと思います。
実は遅いといわれているGen 1のGPIOも特定のポート(IO2とIO3)に対して高速指定をすれば、遅くはありません。Gen 1用にソース・コードを以下のように変更します:
int loopCount = 100000;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(3, OUTPUT_FAST);
Serial.begin(115200);
}
// the loop routine runs over and over again forever:
void loop() {
int i;
unsigned long start, stop;
Serial.println("Starting...");
start = millis();
for(i = 0; i < loopCount; i++) {
fastGpioDigitalWrite(GPIO_FAST_IO3, HIGH);
fastGpioDigitalWrite(GPIO_FAST_IO3, LOW);
}
stop = millis();
Serial.println("Finished!!");
Serial.print("time: ");
Serial.print(stop - start);
Serial.println(" ms");
delay(10000);
}
このソース・コードでは出力先をIO3に変更し、このIO3を高速モードでアクセスしています。これを実行した結果を以下に示します:
対象 | 実行時間(1周) |
---|---|
Intel Galileo Gen 1 – 高速モード指定のIO3 | 148 ms |
このように特段指定をしていない場合と比較して約3,048倍の高速化を果たしています。このIO3にLEDを接続して動作を確認している写真を以下に示します:
実際にはさらに高速化することもできますが、Gen 2の評価という本題から完全にそれてしまうので今回はここまでにします。
参考ページ:I/O speeds? – Intel Communities
Intel Galileo Gen 2でWi-Fiは従来通りに使えるか?
Intel® Galileo software package 1.0.2のページの中からLINUX_IMAGE_FOR_SD_Intel_Galileo_v1.0.2.zip
をダウンロードし、これを展開※17して、USBメモリーに書き込んでGen 2に取り付け、さらにデスクトップ PC 向けインテル® Centrino® Advanced-N 6205由来の通信モジュールを取り付けて試してみたところ、従来通りWi-Fi接続ができることが確認できました。
なお、電波法の観点からRalinkチップ搭載のUSB型無線LANアダプターのテストはしていません。が、理論的には動作するものと思われます。
Gen 1とGen 2、どちらがおすすめ?
現在のところ、Gen 1とGen 2の両方が手に入る状態にあります。ただし、Gen 1は品薄になっており、そのうち市場からは消えてしまうでしょう。そんなGen 1とGen 2、どちらがおすすめなのかを考えてみたいと思います。
Gen 2はGen 1の使いづらい点を素直に改善した製品のため、Gen 2をお勧めします。しかし、使用目的がファームウェア開発の学習などのソフトウェア方面であり、かつGen 1がきわめて安価であるならばGen 1を選択するという手もありかと思います。
つまり、理由がなければGen 2にすべきでしょう。
まとめ
今回のIntel Galileo Gen 2は、Gen 1で問題の指摘や要望が出されていたところをきちっと手当てしてきた感じがします。
やはり、なんといっても遅かったGPIOの速度の改良が一番うれしいところだと思います。また、USBホスト・ポートが標準サイズになったのも非常に扱いやすくなる、すばらしい改良だったと思います。今回はUSBメモリーを付けて起動する際に、そのままつけられる素晴らしさ(?)を感じました。
とはいえ、繰り返しになりますがやはりGPIOの速度改良が一番大きな点です。ようやく他のマイコン・ボードと同じレベルで使用できるようになったのではないかと思います。
あとはこれを応用して何か作ってみるネタを考えないと…。
- 量産品では当初5V 2Aのものが付属していましたが、これでは電源出力が足りずに過負荷となり放射ノイズが規定を超える問題が発生し、別途5V 3Aの出力のACアダプターを購入者に配布する対応を実施中です。
- 詳細は公表されておらず、現時点では不明です。PoE関連のシルク印刷とスルー・ホールがGen 2の基板上にありますが、はんだ付けが必要になりそうに見えます。このことから必要なPoEモジュールはオプション・パーツではなく、出荷時オプションの可能性が高いように思います。また、PoEの電源電圧が12Vと記載があるのが謎です。IEEE規定のPoEでは44.0~57.0V、37.0~57.0V、50.0~57.0V、42.5~57.0Vの4種類の電圧が規定されており、12Vはこの範囲には含まれません。よって、標準規格ではないものを採用していると思われるのですが、現時点では電気的特性が公開されていません。
- 私は当初、この人物をガリレオ・ガリレイその人だと思っていたのですが、インテル株式会社の方の解説によると「ガリレオと思しき人物」とのことで、Intelとしてはこの印刷されている人物をガリレオ・ガリレイその人であると断言していないそうです。この解説に妙に納得してしまった私なのでした。
- 大学に寄付されたパッケージは量産版とは異なり、見るからに大きなものです。比較については“量産版「インテル Galileo 開発ボード」を購入しました”が参考にしていただけるのではないかと思います。
- Mini PCI ExpressまたはMini PCIeなどとも表記されるが、正式名称はPCI Express Mini Card。
- この場合はWindowsマシン側
- このコネクターは経験的にあまり強度がないと思われます。何度も付け直すことはせずに、1度つけたら外さない方がいいと思われます。
- 展開先が異なる場合にはパスを読み替えてください。
- 「
COMx
」の「x
」部分には1ケタ以上の数字が入ります。 - Intel Galileo Development Boardにアクセスする際に必要となるCOMポートの番号が「
COMx
」の「x
」部分に入るので書き留めます。後程Arduino IDEを起動した後に指定する際にこの情報が必要となります。 - Intel® Galileo Gen 2をWindowsが認識しているCOMポートを指定します。ここでは
COM10
を指定しています。 - 環境によってはマイコンボードへの書き込みが正常に終わらないことがあり、途中でフリーズしてしまうことがあります。原因はよくわかりません。このような状況に陥った場合には別のUSBポートにケーブルをつなぎなおして試してみると状況が改善することがあります。
- うまくいかない場合はここまでの手順を見直して確認します。
- 私は“「Intel Galileo Development Board」を使用する準備”で書いたように、CR2032を使用するものを自作しました。
- 該当するZIPファイルは(Mac)OS X上で作成されているようで、Windows 7標準のZIP展開ツールではセキュリティ関連のエラーあるいは警告が表示されることがありますが、すべて無視して展開しました。Windows上で作成したZIPファイルならば、OS X上でも問題がないので、できればIntelには次回からはそのようにしていただけるとよりよいように思います。