今回はMacでやりました.
これはあくまでメモなので,まとまった情報を期待してはいけない..
Macでやる作業
ファームウェアアップデート
何はともあれ,これをしないと始まらない.
参考:Flashing Edison (wired) - Mac
母艦(Mac)にHomebrewでツールをインストール
インストール済みの人は次の項へ.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
ファームを焼くために使うツールをMacにインストール
brew install dfu-util coreutils gnu-getopt
Edisonのイメージを焼き込む
まずはダウンロード
Edison - Software Downloadsから,「Edison Yocto complete image」をダウンロードして,解凍しておく.
解凍したディレクトリへ移動
cd ~/Downloads/edison-image-ww36-14 など
焼き込みスクリプト起動
./flashall.sh
スクリプトを起動すると,直後に「Please plug and reboot the board」と言われるので,そしたら一度,USBを抜いて挿し直す.
挿し直しは自動的に認識されるので,ターミナルを操作する必要はない.
焼き込みには5分くらいかかるので,電源を落としたりしないよう,ゆっくり待つ.
シリアル接続してやる作業
screenでシリアル接続
screen /dev/cu.usbserial-A903BYAS 115200 -L
"-A903BYAS"の部分は,環境によって変わる.
ログイン
接続したら,Returnを2度押すと,ログインプロンプトが現れる.
login> root
と入力して,rootユーザーでログイン.パスワードは必要ない.
スケッチを停止
もしArduinoスケッチのプロセスが動いていたら,入力がモタついて操作しにくいので,以下のコマンドで止める.
/opt/edison/sketch_reset.sh
バージョン確認
cat /etc/version
と入力して,表示されるバージョンが「edison-weekly_build_68_2014-09-08_13-49-07」のように,build_68以降であればOK.
hostnameとパスワードとWifiの設定
configure_edison --setup
と入力すると,設定が始まる,Wifiは設定したらすぐに接続される.
設定が終了したら,「Done. Please connect your laptop or PC to the same network as this device and go to http://192.168.0.9 or http://edison.local in your browser.」のように言われてSSH接続できるようになるので,ここから先はSSHで作業を行う.
Wifiの設定だけを行う場合は,
configure_edison --wifi
で良い.
SSH接続してやる作業
ログイン
別のターミナルから,
ssh root@edison.local
「edison.local」のところは,前の項でシリアルから確認したアドレス.
パスワードを要求されるので,先ほど設定したばかりのものを入れる.
タイムゾーンの変更
rm /etc/localtime
で既存の設定を消してから,
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
で東京/日本に合わせる.
パッケージマネージャの設定
Yocto Linuxのパッケージマネージャはopkgと言うらしい.
Edisonの標準リポジトリの登録
vi /etc/opkg/base-feeds.conf
で vi を起動して,
src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32
の3行を記入.
Intelリポジトリの登録
vi /etc/opkg/intel-iotdk.conf
で vi を起動して,
src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic
src intel-all http://iotdk.intel.com/repos/1.1/iotdk/all
src intel-i586 http://iotdk.intel.com/repos/1.1/iotdk/i586
src intel-x86 http://iotdk.intel.com/repos/1.1/iotdk/x86
の4行を記入.
###パッケージリストのアップデート
opkg update
###インストール済みパッケージのアップグレード
opkg upgrade
自前ビルドしたライブラリの配置場所を作る
~/.local以下にディレクトリを作る
Edisonの / 以下はあまり容量が割り振られていないため,2.2GBとeMMCの半分以上の容量が割り振られている /home/ 以下にツールやライブラリをインストールする.
vi ~/.profile
で vi を起動して,
export PATH=~/.local/bin:$PATH
を入力.これで,このディレクトリに配置したアプリケーションが優先して検索されるようになる.
入力後,
source ~/.profile
で,設定を有効化.(あるいは再ログイン)
コマンドで export を入力すると,PATHが設定されていることがわかる.
計算ライブラリの導入
gfortran(GCC)のインストール
あっ,ダメだこれ.Edisonのメモリ容量が少な過ぎて,途中で止まる..クロスビルド環境構築せな.
ビルドに必要なパッケージをopkgでインストール.
opkg install libgmp-dev libmpfr-dev libmpc-dev
ソースのダウンロード
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.1/gcc-4.9.1.tar.bz2
解凍
tar jxvf ./gcc-4.9.1.tar.bz2
ビルドディレクトリの作成
mkdir ./gcc-4.9.1/build
移動
cd ./gcc-4.9.1/build
コンフィグ
../configure --prefix=/home/root/.local --enable-languages=c,c++,fortran --with-fpmath=sse
ビルド
make
インストール
make install
ATLASとLapackのインストール
Automatically Tuned Linear Algebra Software(ATLAS)の導入.線形代数高速演算ライブラリであるBLASのCPUアーキテクチャごとのチューニングを自動でやってくれる実装ってとこ.計算に特化したライブラリ(SciPyとか)だと,BLASが必要になる場合が多いので,ここで入れておく.
ATLASのソースを入手
wget http://downloads.sourceforge.net/project/math-atlas/Stable/3.10.2/atlas3.10.2.tar.bz2
解凍
tar jxvf ./atlas3.10.2.tar.bz2
Lapackのソースを入手
wget http://www.netlib.org/lapack/lapack-3.5.0.tgz
ビルドディレクトリの作成
mkdir ./ATLAS/build
移動
cd ./ATLAS/build
コンフィグ
ATLASは自動的にCPUに最適なチューニングをしてくれるので,この後の作業は,スケッチはもちろん,nodeなども止めて,なるべくCPUに負荷のかかっていない状態でやるのが良い.
../configure --prefix=/home/root/.local --with-netlib-lapack-tarfile=/home/root/lapack-3.5.0.tgz --nof77 -v 2
ビルド
make build
ここで並列ビルドやろうとして"-j2"とか入れると,エラー出る.
色々な最適化パターンを試すので,超絶時間かかる(12時間以上!).
nohup make build > ./make.log &
とすると,ログアウト後もビルドが継続し,ログがmake.logに書き出されるので,さっさと母艦との通信は切って,電源供給だけはしたまま一日中放っておくのが良い.
インストール
make install
libf77blas.aがないってError出るけど,libatlas.a, libcblas.a, liblapack.a, libptcblas.aはインストールできたみたい.
ちなみに,make checkは,libf77blas.aがないので,できない.
###インストールの確認
#include <cblas.h>
#include <clapack.h>
#include <math.h>
#define NDIM 4
int main (){
int i, j;
int N=NDIM, NRHS=1, LDA=NDIM, LDB=NDIM;
double *A = (double *)malloc(NDIM*NDIM*sizeof(double));
double *B = (double *)malloc(NDIM*sizeof(double));
int *IPIV = (int *)malloc(NDIM*sizeof(int));
A[0] = 1.80; A[4] = 2.88; A[8] = 2.05; A[12] =-0.89;
A[1] = 5.25; A[5] =-2.95; A[9] =-0.95; A[13] =-3.80;
A[2] = 1.58; A[6] =-2.69; A[10] =-2.90; A[14] =-1.04;
A[3] =-1.11; A[7] =-0.66; A[11] =-0.59; A[15] = 0.80;
B[0] = 9.52;
B[1] = 24.35;
B[2] = 0.77;
B[3] = -6.22;
clapack_dgesv(CblasColMajor, N, NRHS, A, LDA, IPIV, B, LDB);
for (i=0;i<N;i++)
printf("%f\n", B[i]);
free(A);
free(B);
free(IPIV);
}
gcc ./dgesv_example.c -I/home/root/.local/include -L/home/root/.local/lib -llapack -lcblas -latlas
1.000000
-1.000000
3.000000
-5.000000
と出力されればOK.
Python環境のセットアップ
pipで色々入れられるようにする.
インストール先を/home以下に指定
vi ~/.profile
で vi を起動して,
export PATH=~/.local/bin:$PATH
export PYTHONPATH=~/.local/lib/python2.7/
を入力.
入力後,
source ~/.profile
で,設定を有効化.(あるいは再ログイン)
さらに.
vi ~/.pydistutils.cfg
で vi を起動して,
[install]
user=1
を入力.
setuptoolsのインストール
wget https://bootstrap.pypa.io/ez_setup.py --no-check-certificate -O - | python
pipのインストール
easy_install pip
NumPy Pandasのインストール
ここも3,4時間かかるので注意.
pip install numpy pandas
その他
アクセスポイントにしたり,Beacon/iBeaconにしたり,Node-Redをインストールしたり,Javaをインストールしたりもできるみたい.
https://communities.intel.com/docs/DOC-23391