随時加筆中
USBメモリでブートしたDebianマシンで作業。ユーザとしてyoshidawを作成。
●
yoctoは初めて
https://github.com/siemens/meta-iot2000
このサイトに、IOT2020のOSをビルドするために必要なファイルが置いてある。
yoctoは組み込み用マイコン・ボードのOSをビルドするために必要な環境。GUIツールがあるようだが、ビルドが終わって気が付いた。
最小構成は60Mバイトほどのコンパクトなバイナリを作る。
SIMATIC_IOT2000_Setting_up_V1.0.pdf
このなかに、スタティックなIPアドレス192.168.200.1が設定してあると書かれている。また、WindowsツールWin32DiskImagerでマイクロSDメモリに書き込むと書かれている。
GitHubではddコマンドで書き込むように説明されているが、失敗した。
●
yoctoでは何をするのか
マイコン・ボード特有のファイルが必要。
meta-iot2000-bsp
meta-intel
yoctoの本体
https://github.com/siemens/meta-iot2000/blob/master/meta-iot2000-bsp/README.md
の解説を読み、実行する。
DebianにGitHubのツールがないので、インストール。sudoでエラーが出るので、sudoのグループに追加した。
$ git clone git://git.yoctoproject.org/poky.git poky -b krogoth
$ git clone git://git.yoctoproject.org/meta-intel poky/meta-intel -b master
つぎの
$ git -C poky checkout yocto-2.1
$ git -C poky/meta-intel checkout 9a06fc5bce05
は、エラーになった。
pokyは
2.2 を持ってきた。最新ではなく、krogothでそろえるのが正しいようだ。
meta-intelは、http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/
から
5.0-krogoth-2.1をもってきてリネームする。これ以外は、ビルドする前にエラーが出た。もっとよい、そして新しいプログラムの組み合わせがあるかもしれない。
複数のプログラム・ソースをコンパイルして組み合わせるので、新しいほど、不都合が出る場合あるように思える。でも、新しいのを使いたい。
$ git clone git://github.com/siemens/meta-iot2000 poky/meta-iot2000
これで必要なファイルはそろった。
次はビルドするための指示を書いた設定ファイルを修正する。
pokyディレクトリの下にある、
conf/bblayers.conf
をnanoエディタで開き、2行追加。
/home/build/poky/meta \
/home/build/poky/meta-poky \
/home/build/poky/meta-yocto-bsp \
/home/build/poky/meta-intel \
/home/build/poky/meta-iot2000/meta-iot2000-bsp \
"
ここで、ログインして作業しているのは/home/buildではなく、/home/yoshidawなので、修正する。CTRL+o、CRTRL+xで抜ける。
catで確認。
--- conf/local.conf
1行をコメントアウトして、1行追加。
#MACHINE ??= "qemux86"
MACHINE ??= "iot2000"
CTRL+o、CRTRL+xで抜ける。
catで確認。
準備が完了。
●
ビルド
$ bitbake core-image-minimal
最小モデルを作る。root権限で実行してはいけない。実は、これではだめなことが後でわかるが。とりあえず、コンパイルしてバイナリができることを確認するために実行する。一度コンパイルしたものは、あとの作業では再コンパイルされない。
何時間か、かかる。
ネットワーク経由で、core-image-minimal日付け.wciをWindowsPCにもっていき、Win32DiskImageで、すべてのファイルを表示し、.wciファイルを読み込み、SDメモリに書き込む。
これをIOT2020にセットする。
SDメモリソケットは、上に開く。スライドしない。カバーを上に開く。外れてしまうかもしれない。真上からマイクロSDメモリをくぼみに合わせておく。カバーをかぶせ、上方向に1mmほどずらすとロックされる。
電源を間違いなくつなぐと、SDメモリのLEDがぴかぴか、2,3秒消える、ぴかぴか、2,3秒消える、そのあと、連続して読み込むようで、点滅を繰り返す。
20秒ほどでLEDは消えたままになる。
●
動作確認
ネットワークを、192.168.200.x/24に変更し、pingを打つ。反応がある。
sshでアクセス。teratermを使う。connection refused と表示され、つながらない。
http://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html
には、sshサーバが入っていないと書かれている。
The core-image-minimal QEMU image, however, contains no SSH server.
core-image-full-cmdline
を作る。wciファイルができていない。isoを焼いてみるが、ブートしない。hddimgがブートした。sshにも反応する。
IPアドレスを今まで使っていた192.168.111.x/24の中に変更。PCも戻す。
●
不具合 これから解決すること
32GバイトのSDメモリを使ったが、dfで確認すると160Mバイトほどしか利用できていない。エリアを拡張したいが、パーティションが存在しない。
パッケージ管理ソフトが入っていない。wgetはある。
●
2度目のチャレンジ
省略。Toasterにはバグがある。
●
3度目のチャレンジ
exampleのほうにopensslやnode.jsがある。最初から、exampleまでをビルドすることにした。
4割ほど進んだ時、64GBのUSBメモリの容量を使い切った。256GBほど必要か?
●
4度目のチャレンジ
6個のウォーニングを出して終了。613MBのwicファイルがある。Win32DiskImageで書き込む。SDメモリエリアを拡張。作業はラズパイで行う。
iot2000-example-image-iot2000-20161214093619.rootfs.wic
staticの設定ではnameserverが使えない。DHCPで外に出れるようにする。
opkgのリポジトリを設定する。
ぜんぜん不完全。ファイルが落とせないのがたくさんある。特にライブラリ関係。nodojsが入れられない。npmも使えない。
node-REDへの道は遠い。
掲示板に、node-REDのファイルをコンパイルしていないではないかと書いたら、そう、あなたは正しい、入っていない、すぐに用意するからと、蕎麦屋の出前みたいな返事をもらった。
ほかの人から、bbファイルに追加する記述方法を教えてもらったが、もろもろのファイルが更新されるかもしれないので、待ってみる。
2日待っているが更新されていない。
ファイルが更新された。
複数のアプリケーションの内容を更新している。
node-REDのビルドで12個のエラーをはいてOSはできなかった。
●
5度目のチャレンジというか4度目の続き
node-redのソースにはブランチがあるので、それを持ってくればよいという掲示板の書き込み通りすると、900個のワーニングは出たが、ビルドは成功し、node-REDが立ち上がっためでたしめでたし。
https://support.industry.siemens.com/tf/ww/en/posts/node-red-is-not-in-iot2000-example-image/158963/?page=0&pageSize=10
●
使ってみる
それにしても何にも資料がない。工業用機器は、回路図や配線図、マニュアルがあって当たり前だと思うけど、何にもない。
掲示板では、何か問い合わせがあれば、資料を出している。1か所に集めってはいない。
GPIOのピンはArduinoコンパチブルらしい。資料を見ると何か変。こんなところにGNDがあるはずがない。
この図を描いた人は、利用する人のことを何も考えていない。右半分が逆転している。
A0にTL431の出力をつないで、node-REDでデータを表示した。500ぐらいの数字が出てくる。
2.5Vだから、推測で、Vref=5Vで、10ビットだと思い、変換式を入れて、電圧を表示する。2.49V付近が出るので、あたりかな。
基板のレイアウトは違うが、インテルのgalileoボードと同じかもしれない。
つまり、資料はgalileoをみろ。ということなのかな?
SDの利用していないエリアの拡大
resize2fs も入っている。最小imageではなかった。opkgも入っている。