TWELITE STAGE は TWELITE の評価開発環境。
- TWELITE STAGE BOARD
- TWELITE STAGE APP
- TWELITE STAGE SDK
で構成されている。
以前、「TWELITE SDKを試す」で
https://qiita.com/nanbuwks/items/5571f6d13d4cc0f67005
を書いた(2020/04/08)が、その直後にSDKの配布は以下のようになった。
TWELITE NET 1.3.0 (2020/04) 以降は TWELITE STAGE として配布されます。
前回試したのは、MWSDK2018-05 。 MWSDK2020-04以降は上記のようになるらしい。
改めてテストをし直してみた。
環境
- Ubuntu 18.04
- MWSTAGE2020_05(2020/5月29日)
インストール
https://mono-wireless.com/jp/products/stage/index.html
から
MWSTAGE-2020-05_linux.zip
をダウンロードして展開すると 「 MWSTAGE 」というフォルダができた
「TWELITE Stage」
https://stage.twelite.info/
に基づいて作業をしていきます。
上記ページには
Linux (Ubuntu18.04) - 2020/05公開予定
とあるけど大丈夫かな・・・
読み進めていくと
「Linux - TWELITE STAGE」
https://stage.twelite.info/install/linux
があるのでそれに基づいて以下のように作業
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ sudo ./set_udev_sudo.sh
$ cd ./MWSTAGE/TWELITE_Stage/INSTALL/ubuntu/
$ ./make_launch_icon.sh
これで TWELITE STAGE APP の アイコンが登録される。
TWELITE STAGE BOARD
https://mono-wireless.com/jp/products/stage-board/index.html
データシート
https://mono-wireless.com/jp/products/stage-board/MW-PDS-STABRD-JP.pdf
回路図
https://mono-wireless.com/jp/products/stage-board/MW-STA-1B-1_sch.pdf
- TWELITE は別に購入が必要。
- Grove端子、単4x2乾電池BoxやPS/2 キーボードコネクタなどが付いている
- 基本的にはスイッチ、コネクタ、ポテンショメーター、LEDの集合
- レベル変換やインターフェースICなどは搭載されていない。
- はんだ付けレスで実験を行うためのものっぽい。
- PS/2 キーボードコネクタの様子から見て、 M5Stack と接続が前提かな?
- 無くても開発には支障はない
- 2020/10/05 現在まだ販売されていないらしい
TWELITE STAGE APP
TWELITE APPSとは違うので注意。
https://mono-wireless.com/jp/products/TWE-APPS/index.html
TWELITE R2 を接続して実行してみる
シリアルポートを認識しないと全ての機能が使えない。
トラブルシューティング
先のインストール作業中の
$ sudo ./set_udev_sudo.sh
が、シリアルポートの認識に関係している。中身を見てみると、
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666", RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
が
/etc/udev/rules.d/51-ftdi.rules
に追加され、ftdi_sio と usbserial モジュールを rmmod するようになっている。
試しに
$ sudo rmmod usbserial
としてみたら、
rmmod: ERROR: Module usbserial is in use by: cp210x
とでた。なので先に cp210x を rmmod し,ftdi_sio, usbserial の順番に rmmod。
その後 sudo ./TWELITE_Stage.run
とすると以下のように起動できた。
問題点
このやりかただと他の usbserial モジュールを使用するデバイス機器と干渉を起こす。
たとえば、FTDIチップ経由でUSBシリアルとして認識するソフトウェアは使用できなくなる。
なので、/etc/udev/rules.d/51-ftdi.rules は元に戻し、 TWELITE STAGE APP
を使う必要に応じて都度 rmmod することにする。
TWELITE STAGE SDK
今回のものを解凍すると以下のようなディレクトリ構成になる。
MWSTAGE
├── BIN
├── MWSDK
│ ├── Act_samples
│ ├── ChipLib
│ ├── LICENSE
│ ├── MkFiles
│ ├── TWENET
│ ├── Tools
│ └── Wks_TweApps
└── TWELITE_Stage
├── INSTALL
└── LICENSE
このうち、MWSDKは以下の通り
MWSDK
├── Act_samples
├── ChipLib
├── LICENSE
├── MkFiles
├── TWENET
├── Tools
└── Wks_TweApps
以前のSDKのディレクトリ構造は
MWSDK
├── ChipLib
├── Documents
├── License
├── MkFiles
├── TWENET
├── Tools
└── Wks_TWELITE
ということで、Wks_TWELITEがWks_TweAppsに変わっている。
Wks_TweAppsの中身は
Wks_TweApps
├── App_IO
├── App_Melody
├── App_PAL
├── App_Tag
├── App_Twelite
├── App_Uart
├── App_Wings
├── Samp_ContTX
├── Samp_I2C
├── Samp_PER
├── Samp_PingPong
├── Samp_SPI
└── Samp_Wayback
旧Wks_TWELITEは
Wks_TWELITE/
├── App_Audio
├── App_IO
├── App_Melody
├── App_Tag
├── App_Twelite
├── App_Uart
├── Samp_ContTX
├── Samp_I2C
├── Samp_PER
├── Samp_PingPong
├── Samp_SPI
└── Samp_Wayback
となっていて、更にApp_Tweliteに着目し、ファイル構成を見てみると
App_Twelite/
├── App_Twelite
│ ├── App_Twelite.c
│ ├── App_Twelite.h
│ ├── Experimental.h
│ └── build
│ ├── Makefile
│ ├── build-BLUE.cmd
│ ├── build-RED.cmd
│ └── build-clean.cmd
├── App_Twelite_MONOSTICK
│ ├── App_Twelite.c
│ ├── App_Twelite.h
│ └── build
│ ├── Makefile
│ ├── build-BLUE.cmd
│ ├── build-RED.cmd
│ └── build-clean.cmd
├── Common
│ ├── SMBus.c
│ ├── SMBus.h
│ ├── adc.c
│ ├── adc.h
│ ├── app_event.h
│ ├── common.c
│ ├── common.h
│ ├── config.h
│ ├── duplicate_checker.c
│ ├── duplicate_checker.h
│ ├── flash.c
│ ├── flash.h
│ ├── input_string.c
│ ├── input_string.h
│ ├── modbus_ascii.c
│ ├── modbus_ascii.h
│ ├── sensor_driver.c
│ └── sensor_driver.h
├── MW-SLA-1E.txt
├── MW-SLA-1J.txt
└── README.md
これが旧SDKだと
App_Twelite/
├── Common
│ └── Source
│ ├── SMBus.c
│ ├── SMBus.h
│ ├── adc.c
│ ├── adc.h
│ ├── app_event.h
│ ├── common.c
│ ├── common.h
│ ├── config.h
│ ├── duplicate_checker.c
│ ├── duplicate_checker.h
│ ├── flash.c
│ ├── flash.h
│ ├── input_string.c
│ ├── input_string.h
│ ├── modbus_ascii.c
│ ├── modbus_ascii.h
│ ├── sensor_driver.c
│ └── sensor_driver.h
├── MW-SLA-1E.txt
├── MW-SLA-1J.txt
├── Makefile
├── Master
│ ├── Build
│ │ ├── App_Twelite_Master_BLUE_L1200_V1-8-3.bin
│ │ ├── App_Twelite_Master_BLUE_MONOSTICK_L1200_V1-8-3.bin
│ │ ├── App_Twelite_Master_RED_L1200_V1-8-3.bin
│ │ ├── App_Twelite_Master_RED_MONOSTICK_L1200_V1-8-3.bin
│ │ ├── BuildAll.sh
│ │ ├── Makefile
│ │ └── objs_BLUE
│ │ ├── App_Twelite_Master_BLUE.map
│ │ ├── App_Twelite_Master_BLUE_L1200_V1-8-3.elf
│ │ ├── Master.d
│ │ ├── Master.o
│ │ ├── SMBus.d
│ │ ├── SMBus.o
│ │ ├── adc.d
│ │ ├── adc.o
│ │ ├── common.d
│ │ ├── common.o
│ │ ├── duplicate_checker.d
│ │ ├── duplicate_checker.o
│ │ ├── flash.d
│ │ ├── flash.o
│ │ ├── input_string.d
│ │ ├── input_string.o
│ │ ├── modbus_ascii.d
│ │ ├── modbus_ascii.o
│ │ ├── sensor_driver.d
│ │ └── sensor_driver.o
│ ├── Makefile
│ ├── Source
│ │ ├── Experimental.h
│ │ ├── Master.c
│ │ ├── Master.h
│ │ └── Version.h
│ └── Version.mk
├── document.Doxyfile
├── readdoc.html
├── readme_utf8.html
└── releasenote.txt
ということで、ディレクトリ構造が変わっている。また、master.cは App_twelite.cになっているようだ。
Make
Executing task: sh -l -c make TWELITE=BLUE <
Makefile:70: /MkFiles/mw.mk: そのようなファイルやディレクトリはありません
make: *** ターゲット '/MkFiles/mw.mk' を make するルールがありません. 中止.
The terminal process terminated with exit code: 2Terminal will be reused by tasks, press any key to close it.
となる。調べてみたら
MWSTAGE/MWSDK/Wks_TweApps/App_Twelite/App_Twelite/build/Makefile
の最後の方、
#####################################################################
### set MWSDK install path and include makefile.
MWSDK_PATH=$(realpath $(MWSDK_ROOT))
### must include mwx.mk (the makefile body part.)
#include $(MWSDK_PATH)/MkFiles/mw.mk
include /home/nanbuwks/Downloads/MWSTAGE/MWSDK/MkFiles/mw.mk
#####################################################################
の
MWSDK_PATH=$(realpath $(MWSDK_ROOT))
の$(MWSDK_ROOT)が正常に定義されていないようだ。
ここを適切に書き換えることで、ビルドができるようになりました。
過去のプロジェクトを新SDKに対応させる
過去の SDK において、App_Twelite を元にして作ったプロジェクトがあった。新しいSDKでビルドできるかな?
MWSDK/MyProjects
に過去のプロジェクトをディレクトロをまとめてコピーしてビルドしようとすると、
Executing task: sh /home/nanbuwks/Downloads/MWSTAGE/MWSDK/MyProjects/App_Twelite/../../Tools/VSCode/bin/cleanbuild.sh TWELITE=BLUE <
sh: 0: Can't open /home/nanbuwks/Downloads/MWSTAGE/MWSDK/MyProjects/App_Twelite/../../Tools/VSCode/bin/cleanbuild.sh
The terminal process terminated with exit code: 127Terminal will be reused by tasks, press any key to close it.
となった。プロジェクトディレクトリにはビルドスクリプトなどが含まれていて、それらを直すよりはソースだけ持ってくるのが良さそう。
新SDK に含まれる App_Twelite
MWSDK/Wks_TweApps/App_Twelite
をコピーして、
MWSDK/MyProjects/App_Twelite
を作り、
MWSDK/MyProjects/App_Twelite/App_Twelite/
の中の以下を削除。
- App_Twelite.c
- App_Twelite.h
過去のプロジェクトから以下のファイル
- Master.c
- Master.h
- Experimental.h
- Version.h
を
MWSDK/MyProjects/App_Twelite/App_Twelite/
へコピー。
MWSTAGE/MWSDK/MkFiles/mw.mk
MWSTAGE/MWSDK/MkFiles/chipsel.mk
によると、新しいお作法としてディレクトリ名がプロジェクト名となるらしい。そしてプロジェクト名.c の作成の必要があるらしい。
MWSDK/MyProjects/[プロジェクトクラスタディレクトリ]/[プロジェクト名ディレクトリ]/
の[プロジェクト名ディレクトリ]にあたるところのようだ。
このSDKでは、ノーマル用のプロジェクトとMONOSTICK用のプロジェクトは別となり、プロジェクトクラスタディレクトリに格納されている。
今回、プロジェクト名として Hoge というものにした。プロジェクトクラスタディレクトリを Hageとしてみたので、
MWSDK/MyProjects/Hage/Hoge/
というようにディレクトリを調整し、
Master.cを Hoge.c と直す。
- .vscode/settings.json
- .vscode/tasks.json
を書き換えると、
Hoge_BLUE_L1303_V1-9-0.bin
というバイナリができた。