Intelのx86 CPU搭載「インテルGalileo開発ボード」をMacで試してみた
2016/03/24
価値ある情報をユーザー視点で発信するブログ
2016/03/24
もくじ
Intelの低消費電力x86 CPU、Intel Quark SoC X1000を搭載した「インテルGalileo開発ボード」が発売されました。
「インテルGalileo開発ボード」は、Arduinoとの互換性に配慮して設計された、ホビー向けの開発ボード。
Arduino用の拡張ボード「シールド」の流用、Arduino用のスケッチ(プログラム)の流用が容易な作り。
「Intel Galileo」と呼ばれることが多いかと思います。エントリ中でもIntel Galileoの呼称を使いたいと思います。
フィジカルコンピューティングの世界に、ついにIntelが参入ということで感慨もひとしお。
スイッチサイエンス、秋葉原の秋月電子、ツクモ、パソコンハウス東映、FreeT、オリオスペック、エルミタージュ等で入手できるようですな。現在7,500円前後の値段で売っています。
スイッチサイエンス – 《予約販売》インテル Galileo 開発ボード
さすがにIntelだけあって、扱い店が限られるARM CPU搭載の開発ボードと違って、いろいろなところで入手できるようですね。
僕も早速入手。
箱を開けると「What will you make?」とあります。ワクワクしますな。(続きは[more]から)
この手の開発ボードは、ボード上に設けられたUSBポートから給電するだけで動かせるようになっているものが多いですが、Intel Galileoは、動作にACアダプタが必要。
付属のACアダプタの出力は5V/2Aなので、ケーブルは作らないといけないですが、USBバッテリーで給電すれば動きそうです。
Intel Quark SoC X1000は400MHzで動作。
命令セットは32bitのPentium互換となるx86プロセッサ。
詳しい仕様はこちらを見てください(手抜き)。
米Intel、Arduino互換となるQuark X1000搭載Galileoボードを発表 – データシートから概要を読み解く | マイナビニュース
Intel Galileoに搭載された8MBのFLASH ROM上にはLinuxがインストールされており、Intel Galileoの電源を入れると、このLinuxが起動。
root@clanton:/media/sda1# uname -a Linux clanton 3.8.7-yocto-standard #1 Tue Oct 1 00:09:01 IST 2013 i586 GNU/Linux
Intel Galileo関連のソフトウェアはIntelのページからダウンロードできます。
IDEは、ArduinoのものをIntel Galileo用にカスタムした感じ。
Galileo用Arduino IDEという表現がいいかな? ArduinoとはCPUの種類が違うので、コンパイラやライブラリがそれ用になっているほか、スケッチ、すなわちプログラムはLinux上で動作するので、system()関数が使えたりといった違いがあります。
Intel Galileoのファームウェアアップデートも、このIDEを使ってできます。
パソコンとIntel GalileoとはMicroUSBケーブルで接続。ボード上に二つあるMicroUSBポートのうち、USB Clientの方を使います。USBケーブル一本で、スケッチの転送、パソコンとIntel Galileoとのシリアル通信の両方を賄います。この辺はArduinoと同じですね。OS Xでは、ドライバは不要です。
有志によりライブラリが充実してくれば、ArduinoとLinuxをミックスしたようなプログラミングが楽しめそうです。
x86 CPU搭載ということならWindowsが動くのだろうか? と思ってしまいますが、グラフィック機能、HDMIポートを持ち、Androidを載せることもできるRaspberry Pi、BeagleBone Black、Cubieboardとは異なり、Intel Galileoはグラフィック機能を持たず、UEFIでブートする都合上、Windows、MS-DOSを起動させることは困難な模様。
パソコン、スマートデバイス的な利用は無理そうですね。
Intel GalileoはArduino 1.0配列の拡張ピンヘッダを備え、Arduino用のシールドを流用可能。
ボード上にEthernetポートがあります。Galileo用Arduino IDEに付属のEthernetライブラリで使えるほか、Galileoに搭載されたLinuxからも利用可能。
スケッチのsystem()関数でtelnetdを起動するか、MicroSDカードに「LINUX IMAGE FOR SD for Intel Galileo」を導入してsshdを起動すると、このEthernetポート経由でIntel Galileoで起動するLinuxにログインできます。
基板の背面に、Mini PCIeコネクタが存在。ここに、WiFiカード等を挿入可能。WiFiについては、Galileo用Arduino IDE付属のライブラリで、Arduino流に使えるとのこと。
ボード上にMicroSDソケットが存在。Galileo用Arduino IDE付属のライブラリでArduino流に使えるほか、ここにブート用のファイルを置いておくことで、任意のOSで起動可能。
現状はIntelが用意する「LINUX IMAGE FOR SD for Intel Galileo」が使えるのみのようですが、ブートイメージを作るための技術情報が公開されているので、そのうちいろいろなディストリビューションが出てくるはず。
Arduino IDEとのやりとりをするのに使うUSB Clientポートのほかに、USB Hostポートを搭載。Arduino IDEのUSB Hostライブラリで利用可能。外部機器を接続すれば、いろいろ楽しいことができそう。
USB HostポートにSanDiskのMicroSDカードリーダを接続したら、/media/sda1にオートマウントされました。
root@clanton:/# cd /media/sda1 root@clanton:/media/sda1# ls DCIM Nintendo 3DS test.txt
Intel GalileoにACアダプタを接続し、MacとIntel GalileoをUSBケーブルで接続。この順序を逆にすると、故障する恐れがあるので注意。USBケーブルを残した状態でACアダプタを抜いてしまわないように注意。
以下のページからダウンロードしたIntel Galileo Arduino SW 1.5.3 on MacOSXを起動。
「ツール>シリアルポート」を見る。うちの環境ではIntel Galileoは「cu.usbmodem1a121」として見えていました。「tty.usbmodem1a121」と二つありますが、cuの方を選びます。
「ヘルプ>Firmware Update」を実行。
外部電源をつないでいるか?といった確認が出ます。
インストールされているファームウェアより新しいものが見つかりました。アップデートしましょう。
6分ほどでファームウェアのアップデートが完了。
Intel Galileoに手製のLEDチカチカ基板を接続。デジタルの13番に接続。13番は、基板上のLEDにもつながっています。
「スケッチの例>01.Basic>Blink」を呼び出す。
「マイコンボードに書き込む」ボタンを押したら、見事LEDのチカチカが始まりました。
書き込んだスケッチは、Intel Galileoの電源を一度切るか、Rebootボタンでリブートすると消えてしまいます。
Arduino的に使うのはまあこんな感じでできそうですが、今度はIntel Galileo上で動いているLinuxにログインしてみたいと思います。
Intel Galileo上にある、ミニプラグの形をしたシリアルポートからログインするべきなのかもしれませんが、そのためにはケーブルを作らないといけない上に、USB Serialコンバータの利用が必要になるので、今回はパス。
ネットワーク経由でログインします。
Intelのページから「LINUX IMAGE FOR SD for Intel Galileo」をダウンロード。
7zipなので、何らかの手段で解凍。僕はThe Archive Browserを使いました。
解凍したファイルをMicroSDカードのルートディレクトリにコピー。DDでイメージを書き込んだりする必要はなく、MicroSDに、ファイルをコピーするだけ。
Macから取り出して、Intel GalileoのMicroSDソケットに挿入。
Intel GalileoのEthernetポートにケーブルを挿し、電源を投入。
以下のスケッチをIntel Galileoに書き込む。
void setup() { } void loop() { system("ifconfig eth0 > /dev/ttyGS0"); sleep(5); }
「ツール>シリアルモニタ」を起動すると、ルータのDHCPから割り当てられたIPアドレスが判明します。
このIPアドレスめがけてMacからSSHクライアントで接続。ユーザ名はrootです。
$ ssh root@192.168.1.125 root@clanton:~# ls / bin etc lost+found opt sketch usr boot home media proc sys var dev lib mnt sbin tmp root@clanton:~#
つながりました。パスワードは設定されていません。
MicroSDは、/media/mmcblk0p1にマウントされています。
「LINUX IMAGE FOR SD for Intel Galileo」を入れたMicroSDを挿入した環境だとスケッチは/sketch/に保存され、ここにスケッチがあるとArduino互換機能を司るDaemonがI/Oを押さえにかかるようで、Linux側からI/Oを触ろうとするときの障害になってしまいます。
root@clanton:~# echo -n "25" > /sys/class/gpio/export -sh: echo: write error: Device or resource busy root@clanton:~# echo -n "0" > /sys/class/gpio/gpio25/value -sh: echo: write error: Operation not permitted
Linux側からI/Oを触る場合はスケッチを消します。
root@clanton:~# cd /sketch/ root@clanton:/sketch# ls sketch.elf root@clanton:/sketch# rm * root@clanton:/sketch#
この後、再起動。rebootコマンド、基板上のRebootボタンを押しての再起動だとネットワークが動かなくなることがあるので、ACアダプタを抜挿して再起動しています。
正式なやり方が、ほかにあるのかもしれません。
スマートフォンからのI/O操作を想定して、Web経由でI/Oをいじる手段を模索してみました。
「LINUX IMAGE FOR SD for Intel Galileo」を導入した環境でも、Webサーバは入っていないようです?
Node.jsとPython2.7が使えるので、Pythonを使ってやってみました。
#!/usr/bin/env python import SimpleHTTPServer import SocketServer import os os.system('/bin/echo -n "39" > /sys/class/gpio/export') os.system('/bin/echo -n "out" > /sys/class/gpio/gpio39/direction') os.system('/bin/echo -n "1" > /sys/class/gpio/gpio39/value') class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): if self.path == '/on': os.system('/bin/echo -n "1" > /sys/class/gpio/gpio39/value') self.path = '/on.html' if self.path == '/off': os.system('/bin/echo -n "0" > /sys/class/gpio/gpio39/value') self.path = '/off.html' return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self) Handler = MyRequestHandler server = SocketServer.TCPServer(('0.0.0.0', 8000), Handler) server.serve_forever()
ON
OFF
#! /bin/sh cd /home/root /usr/bin/python /home/root/ltica.py & exit 0
エディタはviが使えます。上記四つのファイルを用意したら、initファイルのシンボリックリンクを張ります。
ln -s /etc/init.d/ltica /etc/rc5.d/S20ltica
そして再起動。起動時からPythonによるWebサーバが8000番で起動するようになります。
「http://192.168.1.125:8000/on」にアクセスするとデジタル13番に接続したLEDが点灯、「http://192.168.1.125:8000/off」にアクセスするとデジタル13番に接続したLEDが消灯します。
この例ではLEDが点滅するだけですが、ここにソリッドステートリレーなどを接続すれば、外部機器の電源のオン、オフをWebブラウザ経由で制御できることになります。
こちらのページを参考にさせていただきました。
「Intel Galileo Development Board」でLEDの発光を制御 | KEI SAKAKI’s PAGE.
Intel Galileoをちょっといじってみました。
Arduino互換機能と、Linuxサーバ的な機能が合体した、なかなか個性のある開発ボードだと思います。
Intel製品ならではの販路の広さで、これまでマイコンを置かなかったようなお店に置かれ、シーンが広がるような展開がありそうで期待しています。
Intel Galileoという名前の元に人が集まり、ノウハウが集まってきて、当初思いもよらなかった用途で使えるようになるといった展開もありそうです。
Raspberry Piはグラフィック機能まで持ちながらIntel Galileoの半値ぐらいで目立ちますが、これをLinuxサーバ的に使おうとすると安定性に難がある。Intel Galileoは品質の点では信頼が置けそうですから、用途に応じて使い分けがなされていくのではないかという気がします。
今月の日経Linuxで特集しているので、気になる人は読んでみるといいと思いますよ。