microSDカードが必要です(8GBおよび10番目のパフォーマンスクラスから推奨)。16GBカードを使用しました。 Macですべてのステップを実行します。Windowsおよび* nixプラットフォームでは、すべてが同様です(もちろん、オペレーティングシステムの対応する「修正」を使用)。
SDカードの準備
Galileoの場合、開発チームは特別なLinuxイメージYoctoをリリースします
1.最初に、イメージの最新バージョンをダウンロードする必要があります。 これは、たとえば、 このリンクで実行できます。
2.ダウンロードしたファイルを解凍します。
Mac:Downloads user$ bunzip2 iot-devkit-latest-mmcblkp0.direct.bz2
3. microSDをコンピューターに接続して識別します(ラップトップ用のデータ出力を持ち込みます)。
Mac:Downloads user$ diskutil list /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *121.3 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_CoreStorage 120.5 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: Apple_HFS Macintosh HD *120.1 GB disk1 Logical Volume on disk0s2 9735977A-C01B-4DDC-8167-7F1238330E9D Unencrypted /dev/disk2 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *15.9 GB disk2 1: Windows_FAT_32 NO NAME 15.9 GB disk2s1
私の場合、カードは/ dev / disk2です(実際のカードは異なる場合があります)。
4.このディスクをアンマウントします
Mac:Downloads user$ diskutil unmountDisk /dev/disk2 Unmount of all volumes on disk2 was successful
5. 「dd」コマンドを使用して、イメージをmicroSDカードにコピーできます。
Mac:Downloads user$ sudo dd if=iot-devkit-latest-mmcblkp0.direct of=/dev/disk2 bs=8m 131+1 records in 131+1 records out 1103102976 bytes transferred in 345.586518 secs (3191973 bytes/sec) Mac:Downloads user$ sync
画像をカードにコピーするには、ほぼ6分かかりました-しばらくお待ちください(この時点では、プロセスの進行状況は端末にまったく表示されません)。
これらの簡単な手順を完了すると、microSDカードの準備が整います。
最初にIntel Galileo Gen2でLinuxを実行して構成します
これらの手順の過程で、Intel Galileo Gen2はほぼ普通のLinuxコンピューターであることを示します。
実際には、Intel Galileoスロットにカードを挿入し、LANケーブルを接続し、電源を接続します。 Linuxコンピューターがロード中です。 より明確にするために、UARTコネクタに接続してさまざまな診断メッセージを受信し、ダウンロードの進行状況を監視し、追加の「コンソール」を整理することを強くお勧めします。 「プログラマー」 Foca v2.2 (FT232RLに基づいて構築)を使用します。
Macシステムでは、 goSerialアプリケーションを使用すると便利です。 接続パラメーターは次のとおりです(ポートを選択します)。
システムが起動すると、プロンプトが表示されます。ユーザー名(root)を入力する必要があります。 その後、Linuxコマンドを端末に送信できます。
システムのIPアドレスを定義します。
Linuxバージョンを見てみましょう。
root@quark01979b:~# cat /proc/version Linux version 3.8.7-yocto-standard (brendan@thorium) (gcc version 4.8.2 (GCC) ) #1 Wed Sep 3 10:41:56 BST 2014
これで、システムを少し構成できます。
- 「使いやすい」ナノテキストエディターをインストールします。
- コンピューター名を変更し、
- ルートパスワードを設定し、
- 正しいタイムゾーンと時間を設定し、
- RTCを更新します。
SSHを介して構成を行います(ただし、IPアドレスを決定した端末から何かを行うことができます)。
これらの設定の過程で、Intel Galileo Gen2がほぼすべての優れた機能を備えたLinuxを実行することを示したいと思います。
nanoをインストールする
1.ルートとしてSSH経由でIntel Galileo Gen2に接続します(デフォルトでは、パスワードは空白です)。
2. nano-srcフォルダーを作成します。
Mac:Downloads user$ mkdir nano-src
3.このフォルダーに行きましょう。
Mac:Downloads user$ cd nano-src
4. nanoソースを含むアーカイブをダウンロードします。
Mac:Downloads user$ curl http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz >nano-2.2.6.tar.gz
5.アーカイブを適切なフォルダーに解凍します。
Mac:Downloads user$ tar zxvf nano-2.2.6.tar.gz
6.この新しいフォルダー(nano-2.2.6)に移動しましょう。
Mac:Downloads user$ cd nano-2.2.6
7.次のコマンドを実行して、nanoをコンパイルおよびインストールします。
./configure make make install
8.ソースディレクトリを削除できます。
cd .. cd .. rm nano-src -r
これらの簡単な手順の後、ナノフレンドリーエディターがIntel Galileo Gen2に登場しました。
コンピューター名を変更する
新しくインストールされたエディターのおかげで、これは非常に簡単です。
nano /etc/hostname
名前を「galileo」に修正しました(次:保存を確認するために「Ctrl + X」と「Enter」で終了します)。 すぐにIntel Galileoを再起動できますが、急ぎませんが...
ルートパスワードを設定する
ここではすべてが簡単です。最も一般的なLinuxの場合と同様に行われます。
passwd
その後、システムは新しいパスワードの入力と確認を求めます(注意、入力した文字は表示されません)。 すべてが順調であれば、システムはパスワードの変更を次のメッセージで確認します。
passwd: password changed.
正しいタイムゾーンと時間を設定する
現在の日付/時刻を確認するには、次のコマンドを使用します。
date
次のような情報:
Mon Jan 26 23:51:15 UTC 2015
さらに、コマンドの表示内容を確認できます。
timedatectl status
現在のタイムゾーンを現在のタイムゾーンに変更します(私の場合、モスクワの場合):
timedatectl set-timezone Europe/Moscow
「使用可能な」タイムゾーンのリストは、/ usr / share / zoneinfoディレクトリにあります。
繰り返しますが、このコマンドが返す内容を確認してください。
timedatectl status
実際、それはすでに真実のように見えますが、「思われる」だけです(モスクワのタイムシフトは現在+3時間です)。 このLinuxイメージでは、タイムゾーンデータベースの現在の情報は最新ではありません。 この状況を修正します。
1.現在のアクション用のフォルダーを作成します。
mkdir tz
2.新しいフォルダーに移動しましょう。
cd tz
3.タイムゾーンのデータベースの現在のバージョンをダウンロードします。
wget http://www.iana.org/time-zones/repository/releases/tzdata2014j.tar.gz
4.結果のファイルを解凍します。
tar xzf tzdata2014j.tar.gz
5.ヨーロッパのタイムゾーンファイルをコンパイルします。
zic europe
もう一度確認してください:
timedatectl status
さて、タイムゾーンは修正されました(現在、シフトが+3時間である、つまりタイムゾーンに関する情報が最新であることは明らかです)。 クロックをNTPに設定します。 これを行うには、次のコマンドを実行します。
rdate wwv.nist.gov
タイムゾーンが整い、時間が現実に対応するようになりました。
tzフォルダーは不要になりました-削除できます。
cd .. rm tz -r
RTCの更新
少し気を散らし、Intel GalileoのSoCにはRTC (およびバックアップバッテリーを接続するためのボード上の対応するピン)があることを思い出してください。 家庭でCR2032バッテリーとそのホルダーを見つけました。 コネクタ付きのプリミティブケーブルを作成し、このバッテリーを対応するコネクタに接続しました。 これで、監視モジュールがバックアップされました。 適切に動作するように設定するだけです。
これを行うには、RTCモジュールに現在のシステム時刻を書き込みます。そのために、次のコマンドを実行します。
hwclock -w
次のコマンドを使用して、RTCから時間を読み取ることができます。
hwclock -r
今、あなたはできる
reboot
したがって、Linuxに少し慣れている人にとっては、異常なことは何も示されていません。Yoctoを搭載したIntel Galileoは、完全に「普通の」Linuxコンピューターです。 しかし、これは完全に真実ではありません...
もちろん、別のLinuxディストリビューション(たとえば、 Debian )をインストールすることもできますが、すぐに使用できるほど密接な統合はありません。
ArduinoとLinux
スケッチでIntel GalileoのArduinoおよびLinuxコンポーネントと対話するには、システム関数(const char *コマンド)を使用できます。 これは、要求をオペレーティングシステムシェルに渡す標準のC関数です。 この機能を使用して、Arudinoスケッチは、コマンドラインからターミナルを介して行ったように、Linuxと「通信」します。
テストのために、ポートモニターに次の情報を表示する簡単なスケッチャーを作成しました。
- ホスト名(ファイル/ etc / hostnameから)。
- 現在の日時( dateコマンド)。
- IPアドレス( ifconfigコマンドの結果のgrep )。
- SoC温度(「ファイル」/ sys / class / thermal / thermal_zone0 / tempから処理されたデータ)。
- uptimeコマンドの出力結果。
system()関数に加えて、彼はファイルシステムを操作する関数fopen()、fclose()を使用しました。 microSDカードのリソースを無駄にしないために、/ tmpフォルダー(このフォルダーはRAMにあります)のファイルを操作します。
完全なスケッチコード
char buf[128]; void setup() { Serial.begin(115200); FILE *hostname; hostname = fopen("/etc/hostname", "r"); fgets(buf, 128, hostname); fclose(hostname); Serial.print("HOST: "); Serial.println(buf); } void loop() { /* --- - --- */ system("date > /tmp/my.txt"); // / // my.txt /tmp FILE *fp; fp = fopen("/tmp/my.txt", "r"); fgets(buf, 128, fp); fclose(fp); Serial.print("Now: "); Serial.print(buf); /* --- IP- --- */ system("ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | cut -d: -f2 | awk '{printf $1""\n""}' > /tmp/my.txt"); fp = fopen("/tmp/my.txt", "r"); fgets(buf, 128, fp); fclose(fp); Serial.print("Current IP: "); Serial.println(buf); /* --- SoC --- */ int temp; temp = getQuarkTemp(); Serial.print("The temperature of the Quark SoC is "); Serial.print(temp); Serial.println(" degrees celcius."); /* --- uptime --- */ system("uptime > /tmp/my.txt"); fp = fopen("/tmp/my.txt", "r"); fgets(buf, 128, fp); fclose(fp); //Serial.print("Current IP: "); Serial.println(buf); Serial.println(); delay(30000); } int getQuarkTemp(){ char temp_raw[6]; FILE *fp; fp = fopen("/sys/class/thermal/thermal_zone0/temp", "r"); fgets(temp_raw, 5, fp); fclose(fp); int temp = atoi(temp_raw); temp /= 100; return temp; }
作業の結果は、ポートモニターで確認できます。
スケッチの過程で、別のユーザーが接続し、ネットワークケーブルを切断し、しばらくしてケーブルを元の場所に戻しました。
同様のスケッチを使用してCAPを準備しました
つまり 完全に個別に動作する異種コンポーネントのシステム(Arduinoとlinux)は、すでにモノリシックなものに変わり始めており、開発の可能性が広がります。
たとえば、ArduinoスケッチからPythonスクリプトを作成し、実行可能にして実行することができます。 同様に、LinuxのプロセスがArduinoスケッチの動作に影響する場合、フィードバックを整理できます(これについては、「ワークショップ」の第3部で詳しく説明します)。
しかし、それだけではありません。次の出版物では、Eclipseとmraaを使用してIntel Galileoをプログラミングする方法について説明します。
「ワークショップの最初の部分」: Galileo Gen2-最初の知り合い 。