LoginSignup
2

More than 3 years have passed since last update.

TWELITE STAGE を試す

Last updated at Posted at 2020-10-06

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 を接続して実行してみる

image.png

シリアルポートを認識しないと全ての機能が使えない。

トラブルシューティング

先のインストール作業中の


$ 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

とすると以下のように起動できた。

image.png

問題点

このやりかただと他の 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: 2

Terminal 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: 127

Terminal 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
というバイナリができた。

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
2