STM8S103F3P6ボード(その9)

先日の、Sduinoでいろいろコンパイルしてみる続き。
STLファイルを作っては3Dプリンタに出力してる間に、ESP8266と戯れたりSTM8のボードに戻ってきたりと忙しい。
実はESP8266で上手くいかなくなって悩んでいるので現実逃避中…なんだけど、こっちも上手くいってない。

とりあえずやってみたことをちょこっとだけどメモっとく。

 

先日はLチカのみだったので、次はわかりやすくディスプレイに文字とか表示させてみようと考えてた。

以前のSDCCではNOKIA 5110ディスプレイを使って表示できたけど、Sduinoのライブラリを見てたらSSD136の乗ったOLEDで文字とか表示させることができる。
 https://tenbaht.github.io/sduino/api/Mini_SSD1306/
ただ、メモリがとにかく小さいので、表示できるものに制限がある。
サンプル画像でも、下のほうが崩れてるし。

 

でも上記では一応使えてるんだから、自分の環境でも問題ないはず。

と、思ってArduino IDEからMini_SSD1306のサンプルスケッチを開いてコンパイルしてみたところ、
 /home/neko/.arduino15/packages/sduino/hardware/stm8/0.3.3/libraries/I2C/I2C.c:398: error 20: Undefined identifier 'TWDR'
 exit status 1
 ボードSTM8S103F3 Breakout Boardに対するコンパイル時にエラーが発生しました。

と、エラーになってしまう。

 

なんかスケッチが間違ってるとかそういう感じじゃなさそうだったんで、一度以前のBlinkスケッチを開いてコンパイルしてみたところ、これもエラーになった。

なのでもう一度リセットして、Arduino IDEも再起動、USBも接続し直したところ、コンパイルできた。

しかしMini_SSD1306はやっぱりコンパイルできないまま。接続は関係なさそう。

 

エラーコードで検索してみると、「Undefined identifier」は識別子が未定義とのこと。やっぱりスケッチが間違ってるんだろうか?

TWDRを定義してるところを探すと、確かにI2C.cの398行目に最初に出てくる。

うーん、どうしたもんかな。でも気になってしかたないんで、もう少し自力で調べてみることにする。

(とかやってるうちに、ライブラリが更新されないかなあ)

STM8S103F3P6ボード(その8)

Sduinoの話、続き。やってることをメモし続ける。


Ubuntu上でSTM8ボードをArduino IDEに接続して使おうと思ったら、コンパイルは問題なかったが認識されないのでスケッチを転送できなかった。
ttyUSB0のパーミッションについては以前対策したのに、何で??と悩んでたら、そもそもttyUSB*が出てこない。
確認してみると結局ST-Linkのドライバは必要かも…と言う感じで、普通のArduinoのようにttyUSB*は関係なかったらしい。
(メインのドキュメントにはまだ記載がないけど、GitHubの修正項目には書いてある)
この辺りまでは前回やったこと。

 

いじりまくってごちゃごちゃしてきたので一度Arduino IDEからSduinoを削除してから、もう一度インストールしてみたりとさらに悩んでたら、エラーの内容に気付いた。
書き込み時のエラーが、
 libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/003/002: Permission denied
 libusb: error [_get_usbfs_fd] libusb requires write access to USB device nodes.
 Could not open USB device.

になってる。権限の問題だろうか。

 

初心に戻ってSduinoのマニュアルを再確認。フラッシュツールについての記述を見つけた。
 https://tenbaht.github.io/sduino/hardware/flashtool/
まだまだ発展途上なんで、マニュアルも新旧入り乱れてる感じ。でも参考になる。
「Installation for Linux」から、下記の文章を/etc/udev/rules.d/99-stlink.rulesで保存する必要があるとわかった。

 # ST-Link/V2 programming adapter

 # ST-Link V1, if using a STM8S discovery board
 # important: It needs a special entry in /etc/modprob/blacklist
 ATTR{idVendor}=="0483", ATTR{idProduct}=="3744", MODE="0666", GROUP="plugdev"

 # ST-Link/V2, the china adapter with the green plastic housing
 ATTR{idVendor}=="0483", ATTR{idProduct}=="3748", MODE="0666", GROUP="plugdev"

 

今度は「udevって何?」と思ったけど、昔いじった覚えがあるな。デバイスの抜き差しを管理してるやつ(?)。
ttyUSB*がまったく関係ないわけではないのか、やっぱり。
rulesファイルの内容が準備されてるということは、やっぱこれ入れないといけないんだろうなあ。
でも自動インストール時についでに入れててくれないかな、と思ったので、一応確認したらフォルダは空っぽ。

 

なのでファイルを作成。いつものnanoエディタ。
 $ sudo nano /etc/udev/rules.d/99-stlink.rules

これで念のため再起動して、再びArduino IDEを起動。ST-LinkでSTM8を接続して書き込み。

今度はうまくいった。

記念に撮影したけどよく見えない。でもまあ、一応LEDはちゃんと点滅してるんです。

 

結局まだフラッシュツールは手動でファイルを作る必要があり、後は自動でインストールできる。
トラブルがあったときにわかりにくいから、自動インストールはちょびっと不安が残った。
しかし最初にエラーになったときにUSBのドライバにこだわりすぎたのはあんまり良くなかった。よくマニュアルを読めばわかったことだったはず。

 

でもこれで、STM8へのコンパイルや書き込みが楽になった。

使えるのがC言語のみだから不具合はあるかもだけど、引き続きまだまだ遊べそう。

STM8S103F3P6ボード(その7)

久々にSTM8のちっちゃいボード関連。

以前からSTM8をArduinoライクに使おうとする試みは見かけたんだけど、その中でもSduinoと名前が付いてたほうの話、続き。

(SDカードサイズのArduinoでSDuinoというのもあるけど、それとは別)


久々に見たら、Arduino IDEである程度使えるようになっていた。
 https://github.com/tenbaht/sduino
これはすごいかも。
基本はSDCCでC言語だけど、直接Makeでコンパイルすることを考えたらずっと楽。

Mac OSで使えそうだったけど、チキンなので自分は動作確認できているUbuntu上のArduino IDEを使うことにした。

 

Arduino IDEを起動、[ファイル]-[環境設定]-[設定]タブで、「追加のボードマネージャーのURL」欄に以下を入力。
 https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json
[ツール]のボードマネージャーでSduinoを検索し、出てきたらインストール。


ボードのリストの中にSTM8S Boardsが出てくるようになる。

STM8S103F3 Breakout BoardとSTM8S105C6 Discovery Boardの2種類があるが、小さいボードのやつはBreakout Board。
とりあえずLチカするために、STM8S103F3 Breakout Board用のサンプルが追加されてるので、その中からBlinkのスケッチを開く。

コンパイルは問題なかったので、あとはボードへの書き込み。

STM8ボードに書き込むときにはSTリンクは必須。これはしかたないか。

 

しかしUSBで接続しても、Ubuntyマシンから認識しない。

ST-Linkは認識してるけど、ttyUSB*として認識されないから、Arduino IDEから選択できない。

dmesgしてみたところ。

[ 2503.499755] usb 1-1.2: new full-speed USB device number 9 using ehci-pci
[ 2503.594354] usb 1-1.2: New USB device found, idVendor=0483, idProduct=3748
[ 2503.594371] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2503.594375] usb 1-1.2: Product: STM32 STLink
[ 2503.594378] usb 1-1.2: Manufacturer: STMicroelectronics
[ 2503.594380] usb 1-1.2: SerialNumber: SÿnQ¥xffffffc2¥xffffff88QT1#g


一瞬またUSBが認識できなくなったと思ったら、他のArduinoは認識したのでやっぱりST-Linkの問題。

ドライバは別に入れないといけないかもしれない。

かも、というのは、マニュアルにはそのあたりの記載がないため。

でもそこだけクリアすれば使えるなら、ぜひ試してみたいのでまたちょっと調べてみる。

Sponsered Link