Ver0.3.3からボードマネージャー経由でmacOS版もインストール可能になりました。Windowsでインストール時にエラーが表示されていたのも解消されているかと。またI2Cのライブラリは不具合があるようです。writeだけなら以前のものに戻せば使えるはずです。

以下記事は既に不要となりますが、記録として残しておきます。


こちらのSTMicroelectronicsの8ビットマイコン”STM8S103F3P6″ ボードをArduino IDE使って開発するという話。これはsduinoと言います。まだこれからという状態ではありますが、試してみたのでメモ。↓が今回のターゲットのSTM8S BLUE。

現状で動くのはLinuxとWindowsとのことですが、ファイル構成的にはmacOSでも動きそうだったので試したことろ動かすことができました。今回は多少分かりにくくなりますが、Win、macOSについて書きます。
[追記]Win版はアップデートにより本家推奨のボードマネージャ経由のインストールで問題なく動く様になったようです。ビルド関係の更新のためMacにも影響します。ここで公開しているファイルも修正予定です。(現状のままでも問題は無いかと思いますが)

僕が現状まで試したのは、

  • Windows10とmacOS Sierraでの環境構築。
  • macOS用のフラッシュツールを自前でビルド。
  • 実機へのプログラム転送の確認。Lチカのみ。STM8S BLUEのみで確認。
  • サンプルプログラムのビルド確認(実機に転送すれば正しく動くはず?)

といったところ。

1. 情報ソースなど

2. 現状の制限、問題点など

現状、気軽に試せるという状態ではなく、いろいろ問題もある。僕が把握している限りでも、

  • ドキュメント等はしっかりしているものの、まだ開発途上という感じなため最新かつ確実な情報がわかりにくい。ノウハウが蓄積されているわけでも無いので、それなりの試行錯誤が覚悟が必要。(ま、時間の問題ですが)
  • Arduino IDEのパッケージマネージャーに対応しているものの、インストールすると現状ではエラーになります。作者も問題点を把握しているのですので改善されるはずですが、マニュアルインストールが必要です。
  • STM8用のビルドができるフリーのコンパイラ(SDCC)はC版しかないため、Cのみの対応。ArduinoはC++なのでArduinoとの互換性が低くなります。ライブラリ類はそのままでは動かない場合が多いでしょう。(簡単なことするくらいならそれほど問題はないかもしれませんが、関数名が異なったり微妙に扱いが違うなどありそうです)
  • 対応コンパイラのバイナリサイズが商業コンパイラに比べるとサイズが大きくなりがちだそうです。そもそもFlashサイズが小さいので込み入ったことには不向きかも。

インストールについては僕が試した結果を次章にまとめファイル一式もアップしますので、それを使えば、設定を間違えなければおそらく動くと思います。まだ、現状まだまだ開発途上です。Bootloaderを搭載するという話もあるようで、今後大幅な変更もあるかもしれません。

3. インストール

3-1. 準備

試した僕の環境は以下のような感じ。

  • PC(MacBook ProのBootcampにインストールしたWindows10(64bit版)をParallelsで起動。普通のWin機でも動くはず。) &MacBook Pro(macOS Sierra)
  • STM8S Blue(STM8S103F3P6ブレイクアウトボード) 国内ならAitendoで購入可(350円)、Amazonでも購入可。Aliexppressなら70円から80円くらいで買える!
  • ST−Link V2。互換機でOK。よくあるメタルケースに入ってるUSBスティック型の中国製のやつで問題なし。ただし、よく似た見た目でもメーカーが数種類あってピンアサインが異なる場合があるので注意。最新ファームにしておくのが吉。
  • Arduino IDE。現時点で最新の1.8.5を利用。(1.6.5以降なら動くかも)

3-2. インストール

サイト上でインストール方法が紹介されているもの、その通りにやってもうまく動かせんでした。また色々細かい設定はなるべくしたくないですし、WinでもMacでも同じような方法で動かしたいところ。いろいろ試して、構築したファイル一式をこちらに置きました。
http://dubstylee.net/archive/sduino-20171031.zip(約44MB)
※一部ファイルを書き換えています。
これをWindowsなら

C:\Users\<ユーザー名>\Documents\Arduino\hardware

に、macOSなら

 /Users/<ユーザー名>/Documents/Arduino/hardware 

展開します。<ユーザー名>は環境に合わせて読み替えてください。(こうやって書いて気がついたけどWinもmacOSも同じパスなんだね。)「hardware」フォルダが無い場合は作成してください。その中に「sduino」というフォルダを置きます。「sduino」配下の構成は、以下のようになります(主なフォルダのみ)。

sduino
├── examples
│   └── 省略
├── stm8
│   ├── STM8S_StdPeriph_Driver
│   │   └── 省略
│   ├── cores
│   │   └── sduino
│   ├── libraries
│   │   └── 省略
│   └── variants
│       ├── s8uno
│       ├── standard
│       └── stm8sdisco
└── tools
    ├── macosx
    ├── sdcc
    │   ├── macosx
    │   │   └── 省略
    │   └── win
    │       └── 省略
    ├── win
    └── wrapper

展開(解凍)して置くだけなのでこれは問題ないはず。

Windowsの場合は、”¥sduino¥tools¥win” 以下にビルドや実機への書き込みに必要なツール類が入っています。MinGW/MSYSというWindows上でLinuxライクな環境を実現するためのコマンドツール群と、STM8系のマイコン書き込みツール「stm8flash.exe」です。sduinoのビルドなどの設定ファイルではこのフォルダを見るようになっているのですが、一部コマンドを動かすためパスが通っている必要があります。既にMinGWがインストールされている環境では、必要なコマンドがインストールされていれば、パスを通す必要は無いかもしれませんが。

パスの通し仕方は、
http://proengineer.internous.co.jp/content/columnfeature/5205
あたりが参考になるかと。「ユーザー環境変数」の方のPathに上記のwinフォルダまでのパスを追加すればOKです。設定変更したら再起動すること。

Macの場合はこの設定は既にbash等入っているので必要ありません。しかし、sduinoではdashというコマンドが利用されているのですが、これは標準ではインストールされていません。dashはbashの軽量版みたいなものなので、bashを使っても動作します。sduinoのドフォルダの”/tools/wrapper” 以下の3つのシェルシェルスクリプトの最初の行を”#!/bin/bash”としてやればOKです。もしdashをインストールする場合は、ターミナルで

$ brew install dash

とすればインストールされます。brewというのはHomebrewというパッケージマネージャーのコマンドです。わからない場合は、この辺とか見るとよいかも。

sdccはWin版は、sduino作者が公開しているものを入れました。mac版はsdccのサイトで公開している最新スナップショットを入れあります。

また書き込みツール”stm8flash”は、Win版はsduino作者がビルドしたと思われるもの、mac版は僕がソースからビルドしたものを入れてあります。

toolsの配下のwrpperフォルダ内のファイル。ターミナル表示用の設定がArduinoでは不要なため削除しています(動作には影響しない)。

stm8フォルダ配下のplatform.txtはコンパイルの設定が書かれていますが、僕の方で手を入れています。Win、macOS対応のために設定を変えたり、元の書き方だと動かない場合があったので、一部修正しています。

4. Arduino IDEで書き込み

4-1. 接続方法

ボードとSTLINKを接続する。

STM8S BLUE  ST-LINK V2
3V3  -----> 3.3V
SWIM -----> SWIM
GND  -----> GND
NRST -----> RST

そのまんま。でPC/Macに接続すれば良い。ST-LINK V2のドライバーも忘れずに。

4-2. PC/Macに接続したら最初にやること

ボードによっては書き込み保護になっている場合があります。これを解除します。WInはコマンドライン、macOSはターミナルを開きます。sduinoをインストールしたフォルダのtoolsフォルダ以下の、Winかmacosxフォルダに移動して

stm8flash -cstlinkv2 -pstm8s103?3 -u

とします。これでロックされていたら解除されるはず。

4-3. Arduino IDEから書き込んで見る

Arduino IDEを起動します。ボードのリストに「STM8S103F3 Breakout Board」があるのを確認し選択。シリアルポートの指定は必要ありません。接続してないですし書き込みにも必要ないので。
Arduino IDEの「Preferences」(環境設定)を開き、コンパイラの警告が「なし」か「初期値」になっているのを確認してください。(最初は初期値にしてダメならなしで)これ以外だとエラーになるようです。

これでLチカのプログラムを書き込んでみましょう。念のためにソースを。

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH); // LED 消灯
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);  // LED 点灯
  delay(1000);
}

LOWで点灯であることに注意。LED_BUILTINじゃなくて、PB5か3でもOK。書き込みは自動的にリセットされているようです。

sduinoフォルダの下のexampleフォルダにいろいろサンプルがあります。Arduinoの通常のサンプルをsduino用に書き換えたもののようです。元は拡張子cがついてたのをinoに変えています。動作するかは確認してませんが、ほとんどビルドは通るようなので、これで通常のArduinoとsduinoの違いが把握しやすいかもしれません。(結構違いがありそうです)

5.さいごに

これからもっと改善されていくと思われるため今後が楽しみです。ただかなり制限があるので使い所は苦労するかも。サンプル試した所メモリ足りないと言われる場合もありました。コアやライブラリの最適化で解消される部分もあると思いました。でも制限があるからこそ工夫して使う楽しみも感じます。ちょっとした機能の単機能モジュールを作って、組み合わせて使うようにできたら面白いかななんて考えています。

Share