8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

日本Androidの会秋葉原支部ロボット部Advent Calendar 2020

Day 2

TWELITE STAGE on Ubuntu 20.04

Last updated at Posted at 2020-12-01

「TWELITE STAGE を試す」
https://qiita.com/nanbuwks/items/bb07970d5339177aa7a0
では Ubuntu18.04での設定をしましたが、Ubuntu20.04で追試です。

環境

  • Ubuntu 20.04
  • MWSTAGE2020_10(2020/10月9日) および MWSTAGE2020_12(2020/12月3日)

インストール

https://mono-wireless.com/jp/products/stage/index.html
から

MWSTAGE-2020-10_linux-2.zip ( 2020/12月3日版の場合、MWSTAGE-2020-12_linux.zip )

をダウンロードして展開すると 「 MWSTAGE 」というフォルダができた。

TWELITE STAGE APP の作業はパス

インストール作業は
「TWELITE Stage」
https://stage.twelite.info/
に基づき、「Linux - TWELITE STAGE」
https://stage.twelite.info/install/linux

の情報から以下のように導き出すことができる。


$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ sudo ./set_udev_sudo.sh
$ ./make_launch_icon.sh

このようにすると、 /etc/udev/rules.d/51-ftdi.rules に以下が追加される。


ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666",  RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0666",  RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"


しかしながら前回と同様、この設定は他の usbserial モジュールを使用するアプリと干渉を起こすことになる。

http://www.linux-usb.org/usb.ids
を参照すると、以下のように 0403:6001 および 0403:6015 は FTDI 社の ID となっている。

0403 Future Technology Devices International, Ltd
0000 H4SMK 7 Port Hub / Bricked Counterfeit FT232 Serial (UART) IC
0232 Serial Converter
1060 JTAG adapter
1234 IronLogic RFID Adapter [Z-2 USB]
1235 Iron Logic Z-397 RS-485/422 converter
6001 FT232 Serial (UART) IC
6002 Lumel PD12
6007 Serial Converter
6008 Serial Converter
6009 Serial Converter
6010 FT2232C/D/H Dual UART/FIFO IC
6011 FT4232H Quad HS USB-UART/FIFO IC
6014 FT232H Single HS USB-UART/FIFO IC
6015 Bridge(I2C/SPI/UART/FIFO)
...

なので TWELITE STAGE APP を使わなくとも FTDI チップ搭載の該当 ID が被るアダプタをつなげるだけで ftdi_sio および usbserial が rmmod されてしまう。組み込みでは USB シリアルアダプタは息をするように使用する。TWELITE を使いながらシリアルモニターでデータを取得などは普通に行っているためにそういったことができなくなるのは問題だ。

上記のことから、この TWELITE STAGE APP は使用せず、別ツールを使うことで解決することにした。なので TWELITE STAGE APPの作業はパスとする。

MWSDK_ROOT の設定

によると

ビルドに TWELITE STAGEを用いず、makeコマンドを用いてビルドする場合はこちらを参照の上、MWSDK_ROOT環境変数を設定してください。

とあるので


$ echo MWSDK_ROOT=~/Downloads/MWSTAGE/MWSDK >> ~/.bash_profile
$ source ~/.bash_profile

とした。

~/Downloads/MWSTAGE/MWSDK

は自分の環境によって適宜変更する必要がある。

MWSDK

今回のものを解凍すると以下のようなディレクトリ構成になる。

(MWSTAGE2020-10_linux-2) 前回の MWSTAGE-2020-05_linux.zip と変更なし。


MWSTAGE
├── BIN
├── MWSDK
│   ├── Act_samples
│   ├── ChipLib
│   ├── LICENSE
│   ├── MkFiles
│   ├── TWENET
│   ├── Tools
│   └── Wks_TweApps
└── TWELITE_Stage
    ├── INSTALL
    └── LICENSE

( MWSTAGE2020-12_linux ) Tools と Act_extras に変更が入る


MWSTAGE
├── BIN
├── MWSDK
│   ├── Act_extras
│   ├── Act_samples
│   ├── ChipLib
│   ├── LICENSE
│   ├── MkFiles
│   ├── TWENET
│   └── Wks_TweApps
├── TWELITE_Stage
│   ├── INSTALL
│   └── LICENSE
├── Tools
│   ├── ba-elf-ba2-r36379
│   └── tweprog_py
└── log

サンプルプログラムのビルド


WSTAGE/MWSDK/Wks_TweApps/App_Twelite

を vscode でビルドしてみる。


WSTAGE/MWSDK/MyProjects/App_Twelite

にコピーして、vscode から 「File」-「Open Folder...[Ctrl+K Ctrl+O]」 でWSTAGE/MWSDK/MyProjects/App_Twelite を指定する。

image.png

[Terminal] - [Run Task...] - [Build for TWELITE BLUE]

とすると、ビルドできた。

書き込み

書き込みは昔ながらの tweterm.py を使ってみる。

tweterm は

MWSTAGE/MWSDK/Tools/tweprog_py/tweterm.py (MWSTAGE2020-10_linux-2)
MWSTAGE/Tools/tweprog_py/tweterm.py (MWSTAGE2020-12_linux)

にあるので、適当にパスを通しておくかパス指定で実行することになる。

必要なパッケージを以下のように導入


$ sudo apt-get install libusb-dev
$ sudo apt-get install python3-pip
$ sudo pip3 install pyserial

また、pyftdi も必要ですが執筆時点で普通にインストールすると pyftdi は 0.52.0 が入り、それではうまくいきませんでした。
(ダメだった操作)


$ sudo pip3 install pyftdi

pyfydi は 0.30.3だとうまくいきました。(OKだった操作)


$ sudo pip3 install pyftdi==0.30.3

として、以下のようにして実行します。

$ sudo tweterm.py 
Tools/tweprog_py/tweterm.py:86: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':
Available interfaces:
  ftdi://ftdi:230x:R24UDE73/1   (TWE-Lite-R)

Please specify the USB device

と出ました。

となりました。この、


SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':

は Python 3.8 で表示されるようになった警告です。今回はこのまま無視して進めます。
出てきたデバイス名を使って書き込みをしてみます。

$ sudo tweterm.py -p ftdi://ftdi:230x:R24UDE73/1 -b 115200 --no-term -F MyProjects/App_Twelite/App_Twelite/build/App_Twelite_BLUE_L1304_V1-9-1.bin 
Tools/tweprog_py/tweterm.py:86: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':
*** TWE Wrting firmware ... MyProjects/App_Twelite/App_Twelite/build/App_Twelite_BLUE_L1304_V1-9-1.bin
MODEL: TWEModel.TWELite
SER: 10eb745
FILEINFO: 04 03 0008
0%..10%..20%..30%..40%..50%..60%..70%..80%..90%..done - 10.49 kb/s
Bye.

おまけ うまくいかなかった記録

以下 0.52.0 を使ってうまくいかずトラブルシューティングした記録です。

TWELITE R2 + TWELITE DIP を PC につなげて

「TWELITE STAGE を試す」
https://qiita.com/nanbuwks/items/dc553119236e2a219297

のように、


$ sudo Tools/tweprog_py/tweterm.py 

とします。(この指定は MWSTAGE/MWSDK から呼び出しています)


Tools/tweprog_py/tweterm.py:86: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':
Available interfaces:
  ftdi://ftdi:ft-x:R24UDE73/1   (TWE-Lite-R)

Please specify the USB device

となりました。この、


SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':

は Python 3.8 で表示されるようになった警告です。今回はこのまま無視して進めます。
出てきたデバイス名を使って書き込みをしてみます。


$ sudo Tools/tweprog_py/tweterm.py -p ftdi://ftdi:ft-x:R24UDE73/1 -b 115200 --no-term -F MyProjects/App_Twelite/App_Twelite/build/App_Twelite_BLUE_L1304_V1-9-1.bin  

Tools/tweprog_py/tweterm.py:86: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':

Error: 'int' object has no attribute 'name'
Bye.

あらら。調べてみたら pyftdi のバージョン不整合によるものでした。

pyftdi のバージョン


$ pip list
Package    Version
---------- -------
...
pyftdi     0.52.0 
...

とあります。

https://github.com/eblot/pyftdi
には、

Warning
Starting with version v0.40.0, several API changes are being introduced. While PyFtdi tries to maintain backward compatibility with previous versions, some of these changes may require existing clients to update calls to PyFtdi.

Do not upgrade to v0.40.0 or above without testing your client against the new PyFtdi releases. PyFtdi versions up to v0.39.9 keep a stable API with v0.22+ series.

See the Major Changes section on the online documentation for details about potential API breaks.

とあります。

pipでインストール可能なバージョンをリストアップしてみました。


$ pip3 install pyftdi==
ERROR: Could not find a version that satisfies the requirement pyftdi== (from versions: 0.42.0.macosx-10.14-x86_64, 0.4.5, 0.5.1, 0.5.2, 0.6.3, 0.13.2, 0.13.4, 0.22.1, 0.25.0, 0.25.2, 0.26.3, 0.26.4, 0.27.0, 0.28.0, 0.28.2, 0.28.3, 0.28.8, 0.28.9, 0.28.10, 0.29.0, 0.29.1, 0.29.2, 0.29.3, 0.29.4, 0.29.6, 0.30.0, 0.30.1, 0.30.2, 0.30.3, 0.40.5, 0.40.6, 0.42.2, 0.43.0, 0.44.0, 0.44.1, 0.44.2, 0.47.2, 0.48.2, 0.48.3, 0.50.0, 0.50.1, 0.50.2, 0.51.0, 0.51.2, 0.52.0)
ERROR: No matching distribution found for pyftdi==

このうちの、0.30.3 をインストールすることにしました。



$ sudo pip3 uninstall pyftdi

$ sudo pip3 install pyftdi==0.30.3

として書こうとすると


$ sudo ./tweterm.py  -p ftdi://ftdi:ft-x:R24UDE73/1 -b 115200 --no-term -F MyProjects/App_Twelite/App_Twelite/build/App_Twelite_BLUE_L1304_V1-9-1.bin 
[sudo] nanbuwks のパスワード: 
./tweterm.py:86: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':

Error: Unable to open USB port ftdi://ftdi:ft-x:R24UDE73/1: Product ft-x is not referenced

となりました。なお、ここからデバッグしながらだったのでカレントディレクトリは

MWSTAGE/MWSDK/Tools/tweprog_py/tweterm.py

で操作しています。


$ sudo ./tweterm.py 

とすると

./tweterm.py:86: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':
Available interfaces:
  ftdi://ftdi:230x:R24UDE73/1   (TWE-Lite-R)

Please specify the USB device

と出ました。

ライブラリによってデバイスネームの表記が変わるのですね。
ということで、デバイスネームを変えて

$ sudo ./tweterm.py  -p ftdi://ftdi:230x:R24UDE73/1 -b 115200 --no-term -F ../../MyProjects/App_Twelite/App_Twelite/build/App_Twelite_BLUE_L1304_V1-9-1.bin 
./tweterm.py:86: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if twefirm is not '':
*** TWE Wrting firmware ... ../../MyProjects/App_Twelite/App_Twelite/build/App_Twelite_BLUE_L1304_V1-9-1.bin
MODEL: TWEModel.TWELite
SER: 10eb745
FILEINFO: 04 03 0008
0%..10%..20%..30%..40%..50%..60%..70%..80%..90%..done - 10.49 kb/s
Bye.

書けました。ふー。

8
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?