2016年12月19日月曜日

Arduino YUN Mini アップデート

随時更新中。

11月末に秋月電子通商で購入したArduino YUN Mini。


  • USB経由で書き込みをする
  • Wi-Fi経由で書き込むをする

できたりできなかったりと不安定だった。
 工場出荷時のリセットしたあと、シリアル・モニタが接続できなくなった。

ファームウェアの更新
luciに入る。初期画面のどこかに入口がある。Flash Firmwareでダウンロードしたファイルを書き込む。lininoからYUN-Miniに変えた。

http://download.linino.org/linino_distro/lininoIO/latest/

lininoIO-generic-linino-yun-mini-squashfs-sysupgrade.bin

 更新をしたが、エラーをはいて使えなくなった。

/usr/lib/lua/luci/template.lua:81: Failed to load template 'linino/set_password'.
Error while parsing template '/usr/lib/lua/luci/view/linino/set_password.htm':
No such file or directory
stack traceback:
 [C]: in function 'error'
 /usr/lib/lua/luci/template.lua:81: in function '__init__'
 /usr/lib/lua/luci/util.lua:68: in function 'Template'
 /usr/lib/lua/luci/template.lua:50: in function 'render'
 /usr/lib/lua/luci/controller/linino/index.lua:182: in function 'authen'
 /usr/lib/lua/luci/dispatcher.lua:370: in function 'dispatch'
 /usr/lib/lua/luci/dispatcher.lua:195: in function </usr/lib/lua/luci/dispatcher.lua:194>


ーーー
3日間試行錯誤

基板横のリセットスイッチを長押しすると、初期化されるとあるが、それは本当ではない。でも本当。
どうも、eepromの違うエリアにパスワードは保存されているぽい。
システム自体が新しくなっても、保存されている場合がある。
システムといっても、U-bootがあり、その上にLinuxであるopenwrtが載っている。U-bootは別のエリヤのeepromに書かれているのかな?

ラズパイのUSBからYUN-MiniのマイクロUSBにつないで、
 minicom -b 9600 -o -D /dev/ttyACM0
シリアル-パラレル変換されてターミナルで接続できる。文字化け多し。原因不明。


U-Bootの途中で[f]とリターンを押すとfailsafeモードへ入れると出る。
そこでfastbootを入れた、きっともろもろが初期化された。
基板の上にあるYUN Resetボタンを押してリブート。


---
 AP動く。
 192.168.240.1 これはlininoと同じ。出てくるログイン画面は異なる。パスワードはarduino !!!






 

 Ciaoの画面を出す。何も入っていないからインストールするかと聞かれる。
 mqttの設定ができる。

パッケージマネージャもある。すごいたくさんのアプリケーションが整備されている。mqttブローカを入れてみた。
パッケージマネージャから入れないといけないIOT2000よりぜんぜんいい!


luciもいる。











2016年12月9日金曜日

SIEMENS IOT2020 OSビルド

随時加筆中
 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も入っている。