X



トップページ電気・電子
227コメント140KB
RISC-VマイコンK210搭載『Sipeed MAix』『M5StickV』
0001774ワット発電中さん垢版2019/11/12(火) 07:52:44.62ID:QKqsideH
今、話題のRISC-Vコア、AIアクセラレータKPU内蔵マイコンK210搭載
Sipeed MAix、M5StickVの話題を扱います

64bit 400MHz RV64GCのRISC-Vコアを2コア搭載
RV64GCなので単精度、倍精度浮動小数点演算もOK
AIアクセラレータのKPU内蔵
MicroPython環境のMaixPyやArduino IDEでの開発が可能です
0002774ワット発電中さん垢版2019/11/12(火) 08:53:12.98ID:H4ZsTdfl
|||o|o|o|ooo|||o|o|||o|o||o||||||ooooo||oo|ooooo|||o|o|||oooooo||||o|ooo|ooo
ooo|o||oo|o|oo||oo|||o|o||oooo|o||||||oo||oo||o|o||o||oo|ooo|oo||o|o|o|oo|o|
o|oooo|oo|o|o|o||o||||ooo|oooo|||oo|||oo||||||oo||o|||o||ooooooooo|o|||||oo|
o|o|oooo|||||o|oo|oo||o|oo||o|o||||o||oooo|o|oo||ooo||||o|o||oo||||o|o|ooooo
|ooo|o||o|ooo|ooo|ooo|ooo|o||o|ooo|o||||||ooo|oo||ooo|||o|||oo|o|oo|||||o|||
o||ooo||o|||ooo||||oo|o||o|oo|ooo||oo||||ooo|||||ooooo|oo|oooooo|o|||o|o||||
|||o|o|o|oo||oo||oo||o||o||ooooo|||o|ooo||||ooooo|o|o||oo|o|ooooo|o|||o|o|||
|o|||o||||||o|o||oo|o|||o||||oo|o|oooo||oooo|o||oo|o|ooo|ooo|o|||ooo|o|ooo|o
|o||oo||oo|||o|o||o||oo|oo|ooo|o|||oo||ooooooo|||o||||||oo|o|o||ooo|||ooo|oo
|o|oooo||o|o|o||||o||ooooo|ooo||||oo||||o||o|||ooo|||ooo|o|||||oo||o|ooooooo
|oooooo|ooo|o||o||oooo||o|oo|o|||||o||||||o||||o||o|oooooo||ooo||oo||ooo||o|
|oo|||ooo|o|||o|o|oo|oooo|o|oo||o|oo|ooo|||o|||o||||o|||o|||o|o|oo|ooooo|o|o
oo|o||o|ooo||o|oooo||o|ooo|o|ooo|ooo|||o|o||||o||o||oo|o||o|oo|o||o|||oo||o|
o||o|o|oooo|o|o|o|o|||o|o||o||||oo||oooooo|ooooooo|o|||||o|oooo|o||||||oo|||
o||oo||ooo|oo|oooo|o|||oo|||o|||oo||||||||o||||oo|oo|oo||||o|o||ooo|oooooooo
oo|o|oo|oooo||o||o|ooo||o|||||||o||ooo|oo||oo||oooo|oooo||||oo|o||oo||o||o||
ooo|o|o||oo|oo|o||o||o|o|||o||oooo|oooo|||ooo|o|o|o||o||o||o|||ooooo|oo|||||
|||||o||o|||||oo|o||oo|||o|oo||o||o||oo|o|oooooo||o|o|oo|oooo||||ooo|o|ooooo
ooo|oooo|ooo|||||o|o|||||oo||oooo|o|||oo|ooooooo|||||oo||o||oo||oo|o||||o|o|
ooo|o||o||oo||o||o|o|oo|oo|oo|o|o||oo|||ooo|o|||ooo|||o|oo|oo|o|o|oo|o|||||o
|o|o|o|o|o||o|o|||||oooo|o||oooo||oo|oo|||oo|o|o|oo||oo||ooooo||o|||o|o|o|o|
|oo|o|oo|||o||ooooo|oo|o|ooo|||oo||oo|oo|||o|o|ooo|||ooo||||||oo||o||ooo||o|
||||ooo|ooo|||o|oo||oo|||o|o|o|oo|o|ooo|||o||||ooo||||oooo|oo||o||oo||ooo|oo
|o||ooo|o|o|oo||oo|oo|o|oo||o|||ooo|||o|o|oooo|||o|ooo|oooo||||o|o|oo||o||||
oo|||o|o|oo||ooo||ooo|ooo||o|o|oo|o||oo|o|||o||||o|o||o|oo|ooo|o|o|ooo|o||||
oooo||oo|ooooo||ooo|||||||oo||o||||ooo|oo|||oo|ooo||oo|||||o||o|ooooo||oo|||
||oooo||||o|ooooo||||o||ooo||oo|o||o|oo||o||oo|oo||ooooooo|o|||o|ooo||||o|||
o||o||o|oo|||ooo|o|o|ooo||||o|||oo|oo|o||oooo|ooooo|oo||o||||ooo|o|o|o|||o||
|||o|o|||||ooooo||||ooooo|o|||ooo||o|||ooo||o||||o||o|oo|oooo|ooo||||oooo|oo
||o||oooo||o|o|o||||oo|o|oo|oo|ooo|o||o|o|oo|||oo|||o|o|o|oo|||oooo|oo|||o|o
oo||oo||oo||oo|||o|o|oo|||oo|oo|ooo||o||oo|ooo|o||oo|oo|oo|oo||||o||||o|oo||
||o|oooo|o|o|oo|o||o|oo|ooo||o||oo|o|||o||o||||oo|ooo|||ooooo||o|o|o|o||o||o
o|||o|||o|o||||||||ooo|oooo||oo|oo||oo||o|||||||o|o|o|ooo|o||o|o|ooooooooooo
o|ooooo||||||oo|o|oo||o|o|oooo||o||oo||oo|o|oooooo|o|o||o|o||oo||o|o||o|||||
|oo||||oo|o|oo|ooo|||o|o||||ooooooooo|o|||oo||ooo|o|oo|ooo|o|||o|o|o|||o||||
o||oo|oo||||ooo|o|o|o|oo||o||oo|||oooooo||ooooooo|||o|o|o|oo|||oo||||||||oo|
||o||oooo|||oo||||oo||oooo||o|||oo||o|||oooo||oo|oooooo|oo|||o||||oo|||oooo|
||o|o||ooo||o|ooo||oo|oo|oo|o|oo|o|||oooo||ooooo|||oo||ooo||||oo|o|o||o|||||
ooo|||ooo|||o|o|o||o||||ooo|o|oo|oo||||oo||o||oo||oooo||ooo|oo||o||o|oo|o|o|
o||o|o||o||||oooo|||ooo||ooo|oo|||o|o||o||oo|o|o|ooo|||o|ooo|o|oo|||||ooo|oo
|||oo||||oo|oo|||o||o|o|o||oo|o|ooooo||o|ooo|||o|o|||oo|ooo||oo|o||ooooo||o|
||ooo||o|oo|o||ooo|o|o|||ooo|oo|o|oo|||||oo|ooo||o|ooo|oo||||o|ooo||o|o|||o|
o|o|||o|||oo||oooo|||ooo||ooo||oo|||oooooo|||oo|||||oo|oo||||o|o|o|ooo||o|oo
oo|o|o||||oooo||||o|oo|||ooo||o|oo|oo||||||oo||ooo|ooo||o|||oooo|o|oo||||ooo
|o||o|o|o||oo|||o||o||oo|||o|||o||o|oo||oo||o|||ooo|oooo||ooo||ooooo|o||oooo
oo|o|||||oo|oooooo||oooo|o|oo|o||oo|o|ooo|o||||oo|o|o||||||oo|ooo||||o||oo||
|||o|oo||o||||ooooooooooo|o|oo||||ooo||o||o|||oooooo|o||o|||oo||o|o||ooo||||
||o|||||o|oo|oo|||o|||o|oo|||||o|o|||ooo||ooooo|o|o|oooo|o||o|oo||oooo||oooo
||o|||o|o||o|||o|o||oooo|ooooooooo|ooo|oooo||oo|o||ooo||||o|||||ooo|o||o||||
|||oo|||||o|ooo|o||o|oo|ooo||ooo|o|o|ooo||oo|o||o||oo||o||oo|o|o|oo||o||o|oo
0003774ワット発電中さん垢版2019/11/12(火) 12:01:45.42ID:BjkBg9WZ
Sipeed MAixもっと高性能にすればいいのに
0005774ワット発電中さん垢版2019/11/12(火) 15:04:13.89ID:FGoMce0Q
M5StickVはArduino IDEは使えなさそうですね
MaixPy IDEのみの対応だと思います
0006774ワット発電中さん垢版2019/11/12(火) 16:49:35.83ID:/VrUlUuJ
無線LANないから写真撮ってSDカードに記録か。
高性能な画像処理は何に生かせばいいんだよ?
0007774ワット発電中さん垢版2019/11/13(水) 08:34:24.69ID:g6jvSUya
Maixduinoならwifiも付いてるね(技適ありらしい)
MaixduinoならArduino IDEも使えるからいいね
MicroPythonからじゃ、RISC-Vをいろいろいじってみたい人には向かないね
Arduino IDEならインラインアセンブラが使える
0009774ワット発電中さん垢版2019/11/13(水) 12:15:01.39ID:g6jvSUya
QEMUも使うけど、実際のRISC-Vプロセッサでも実行したくなるじゃん
MaixduinoならArduinoに対応してるし、Arduinoはお手軽だから手を出しやすい
MaixduinoはQVGAのLCDやカメラもついてるし

RISC-VやKPU関係なしにいろいろやりたいなら
M5Stackの方が人気がある分、M5Stackの方がいいかもしれないけどね
ちなみにM5Stackの話題はこっちで扱ってるようだ
格安wifiモジュール「esp8266」「esp32」 3個目
https://rio2016.5ch.net/test/read.cgi/denki/1556620556/

M5StickVはMicroPython使いたい人やMicroPythonでのAIに興味がある人向けだね
それ以外の人は人気のあるM5Stackの方がいいと思う
M5Stackはいろいろな開発環境に対応してるようだし
0010774ワット発電中さん垢版2019/11/13(水) 13:11:33.70ID:UqVdrszj
正直、CPUなんて何でもいいし、開発環境もCコンパイラがあればいい。あとはそこそこのライブラリか。
M5stack はハードを出すのはいいが、ちゃんとライブラリの整備をしないからダメだ。
0012774ワット発電中さん垢版2019/11/14(木) 19:35:07.44ID:azSEON2d
Arduino環境でDhrystone2.1動作するようにして計測してみた
Aruduinoの環境のgccのオプションはサイズ優先のOsとなっているのをO2に変更してコンパイル
結果、1248003.1で1757で割ると約710DMIPS
MHz当たりの値はおよそ1.77DMIPS/MHz
GCCでコンパイルした結果としては思ったいたよりいい結果がでました
0013774ワット発電中さん垢版2019/11/15(金) 07:00:24.76ID:sV2+NMVA
O3にしてやってみました
結果は1310822.1で1757で割ると約746DMIPSで約1.86DMIPS/MHzでした
0014774ワット発電中さん垢版2019/11/18(月) 20:23:44.41ID:mg3RSt2x
64bit RV64GC
Sipeed MAix Bit Suit (液晶・カメラ付)
http://akizukidenshi.com/catalog/g/gM-14471/
1個 ¥3,000(税込)

32bit RV32IMAC(単精度、倍精度浮動小数点命令がありません)
Sipeed Longan Nano RISC−V GD32VF103CBT6開発ボード
http://akizukidenshi.com/catalog/g/gK-14678/
1個 ¥830(税込)
0015774ワット発電中さん垢版2019/11/18(月) 20:36:29.34ID:mg3RSt2x
Sipeed Longan Nanoはインターフェースの記事によると最高動作周波数は108MHzだそうです
Flash 128KB、SRAM32KB
USB2.0OTG、UART、SPI、I2C、I2S、CAN
デジタル入出力 37、PWM 4、アナログ入力 2、アナログ出力 2
開発環境はPlatform IO IDE
0017774ワット発電中さん垢版2019/11/20(水) 07:41:30.81ID:5Nakh0He
Sipeed MAix Bit
RV64GC 最高動作周波数400MHz 2コア搭載 キャッシュは命令、データともの32KB
Flash 16MB
SRAM 8MB (6MB+2MB(KPUが使用))
USB:シリアルポート
UART、SPI、I2C、I2S
PWMなし、アナログ入力なし、アナログ出力なし
アクセラレータ:KPU、APU、FFT、AES、SHA256
LCD:320x240
0020774ワット発電中さん垢版2019/11/21(木) 07:32:08.37ID:Z+DDVxGe
MaixduinoはwifiやBluetoothが使えるが
JTAGデバッガ用の信号線がピンソケットにつながってないのが欠点
JTAGデバッガをつないでPlatformIOでデバッグしたい人は要注意
0023774ワット発電中さん垢版2019/11/23(土) 10:00:07.54ID:oVgoJEXG
Sipeed Longan NanoはArduino用のSipeed Longan Nan専用ライブラリが全くないね
お手軽にPlatformIOでArduinoプログラミング使用と思ってる人にはきついかも

Sipeed MAixシリーズはLCDのライブラリとかかなり充実してる

どんなものか知りたい人はArduinoIDEやPlatformIOで
プログラミング環境だけは製品を持ってなくてもコンパイルまでは試せるので
どんなものか確かめたほうがいいかも

Windowsの場合、
platformIOの場合、c:\Users\xxxxxxxx\.platformio\packagesにツールチェインや
Frameworkのライブラリが入るのでそのあたりを確かめてみるといい
Arduinoのライブラリは
Sipeed Longan Nano用はframework-arduino-gd32vに
Sipeed MAix用はframework-maixduinoに
ツールチェインは
Sipeed Longan Nano用はtoolchain-gd32vに
Sipeed MAix用はtoolchain-kendryte210に入る
Sipeed MAix用はFrameworkにArduinoのほかに
Kendryte SDK(StandaloneとFreeRTOS用が選択できる)が選択できて
Standalone用はframework-kendryte-standalone-sdkに入ってる

ArduinoのSipeed MAix用の専用サンプルはframework-maixduino\librariesの
各ライブラリの中にexamplesというディレクトリがあって
その中にそれぞれのライブラリ用のサンプルが入ってます
0024774ワット発電中さん垢版2019/11/23(土) 10:04:35.59ID:oVgoJEXG
あと、Sipeed MAix用の各ライブラリの中のexamplesディレクトリのサンプルはArduino IDE用なので
PlatformIOからArduinoを使ってる人は少し改変が必要
0025774ワット発電中さん垢版2019/11/23(土) 13:00:13.84ID:oVgoJEXG
Sipeed Longan Nanoを持ってないが、PlatformIOで試してみた
まず、Serialが宣言されてない模様
Printクラスを継承して1バイトを書き込むsize_t write(uint8_t)を自分で実装すればprintメソッドは使えそう
空のwriteメソッドを作ってコンパイルだけして
どれだけの容量を食うのかテストしてみたが51950(flash容量の39.6%)も使うね

Maixduinoは持ってるがMaixduinoと比べるとflash容量で苦労しそう
LCDのドライバらしきものも見当たらないしMaxiduinoと違っていろいろ苦労しそう
0026774ワット発電中さん垢版2019/11/23(土) 13:32:39.34ID:oVgoJEXG
Sipeed MAixシリーズはMaixPyやArduino環境でお手軽にいろいろ作れるが
Sipeed Longan Nanoは上級者向けという感じがする
0029774ワット発電中さん垢版2019/11/23(土) 17:55:48.38ID:oVgoJEXG
MAix Bitではなく、MaixduinoでオンボードのLEDをLチカさせる場合は
13番ピンではなく1番ピンにするとオンボードのLEDがLチカする
0030774ワット発電中さん垢版2019/11/23(土) 20:15:05.49ID:wE+BC4Vn
MaixduinoでMaixPyでLチカするのにはISP_TXを指定するとLチカするね
TXにGPIOを割り当てるので当然、実行するとUSB-Serialの接続は切れるので
再開するにはMaixduinoの再起動が必要になるけど

import utime
from Maix import GPIO

fm.register(board_info.ISP_TX, fm.fpioa.GPIO0)
led_r = GPIO(GPIO.GPIO0,GPIO.OUT)
led_r.value(0)
utime.sleep_ms(500)
led_r.value(1)
utime.sleep_ms(500)
led_r.value(0)
utime.sleep_ms(500)
led_r.value(1)
utime.sleep_ms(500)
0032774ワット発電中さん垢版2019/11/23(土) 21:26:28.53ID:wE+BC4Vn
PlatformIOではこれらのリストが出てきます
どれもArduino、Kendryte-standalone-sdk、Kendryte-freertos-sdkの3種類が選択できます

Sipeed MAIX BIT
Sipeed MAIX GO
Sipeed MAIXDUINO
Sipeed MAIX ONE DOC
Sipeed MF1 MF1

Arduino IDEでも使えます
製品を持ってなくてもライブラリを確認したりコンパイルはできるので
どの程度のことが可能か、確かめてから買うこともできます
0033774ワット発電中さん垢版2019/11/24(日) 07:43:07.57ID:UVQCeqMG
ネットで検索するとArduino IDEの最新バージョンでMAixシリーズで不具合があるというのがあるね
Arduino IDEは1.8.9を使うのをオススメ
1.8.9はここからダウンロードできる
https://www.arduino.cc/en/Main/OldSoftwareReleases#previous

追加のボードマネージャのURLはこれ
http://dl.sipeed.com/MAIX/Maixduino/package_Maixduino_k210_index.json
また、ボードマネージャは0.3.11だとカメラのライブラリを読み込んでくれなかったので
0.3.10のインストールをオススメ

インストールするとボードに
Sipeed Maix One Dock Board
Sipeed Maix Bit Board
Sipeed Maix Bit-Mic Board
Sipeed Maix Go Board
Sipeed Maixduino Board

これらを選択できるようになる
0034774ワット発電中さん垢版2019/12/06(金) 19:36:16.97ID:iCW7vnIU
Maixduinoはピン数は少ないし、
wifiはMaixPyからだと簡単に使えるがArduinoから使う方法がわからない
Arduinoからwifi使いたい場合、自分で外付けでESP32つないだ方が簡単そうだ
0035774ワット発電中さん垢版2019/12/07(土) 10:08:01.63ID:pCjVRWxn
Maix BitにESP8266つないでる人ならいるみたいだね
Maix Go用のライブラリがそのまま使えそう
0036774ワット発電中さん垢版2019/12/17(火) 20:33:06.76ID:ZN8mc6fw
MaixduinoにESP32をつないで
ArduinoのMaixGo用のWiFiのライブラリを改変してESP32で使えるようにできました
WiFiのライブラリはutilityディレクトリのEspDrv.cppの中のESP8266用のコマンドを
ESP32用に変えるだけ
ESP32ではESP8266と少しコマンド名が違うだけなのでそれを修正するだけで動いた
ESP32ではなくESP8266をつなぐ場合おそらく修正は不要だと思われます
0037774ワット発電中さん垢版2019/12/17(火) 21:27:37.68ID:ZN8mc6fw
WiFiのデモサンプルを実行する場合は
ESP32をつないだピンを
Serial1.begin(115200, 6, 7); // bitrate, rx, tx
WiFi.init(&Serial1);
のようにESP32につないだピンソケット番号を指定する必要があります。
ピン番号はMaixduinoの場合はピンソケットのピン番号になります。
Maix Bitの場合は実際のMaix Bitのピン番号とK210のピン番号が一致してます。
ESP32のシリアルスピードはデフォルトで115200です。

余談ですが
MaixduinoでArduinoのGPIOやSerialのライブラリで指定できるピン番号は
ピンソケットの番号のみでピンソケットにつながってないピンは指定できません。
(ピンソケットにつながってないピンを指定したい場合は、ライブラリを改変する必要があります)
0038774ワット発電中さん垢版2019/12/23(月) 08:37:15.27ID:tZIoB5Iw
ここのサイトを参考にMaixduinoのLCDに日本語表示することができました
ttp://nopnop2002.webcrow.jp/HSES-LCD24/HSES-LCD24-3.html
ttps://github.com/h-nari/Fontx
ttps://github.com/h-nari/Humblesoft_GFX
MaixBitでもいけると思います

RomFontxを試したのですが
当初はフォントの配列からデータを正常に読み込めませんでした
Fontx.hのIMPORT_BINのマクロを定義してるところで
".section \".irom.text\"\n"
のところを
".section \".rodata\"\n"
に修正したらフォントの配列からデータを正常に読み込めるようになりました

uni2sjis.hの
#include <pgmspace.h>
のところを
#include <avr/pgmspace.h>
に変更

LCDドライバのSipeed_ST7789.hとSipeed_ST7789.cppを名前を変えてコピーして
Adafruit_GFXからの継承ではなく、Humblesoft_GFXからの継承に改変

Humblesoft_GFX.hのprotected:のところに
uint8_t textsize_x;
uint8_t textsize_y;
uint8_t textsize;
を追加
public:のところに
void setTextSize(uint8_t _textsize);
void setTextSize(uint8_t _textsize_x, uint8_t _textsize_y);
を追加

Humblesoft_GFX.cppに
void Humblesoft_GFX::setTextSize(uint8_t _textsize) {
textsize_x = _textsize;
textsize_y = _textsize;
textsize = _textsize;
Adafruit_GFX::setTextSize(_textsize);
}
void Humblesoft_GFX::setTextSize(uint8_t _textsize_x, uint8_t _textsize_y){
textsize_x = _textsize_x;
textsize_y = _textsize_y;
textsize = (_textsize_x >= _textsize_y ? _textsize_x : _textsize_y);
Adafruit_GFX::setTextSize(textsize);
}
を追加

こんな感じでRomfontxで日本語表示ができました
FsFontxは試してません
0039774ワット発電中さん垢版2019/12/23(月) 08:39:50.62ID:58u5qFNe
エロい人おしえてください
aruduino ideで開発環境整えたんですが
プログラムの教本みたいHPは
どこがお奨めですか?
リファレンスマニュアルみたいのが
あれば助かります。
パイソンのリファレンスマニュアル
そのままって事無いですよね?
ハードウェアの絡みもあるし
0040774ワット発電中さん垢版2019/12/23(月) 08:45:28.42ID:tZIoB5Iw
ちなみに私はPlatformIOのArduinoで試しました
テストスケッチはこんな感じです
#include <Arduino.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
// Sipeed_ST7789.hとSipeed_ST7789.cppをAdafruit_GFXではなく、Humblesoft_GFXから継承するようにしたもの
#include "Humblesoft_Sipeed_ST7789.h"
#include "Fontx.h" // https://github.com/h-nari/Fontx

// FONTファイルはプロジェクトのディレクトリのルートに
// fontxというディレクトリを作成し、その中に入れてます。
IMPORT_BIN("/fontx/ILGH16XB.FNT", ILGH16XB); //16ドット半角ゴシックフォント
IMPORT_BIN("/fontx/ILGZ16XB.FNT", ILGZ16XB); //16ドット全角ゴシックフォント
IMPORT_BIN("/fontx/ILMH16XB.FNT", ILMH16XB); //16ドット半角明朝フォント
IMPORT_BIN("/fontx/ILMZ16XB.FNT", ILMZ16XB); //16ドット全角明朝フォント
extern const uint8_t ILGH16XB[], ILGZ16XB[], ILMH16XB[], ILMZ16XB[];

// FONTのデータからFontxのフォントを生成
RomFontx font_gothic(ILGH16XB,ILGZ16XB);
RomFontx font_mincyo(ILMH16XB,ILMZ16XB);

SPIClass spi_(SPI0); // MUST be SPI0 for Maix series on board LCD
Sipeed_ST7789 lcd(320, 240, spi_);

void setup() {
lcd.begin(15000000, COLOR_RED);
lcd.setRotation(3);
lcd.fillScreen(COLOR_RED);
lcd.setCursor(0, 10);

// Fontxのフォントを表示
lcd.setTextSize(1);
lcd.setFont(&font_gothic);
lcd.print("16ドットゴシック\n");
lcd.print("日本語表示\n");

lcd.setFont(&font_mincyo);
lcd.print("16ドット明朝\n");
lcd.print("日本語表示\n\n");

lcd.setTextSize(2);
lcd.setFont(&font_gothic);
lcd.print("16ドットゴシック\n");
lcd.print("日本語表示\n");

lcd.setFont(&font_mincyo);
lcd.print("16ドット明朝\n");
lcd.print("日本語表示\n\n");
}

void loop() {
}
0041774ワット発電中さん垢版2019/12/23(月) 09:25:12.59ID:tZIoB5Iw
>>39
私は一般的なArduinoの情報以外は
ライブラリのサンプルスケッチと直接ライブラリのヘッダーファイルやソースコードを見て参考にしてます
PlatformIOだと
c:\Users\ユーザ名\.platformio\packages\framework-maixduino
の下にMaixのArduino coreとそのライブラリのファイルがあります
ツールチェインのヘッダーファイルを見ることもあります。
c:\Users\ユーザ名\.platformio\packages\toolchain-kendryte210\riscv64-unknown-elf\include

ArduinoIDEのディレクトリ構成はよくわからないですがおそらく
c:\Users\ユーザ名\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.10
この下にArduino coreとMaix用のライブラリがあると思います

あとは公式のDocumentですがあまり詳しくないです
https://maixduino.sipeed.com/en/
公式BBS
https://bbs.sipeed.com/
0043774ワット発電中さん垢版2019/12/23(月) 12:13:38.43ID:3slw9F6g
あとはM5sticVでMaixPyを実機で調べてる人がいるようです
ttps://qiita.com/Lathe/items/0f0c9b75928d52a7d502
0044774ワット発電中さん垢版2019/12/23(月) 12:24:16.00ID:CIGHrxc9
39です。
色々リンクありがとう
参考になりました。
結局はパイソンライクなコードみたいですが、ちょっとCと違うので
戸惑ってました。
研究してみます。
ついでに、ハードウェアもいじってる
エロい人教えて下さい。
GPIOの取り出しは純正のI/O使ってますか?
値段とデリバリーが悪そうなので、代替があれば教えて下さい。
0045774ワット発電中さん垢版2019/12/24(火) 08:39:45.39ID:kB0d8pMc
Arduinoのシールドを使わなくてもGPIOやI2C、SPIなどは使えますよ
デジタルI/Oポートを増やしたいのでしょうか?
デジタルI/Oポートを増やしたいならI2C接続のこんなのありますよ
価格は120円ですw

https://www.petitmonte.com/robot/howto_io_expander.html
16bit I2C I/Oエキスパンダー MCP23017
http://akizukidenshi.com/catalog/g/gI-09486/
0047774ワット発電中さん垢版2019/12/25(水) 13:02:09.91ID:CspXZBmy
>>44
Maxiduinoでは3つの開発環境がある
1.Maix用のMicroPythonであるMaixPyを使った開発環境
2.Arduinoを使った開発環境
3.Maixが使ってるチップのK210のメーカーが出してるSDKによる開発環境

Pythonライクに見えるのは、MaixPyのソースコードだと思わます
MicroPythonなのでPythonそのものです
0048774ワット発電中さん垢版2019/12/25(水) 20:06:09.48ID:0Q5Zkq4M
Maixduinoのアナログピンは特殊です
MaixduinoはマイコンとしてK210が使われていますが
K210にADCの機能はないためオンボードのESP32のADCがアナログピンに割り当てられてます

そしてオンボードのESP32は特殊なFirmwareが組み込まれてるようで
MicroPythonのMaixPyのv0.4.0からはWiFiやADCの機能は使えるのですが
(v0.3.2はMaixduinoのWiFiやADC機能は対応してないようです)
今のところArduinoから使う方法が全くわかりません

今後、Arduinoから使うためのライブラリが公開されるかもしれませんが
現状ではMaixduinoのオンボードのESP32を使ったWiFi機能とADC機能は
MaixPy専用だと思った方がいいです

WiFi機能はESP-WROOM-02を新たに購入して外付けでSerialでつなげば
ArduinoのMaixGo用のWiFiライブラリは使えるようです

MaixPyのADC機能を使ったサンプルプログラムは
networkのカテゴリの中にあります。(ESP32のADCを使ってるためだと思われます)
https://github.com/sipeed/MaixPy_scripts/blob/master/network/demo_esp32_read_adc.py
このサンプルプログラムを走らせると19行目の
adc = nic.adc( (0,1,2) )
でエラーになります。(まだ引数を指定した機能は実装されてない)
まだMaixPyのv0.4.0はPreReleseなので全機能が実装されてないのかもしれません
ここをコメントアウトすればとりあえず動作します

MaixPyのv0.4.0はここにあります
https://github.com/sipeed/MaixPy/releases
このページのv0.4.0の中の
maixpy_v0.4.0_50_gcafae9d.bin
これがMaix用のMaixPyのファイルです。
https://github.com/sipeed/kflash_gui/releases/tag/v1.3.2
ここのkflash_guiを使ってMaixduinoなどのMaixシリーズに書き込みます
0049774ワット発電中さん垢版2019/12/26(木) 07:57:15.98ID:wScx7Np+
皆さんありがと
M5stackは、displayやSPが付いていて
デバッグやちょっと弄るのに楽でいいですねw
aruduinoIDE上だと、コンパイルが遅いね。プレファレンス書き換えると
早くなると書いてありましたが、効果が実感できません。
どこが悪いんだろう?
0050774ワット発電中さん垢版2019/12/26(木) 19:36:06.95ID:oU8zYSm1
>>49
Maixduinoだと思ってたのですが違うのか
お持ちのものは何なのでしょうか?
M5StickV?、それともS5Stack?
M5StickVなら搭載マイコンがK210なのでこのスレでいいですが
M5StackならESP32というマイコンを搭載してますので下記のスレになります

格安wifiモジュール「esp8266」「esp32」 4個目
http://rio2016.5ch.net/test/read.cgi/denki/1574506387/
0051774ワット発電中さん垢版2019/12/26(木) 20:41:10.05ID:oU8zYSm1
>>45のI/OエキスパンダーのMCP23017はMaixシリーズでは
ArduinoでAdafruitのMCP23017のライブラリがそのまま使えるようです。
https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library

Adafruit_MCP23017.cppの14行目からの
#ifdef __AVR
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#endif

//#ifdef __AVR
#include <avr/pgmspace.h>
//#elif defined(ESP8266)
// #include <pgmspace.h>
//#endif
のように15行目を残してコメントアウトして
avr/pgmspace.hをインクルードするようにするだけで使えます。
0052774ワット発電中さん垢版2019/12/26(木) 20:41:46.70ID:oU8zYSm1
使用するときは開始アドレスとして
MCP23017のピンのA2,A1,A0のアドレス値を0から7までの数値で入れます
>>46に載ってる回路図だとA0がHIGHになってるのでこの場合は
mcp.begin(1);
A2,A1,A0を全部グラウンドに接地した場合は
mcp.begin();
となります。

mcp.pinMode(0, INPUT);
mcp.pullUp(0, HIGH); // これはMCP23017の内部プルアップをする指定です。
mcp.pinMode(1, OUTPUT);
mcp.digitalWrite(1, HIGH);
uint8_t read_pin = mcp.digitalRead(0);
こんな感じで使えます。
この時、MCP23017のGPA0がピン番号0でGPA7がピン番号7
GPB0がピン番号8でGPB7がピン番号15になります。

I2Cの信号ピンを変えたい場合は
Adafruit_MCP23017.cppの111行目のvoid Adafruit_MCP23017::begin(uint8_t addr) {の中の
Wire.begin();

Wire.begin((uint8_t)21, (uint8_t)22, 400000);
のようにピン番号と周波数を指定すれば変更できます。
第1引数がSDAで第2引数がSCLのピン番号、第3引数が周波数です。
(周波数は省略可能です)
この時に指定するピン番号はK210のピン番号になるので要注意です。
0054774ワット発電中さん垢版2019/12/26(木) 22:25:42.72ID:oU8zYSm1
M5StickVならGPIOのプログラムだとこのあたりが参考になると思います

M5StickVのGroveコネクタを使う
ttps://hrkz.tokyo/m5stickv-grove/

Grove用ケーブル
https://www.switch-science.com/catalog/list/435/

【M5stickV】ランダムな10色に光らせる方法 ~ライト編~
ttps://hellobreak.net/m5stickv-led-9-30/

M5StickVのGroveポートではI2Cも使えるようです。
ttps://twitter.com/robo8080/status/1169133576912347136
ttps://twitter.com/robo8080/status/1169237144742744064
ttps://twitter.com/robo8080/status/1169238906367172608
ttps://twitter.com/robo8080/status/1170225725888069632
ttps://twitter.com/robo8080/status/1170296297271652352
ttps://twitter.com/robo8080/status/1170299180876582914

M5StickVは持ってないのですが
M5StickVでArduinoが使えるのなら
Maixシリーズと同様にI2Cの初期化でI2Cが使うピンを変更できると思われます。
MaixPyだけでなくArduinoでI2Cが使えるかもしれません
(M5StickVを持ってなくて試してないのでできないかもしれませんが。)
I2Cの初期化で使用するピンと周波数を指定できます
(M5StickVのGlobeコネクタは34ピンと35ピンが割り当てられてるそうです)

#define SDA1 34
#define SCL1 35
Wire.begin((uint8_t)SDA1, (uint8_t)SCL1, 400000);
こんな感じです
M5StickVはGPIOが少ないようなのでI2CでGPIOを増やせたらいいですね
https://twitter.com/5chan_nel (5ch newer account)
0055774ワット発電中さん垢版2019/12/27(金) 05:04:45.49ID:xYsVZn80
これ安いですね

HiLetgo PCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバー IIC モジュール Arduinoに対応 ロボット
https://www.アマゾン.co.jp/dp/B01D1D0CX2/

AmazonのURLは5chに直接貼れないのでwww.アマゾン.co.jpにしてます
0058774ワット発電中さん垢版2019/12/29(日) 05:24:35.76ID:qwHgq9TF
>>56
一時期URLエンコードして貼ってた時期ありましたが
フィッシング詐欺と間違われる可能性もあるのでやめました
0060774ワット発電中さん垢版2019/12/29(日) 13:46:34.54ID:qwHgq9TF
MaixPyでMCP23017を使う

https://github.com/ShrimpingIt/micropython-mcp230xx
このMCP230xx用のライブラリを使うことでMaixPyでMCP23017が使えます
少しバグがあるのとMaix用に少し改変する必要がありました

このmcp.pyを改変したのがこれです
https://pastebin.com/xjSk3XZj

これをmcp.pyという名前で保存してuPyLoaderでMaixシリーズに転送してください
https://github.com/BetaRavener/uPyLoader/releases

簡単なサンプルはこれ
https://pastebin.com/uSp9CJFi

ライセンスは
https://github.com/ShrimpingIt/micropython-mcp230xx/blob/master/LICENSE.md
を読んでください
0061774ワット発電中さん垢版2019/12/29(日) 13:52:10.76ID:qwHgq9TF
mcp01 = mcp.MCP23017(address=0x21, gpioScl=30, gpioSda=31)
のアドレスは0x21になってますが、デフォルトは0x20です
ボードに合わせてMCP23017のアドレスを設定してください
Scl、SdaはMaixシリーズではSCLが30、SDAが31がデフォルトです
M5StickVの場合は34、35になるかと思います
(M5StickVは持ってないのでSCLが34でSDAが35なのかSCLが35でSDAが34なのかわかりません)
0063774ワット発電中さん垢版2019/12/29(日) 23:07:45.66ID:qwHgq9TF
MaixduinoをMaixPyで使ったときのSPIの使い方がやっとわかりました
ネットを探しても、あまり情報が無かったので苦労しました
試しに、SPI接続の温度センサーのADT7310を動作させてみたので紹介します
Maixduinoの
2番ピンにCS
3番ピンにMISO
4番ピンにSCK
5番ピンにMOSI
を接続してみました
Maix Bitでは
21番ピンにCS
22番ピンにMISO
23番ピンにSCK
24番ピンにMOSI
になると思います
ピンの役割はfm.registerで変更できるので任意のピンに変更することが可能です

この部分です
SPI1_D0がSPI1のMOSI、SPI1_D1がSPI1のMISOです。
CSは自分で制御したい場合はGPIOで制御します。
fm.register(21,fm.fpioa.GPIOHS0)#cs
#fm.register(21,fm.fpioa.SPI1_SS0)#cs
fm.register(24,fm.fpioa.SPI1_D0)#mosi
fm.register(22,fm.fpioa.SPI1_D1)#miso
fm.register(23,fm.fpioa.SPI1_SCLK)#sclk

spi01=SPI(SPI.SPI1,mode=SPI.MODE_MASTER,baudrate=125000,polarity=1,phase=1,bits=8,firstbit=SPI.MSB,mosi=fm.fpioa.SPI1_D0,miso=fm.fpioa.SPI1_D1,sck=fm.fpioa.SPI1_SCLK,cs0=-1)
#spi01=SPI(SPI.SPI1,mode=SPI.MODE_MASTER,baudrate=125000,polarity=1,phase=1,bits=8,firstbit=SPI.MSB,mosi=fm.fpioa.SPI1_D0,miso=fm.fpioa.SPI1_D1,sck=fm.fpioa.SPI1_SCLK,cs0=fm.fpioa.SPI1_SS0)

ソースコードはこちらです

https://pastebin.com/4ayBSq7F
0064774ワット発電中さん垢版2020/01/01(水) 23:30:41.43ID:6CVld2H6
MaixPyでGPIOエキスパンダのMCP23017を使うその2

>>60のライブラリはGPLv3なので使いにくいと思い
Adafruitの下記ライブラリをMaixPyで動くように移植してみました

CircuitPython driver for MCP230xx GPIO Expanders
https://github.com/adafruit/Adafruit_CircuitPython_MCP230xx

とりあえず、exampleのmcp230xx_simpletest.pyを動くようにしてみました

ファイルは4つです
digital_inout.py
https://pastebin.com/c2VuPWUE
mcp230xx.py
https://pastebin.com/FXfFmNw9
mcp23008.py
https://pastebin.com/MxTVrK0K
mcp23017.py
https://pastebin.com/pMrGpujQ

これら、4つのファイルを
uPyLoaderでMaixシリーズ、M5StickVなどにアップロードしておきます
https://github.com/BetaRavener/uPyLoader/releases

サンプルプログラムはこれ(mcp230xx_simpletest.pyを改変しただけです)
https://pastebin.com/keqgBPRm

Maixシリーズはsclが30、sdaが31がデフォルトです
他のピンに変更したい場合はscl、sdaの値を変更してください
(Maixduinoを使っている場合、指定するピン番号はK210のピン番号ですので要注意です)
M5StickVでもscl、sdaを34、35ピンに設定すれば動作すると思います
(sclが34ピン、sdaが35ピンなのかsclが35ピン、sdaが34ピンなのかはわかりません)
0065774ワット発電中さん垢版2020/01/01(水) 23:36:01.70ID:6CVld2H6
追記
サンプルのaddressが0x21になってますが>>46の回路図に合わせてるだけです
mcp = MCP23017(i2c, address=0x21) # MCP23017 w/ A0 set

MCP23017のデフォルトのaddressは0x20です
自分の使用してるものに合わせて変更してください
0066774ワット発電中さん垢版2020/01/03(金) 10:34:47.26ID:VxkzvV7l
新しいMaixPyのビルドでヒープサイズを設定できるようになったようです
http://dl.sipeed.com/MAIX/MaixPy/release/master/maixpy_v0.5.0_12_g284ce83

import Maix
Maix.utils.gc_heap_size()

これでヒープサイズが確認できるのと
import Maix
Maix.utils.gc_heap_size(400000)
のようにヒープサイズが設定できるらしいですね
ためしに
import Maix
Maix.utils.gc_heap_size(1000000)
を実行したらヒープサイズが1000000になりました

あまり大きな値を設定するとMaixPyが起動しなくなるので要注意です
0067774ワット発電中さん垢版2020/01/03(金) 10:39:19.99ID:VxkzvV7l
Maix.utils.gc_heap_sizeで大きな値を設定してMaixPyが起動しなくなったら
下記の作業をする必要があります。
(LinuxやMacなどの環境が必要なようです。私はWindowsのCygwin上で実行しました
gccやg++、makeなどが必要なようです)

git clone https://github.com/sipeed/MaixPy
cd tools/spiffs
mkdir fs
python gen_spiffs_image.py ../../projects/maixpy_k210/config_defaults.mk

これを実行するとtools/spiffs/fs_imageに空のmaixpy_spiffs.imgができます

この作成されたmaixpy_spiffs.imgをkflash_guiで
0xD00000のアドレスに書き込めば起動できるようになります
ただし、今までにMaixやM5StickVにアップロードしたファイルの内容は消えます
ファイルをダウンロードしたい場合は、古いMaixPyのイメージを書き込んで起動し
(maixpy_v0.4.0_50_gcafae9d.binで起動できました)
uPyloderでバックアップを取ってから
kflash_guiでmaixpy_spiffs.imgをkflash_guiで0xD00000に書き込めばいいはずです

古いMaixPyはここにあります
http://dl.sipeed.com/MAIX/MaixPy/release/master/
0068774ワット発電中さん垢版2020/01/03(金) 10:43:10.43ID:VxkzvV7l
追記
import Maix
Maix.utils.gc_heap_size(600000)
とヒープサイズを設定後、反映されるのはハードリセットした後です
ソフトリセットでは反映されません
0069774ワット発電中さん垢版2020/01/03(金) 10:51:44.36ID:VxkzvV7l
import Maix
Maix.utils.gc_heap_size(3000000)
までは成功しました

import Maix
Maix.utils.gc_heap_size(4000000)
ではMaixPyが起動しなくなりました

失敗するとMaixPyが起動しなくなるので
空のmaixpy_spiffs.imgが作成できない人は真似しないでください
0070774ワット発電中さん垢版2020/01/03(金) 11:52:45.08ID:VxkzvV7l
gen_spiffs_image.pyはもともとはflash上のファイルイメージを作成するためのもののようです
tools/spiffsにfsディレクトリを作成してその中にファイルを入れるとfsディレクトリ以下のファイルの
flash書き込み用のイメージが作成されるようです

紹介動画(アニメーションGIF画像)
https://cdn.sipeed.com/pack_spiffs_ops.gif
0071774ワット発電中さん垢版2020/01/09(木) 22:42:18.37ID:3Sceyj5N
Sipeed Longan Nano、やっと中華USB Blasterでuploadとdebugができるようになったけど、
あんまり早くない・・・

> ** Programming Started **
> auto erase enabled
> wrote 87040 bytes from file .pio\build\sipeed-longan-nano\firmware.elf in 103.054993s (0.825 KiB/s)
> ** Programming Finished **
> ** Verify Started **
> verified 86224 bytes in 73.658226s (1.143 KiB/s)
> ** Verified OK **
0072774ワット発電中さん垢版2020/01/10(金) 04:48:22.30ID:kxIDyPCI
Sipeed Longan NanoはメーカーがSipeedというだけでMaixシリーズとは全然別物だからね
Arduinoの環境も整備されてるとはいいがたいしMaixPyも使えないし
0073774ワット発電中さん垢版2020/01/18(土) 20:32:23.23ID:KxK7Cp1t
Maixduinoで>>55のPCA9685モジュールのPWMでLチカをしてみました

SCL、SDAを3.3KΩでプルアップしてモジュールにつなぎます
VCCにMaixduinoの3.3V、GNDにMaixduinoのGNDをつなぎます
LEDはシンク接続で16個つないでみました
(抵抗は1KΩを使いました)

今回はMaixPyから使ってみます

MicroPython用のPCA9685モジュール用のドライバーソフトが
adafruitから出てるようですのでそれをそのまま使います
https://github.com/adafruit/micropython-adafruit-pca9685

adafruitのドライバソフトの中のpca9685.pyを
uPyLoaderでMaixシリーズやM5StickVに転送してください

uPyLoader
https://github.com/BetaRavener/uPyLoader/releases

テストサンプルはこんな感じです
(このサンプルではLEDはシンク接続を想定してます)

https://pastebin.com/7XqWVcXn
M5StickVでは
i2c = I2C(I2C.I2C0, freq=400000, scl=30, sda=31)
pca9685_01 = PCA9685(i2c, 0x40)
のscl=30、sda=31の部分をscl=34、sda=35もしくはscl=35、sda=34に変更してください

PCA9685のI2Cアドレスは自分ものにあわせて適宜変えてください
(デフォルトでは0x40です)
0074774ワット発電中さん垢版2020/01/19(日) 06:31:36.64ID:CdSEQA/j
SPI接続の温度センサーADT7310用の>>63のプログラムを改良してみました

https://pastebin.com/YFgCeRUJ
0075774ワット発電中さん垢版2020/02/01(土) 11:13:05.83ID:Xt1JOYYm
MaixduinoでMaixPyで気温、気圧、湿度センサーのBME280を使ってみました

BME280モジュールはスイッチサイエンスや秋月で売ってます

https://www.switch-science.com/catalog/2236/
https://akizukidenshi.com/catalog/g/gK-09421/

BME280はSPIとI2Cを選べるのですがI2Cで接続での使用です


https://github.com/SWITCHSCIENCE/BME280
今回はここにあるスイッチサイエンスのPython用のサンプルコードを改変して
MaixPyで使えるようにしてみました

気温、気圧、湿度をSerialに表示するだけのプログラムです
改変したコードはこちらです
https://pastebin.com/QyV9qssY

i2c_addressにはBME280のアドレスを入れます(デフォルトは0x76)
M5StickVでもSCL=34 SDA=35もしくはSCL=35 SDA=34にすればおそらく使えると思います
0076774ワット発電中さん垢版2020/02/01(土) 20:09:36.66ID:Xt1JOYYm
MaixduinoでMaixPyでATD7410の温度センサーモジュールを使ってみました


秋月で税込み500円で売ってます
http://akizukidenshi.com/catalog/g/gM-06675/


気温を5秒おきにシリアルに表示するだけのプログラムです
https://pastebin.com/ButCuNtx

M5StickVの人は74行目のscl=30, sda=31のところを
scl=34, sda=35もしくはscl=35, sda=34に変更すれば使えると思われます


気温を5秒おきにLCDにも表示するバージョンです
https://pastebin.com/QbbdwtU6

LCD表示バージョンはMaixシリーズでしか使えないと思われます
0077774ワット発電中さん垢版2020/02/01(土) 21:10:57.94ID:Xt1JOYYm
新しい仲間ができたようです

UnitV AI Camera
https://www.switch-science.com/catalog/6212/
税込単価 2,145 円

> M5StickVとの大きな違いは液晶やバッテリー、ジャイロセンサが非搭載になり、
> 小型軽量になった点です。
> M5StickCと組み合わせることで、そのあたりを補完してお使いいただくことが可能です。
>
> Sipeed社の協力により、K210用のMicroPython環境であるMaixPyで開発が可能です。
> カメラには高感度なOmniVision社製OV2640イメージセンサ(2メガピクセル)を搭載しています。
0080774ワット発電中さん垢版2020/02/01(土) 22:17:49.98ID:Xt1JOYYm
>>78
MaixPyからWiFi使うならMaixduinoがいいですね
SPI接続ですし、安定して使えます
ただし、ArduinoからはオンボードのWiFiは使えないです
Arduinoから使う場合は外付けでESP8266をUARTでつなげば使えます

Maixduinoで注意が必要なのはJTAG用のピンが出てない点です
MaixBitならJTAG用のピンが出てるのでFT2232H MINI MODULEをつなぐことで
PlatformIOでCやC++でデバッグができるようになります
まあ、デバッグ機能は必要ない人も多いでしょうが
0083774ワット発電中さん垢版2020/02/01(土) 22:49:27.57ID:Xt1JOYYm
あと、MaixPyでWiFiの関数はこれだけです
サーバの機能はありません
version -- <function>
adc -- <function>
scan -- <function>
connect -- <function>
disconnect -- <function>
isconnected -- <function>
ifconfig -- <function>
ping -- <function>

サンプルはここです
https://github.com/sipeed/MaixPy_scripts/tree/master/network
demo_esp32と書かれてるのがMaixduino用のWiFiのサンプルプログラムです
0084774ワット発電中さん垢版2020/02/02(日) 13:04:51.61ID:ubTg3l+W
>>77のUnitV AI CameraのカメラはOV2640か
Maixduinoと同じやつだね
M5StickVみたいにMaixPyのみでArduinoは使えないのかな?
0086774ワット発電中さん垢版2020/02/02(日) 13:16:36.17ID:ubTg3l+W
K210搭載のモジュールはRAMが6MBもあるので
MicroPythonやるなら最適だと思うけどね
MicroPythonのMaixPyが使えるんだから
0087774ワット発電中さん垢版2020/02/02(日) 17:03:04.83ID:Q9Ayv7mC
>>83
ありがとう。
そこは見つけてた。
MAix Dockやbitのモジュールセットは技適の関係でおおっぴらに売れないだろうけど、もしかしたらってのがありました。
M5StackV+が出てくれば手っ取り早くて良いんですけどね。
0098774ワット発電中さん垢版2020/02/09(日) 02:36:46.20ID:8pfKKO4u
Maixduinoなら東京ラジオデパート3FのShigezoneで3300円で売ってたよ
Maix Goは売り切れってなってた
0100774ワット発電中さん垢版2020/02/09(日) 08:54:40.61ID:4TKlsJn4
sipeedは製造は深センでやってるのかな?
だと品薄になりそう。
とりあえずMaix bitとMaixduinoは1台ずつ入手済みだから暫くは問題無いけど。
0101774ワット発電中さん垢版2020/02/09(日) 09:45:34.06ID:8pfKKO4u
スイッチサイエンスでSipeed RISC-Vデバッガ売ってたんだね
安かったので買ってしまった
やっぱりJTAGピンが外に出てないMaixduinoでは使えない模様
ESP32で使う方法を見つけたからいいけど

使ってるチップはFT2232Dで秋月のFT2232Dモジュールより安いね
0103774ワット発電中さん垢版2020/02/09(日) 10:22:12.74ID:8pfKKO4u
MaixduinoのArduinoのI2CのライブラリのWire.endTransmission()だけど
Wire.endTransmission(false);
とsendStopにfalseを指定してもきちんと働いてないようです

温度センサーモジュールのADT7410で、0x00以外のレジスタの値を読み出せない
ESP32とArduino Pro miniの互換機で試したところ正常に読み出せました

ライブラリのWire.cppを見てみたところ
TwoWire::endTransmission(bool sendStop)から
TwoWire::writeTransmission()とTwoWire::readTransmission()を呼び出してるようですが
この2つの関数でsendStopが無視されてる模様
0104774ワット発電中さん垢版2020/02/09(日) 12:50:42.77ID:8pfKKO4u
自己レスです

kendryte-standalone-sdkのi2c_recv_dataを直接呼び出すことで解決しました

インクルードファイルは
#include <kendryte-standalone-sdk/lib/drivers/include/i2c.h>

int i2c_recv_data(i2c_device_number_t i2c_num, const uint8_t *send_buf, size_t send_buf_len, uint8_t *receive_buf,
size_t receive_buf_len)

i2c_numがI2CのBus番号
WireがI2C_DEVICE_0、Wire1がI2C_DEVICE_1、Wire2がI2C_DEVICE_2で
i2c_device_number_tでキャストしてあげないとエラーが出る
send_bufにi2cデバイスの読み取りたいレジスタのアドレスを格納
send_buf_lenがsend_bufのデータの大きさ
receive_bufで読み込むバッファを指定
receive_buf_lenでreceive_bufの大きさを指定

ATD7410のステータスレジスタを読み込む例はこんな感じ
uint8_t status_reg;
uint8_t reg_addr = 0x02;
i2c_recv_data((i2c_device_number_t)I2C_DEVICE_0, &reg_addr, 1, &status_reg, 1);
0105774ワット発電中さん垢版2020/02/09(日) 12:58:14.53ID:8pfKKO4u
Arduinoからi2c_recv_data()を使うときは特に初期は必要ないようです
(おそらく、Wireのライブラリの方で初期化してる)
レジスタの内容を読み込みたい時だけ直接i2c_recv_data()を呼び出せばいいようです
0106774ワット発電中さん垢版2020/02/10(月) 08:06:51.29ID:k864Uy1H
上の例ではプログラムの先の方で
同じI2Cデバイス宛てにWire.endTransmission()を呼んでたので
初期化しなくてもよかったようです
I2Cデバイスへの初めての読み込みでi2c_recv_dataを使う場合や
アドレスの違うI2Cデバイスへの読み込みでi2c_recv_dataを使う場合は
初期化をしてI2Cデバイスのアドレスを設定する必要があるようです

初期化は下記関数を使います
i2c_init(i2c_device_number_t i2c_num, uint32_t slave_address, uint32_t address_width,
uint32_t i2c_clk);

ここで
i2c_numがI2CのBus番号
WireがI2C_DEVICE_0、Wire1がI2C_DEVICE_1、Wire2がI2C_DEVICE_2で
i2c_device_number_tでキャストしてあげないとエラーが出る
slave_addressがI2Cデバイスのアドレス
address_widthがI2Cデバイスのアドレス幅で7bitもしくは10bitどちらかを指定するようです
i2c_clkがI2Cのクロック周波数です

ADT7410のI2Cアドレスが0x48だとすると初期化設定例は
i2c_init((i2c_device_number_t)I2C_DEVICE_0, 0x48, 7, Wire.getClock());
0107774ワット発電中さん垢版2020/02/16(日) 08:04:36.64ID:6TUPzqjA
中国の新型コロナ検出AIってK210かな?
学習はクラウド使ってそうだけど。
0108774ワット発電中さん垢版2020/03/09(月) 05:34:00.99ID:9wKrufsq
M5StickVとUNIT V
Groveポートが2つあればよかったのに
K210はFPIOAでピンの機能を自由に変更できるのがいいね
0109774ワット発電中さん垢版2020/03/09(月) 06:05:25.04ID:9wKrufsq
MaixPyはSSLを使えないことを除けばかなり高機能なMicroPython実装だね
大容量のRAMを活かした仮想フレームバッファで画像を楽に扱えるのがかなりいい
0110774ワット発電中さん垢版2020/03/15(日) 05:41:58.84ID:Gm3vCHEC
MicroPythonでグラフィックス扱うならMaixシリーズが一番いいみたい
本家MicroPythonやCircuitPythonのLCDライブラリはPythonで描画するので遅い
MicroPython lobo版はMicroPython自体がLCDに対応してるので対応するLCDを使うと速いが
MicroPython lobo版は直接LCDに描画するので仮想フレームバッファでイメージを扱えないし
ESP32と比べてMaixシリーズはMicroPythonでは6倍くらい速い
0111774ワット発電中さん垢版2020/03/26(木) 09:01:33.38ID:ToI4vXt0
Sipeed社は良い製品を作る
0112774ワット発電中さん垢版2020/04/18(土) 19:19:15.80ID:I/lCD19r
M5StickV手にいれたがセンサーのリセットでエラーが出る…ファーム書き換えたけど駄目だな
MaixPyでLCD、LEDを制御することはできたから単にカメラの不良かな。
最初にレンズが転がってたのが関係あんのかなあ
0113774ワット発電中さん垢版2020/04/19(日) 08:17:54.03ID:+GCyV03F
この手の製品は初期不良交換のみなので
初期不良ならすぐに購入したお店に連絡取った方がいいよ
0114774ワット発電中さん垢版2020/04/19(日) 09:53:16.35ID:+GCyV03F
>>38の部分で抜けてたのがあったので追記します
Humblesoft_GFX.cppの

元ファイルの41行目を変更
textsize_x, textsize_y);
の部分を下のように変更
textsize);

元ファイルの68行目を変更
textsize_x, textsize_y);
の部分を下のように変更
textsize);
0115774ワット発電中さん垢版2020/04/19(日) 10:35:16.10ID:+GCyV03F
追記
41行目、68行目というのは>>38の最後の部分を追記する前の行番号です
追記後の行番号は55行目、82行目になります
0116774ワット発電中さん垢版2020/04/19(日) 10:35:42.96ID:+GCyV03F
あとは、MaixduinoのライブラリのSipeed_ST7789.hとSipeed_ST7789.cppを
platformioのプロジェクトのsrcフォルダにコピーして名前を変更


>>38
>LCDドライバのSipeed_ST7789.hとSipeed_ST7789.cppを名前を変えてコピーして
>Adafruit_GFXからの継承ではなく、Humblesoft_GFXからの継承に改変

この部分は具体的に書くと下記のようになります


Sipeed_ST7789.hをHumblesoft_Sipeed_ST7789.hへ
Sipeed_ST7789.cppをHumblesoft_Sipeed_ST7789.cppへ


Humblesoft_Sipeed_ST7789.hの下記部分を変更
6行目の
#include <Adafruit_GFX.h>

この部分を下記のように変更
#include <Humblesoft_GFX.h>



48行目の
class Sipeed_ST7789 : public Adafruit_GFX{

この部分を下記のように変更
class Sipeed_ST7789 : public Humblesoft_GFX{
0117774ワット発電中さん垢版2020/04/19(日) 10:35:58.33ID:+GCyV03F
Humblesoft_Sipeed_ST7789.cppの下記部分を変更

この部分を
#include "Sipeed_ST7789.h"
#include "lcd.h"
#include "sysctl.h"
#include "utils.h"

下記のように変更
#include "Humblesoft_Sipeed_ST7789.h"
#include <lcd.h>
#include <sysctl.h>
#include <utils.h>

8行目の
:Adafruit_GFX(w,h),

の部分を下記のように変更
:Humblesoft_GFX(w,h),
0118774ワット発電中さん垢版2020/04/19(日) 10:43:35.51ID:+GCyV03F
使用するファイルは下記のようになります
全部、PlatformIOのプロジェクトのsrcに置きます

Bitmap.cpp
Bitmap.h
Humblesoft_GFX.h
Humblesoft_GFX.cpp
Fontx.h
Fontx.cpp
result.h
uni2sjis.h
uni2sjis.c
uni2sjis_tbl.c
Utf8Decoder.h
Utf8Decoder.cpp
Humblesoft_Sipeed_ST7789.h
Humblesoft_Sipeed_ST7789.cpp
main.cpp
0119774ワット発電中さん垢版2020/04/23(木) 15:55:48.71ID:vYxLxDSP
Sipeed MaixCube is a Fully Integrated AI Development Platform Powered by Kendryte K210 RISC-V SoC
https://www.cnx-software.com/2020/04/21/sipeed-maixcube-is-a-fully-integrated-ai-development-platform-powered-by-kendryte-k210-risc-v-soc/
https://www.cnx-software.com/wp-content/uploads/2020/04/Sipeed-Maixcube-768x336.jpg
https://www.cnx-software.com/wp-content/uploads/2020/04/MaixCube-All-in-one-K210-Development-Platform-768x594.jpg
0122774ワット発電中さん垢版2020/04/24(金) 00:55:02.65ID:ED6ESRz6
ピンが6本出てるからM5StickVより拡張性はあるっぽいね
I2CとSPI
SPIとUART
I2CとUART
なんて組み合わせが出来るんじゃない?
0123774ワット発電中さん垢版2020/04/24(金) 01:08:50.32ID:ED6ESRz6
Groveポートもあるのか
I2C、UART、SPIの組み合わせも出来るね

SPI-MODポートのIO6、IO7、IO8はESP8266と接続すること考えてそう
(IO6がRX、IO7がTX、IO8がESP8266のEN接続用)

Arduinoも使えればかなりいいね
0125774ワット発電中さん垢版2020/04/25(土) 15:11:58.29ID:YNeUPGGp
$24.9だから日本だと4000円くらいになっちゃうかもね
Shigezoneで扱いがあれば安く買えるかも
まだプレオーダーの段階なのでまだ先になるだろうけどね
0127774ワット発電中さん垢版2020/06/03(水) 16:21:56.07ID:wBlJe4uy
TTGO T-Watch K210 / K210 AIOT Watches Perform Face Detection with Kendryte K210 RISC-V Processor, ESP32 WiSoC
https://www.cnx-software.com/2020/06/03/ttgo-t-watch-k210-k210-aiot-watches-perform-face-detection-with-kendryte-k210-risc-v-processor-esp32-wisoc/
https://www.cnx-software.com/wp-content/uploads/2020/06/T-Watch-K210-AIOT-Pinout.jpg

  AI Processor Kendryte K210 RISC-V Dualcore 64bit with FPU with 8MB SRAM
  Storage 16MB QSPI flash, MicroSD card socket
  Display I/F FPC connect for external display (not included)
  Camera 2MP OV2640 sensor
  Audio MAX98357A Audio codec; CVSD & SBC audio encoding
  Connectivity 2.4 GHz 802.11b/g/n WiFi 4 up to 150 Mbps, Bluetooth 4.2 BR/EDR and BLE
  Debugging USB-C port via CP2104
  Expansion
    UART, SPI, I2C, PWM, I2S
    I2C grove connector
    I/O Voltage 3.3V / 1.8V operation
  Misc Power and boot buttons; RTC
  Power Supply -5V DC/1A DC input; AXP202 PMIC
  Dimensions & Weight TBD
0128774ワット発電中さん垢版2020/06/03(水) 16:22:26.10ID:wBlJe4uy
age
0129774ワット発電中さん垢版2020/06/05(金) 14:15:18.31ID:5la78J+m
>>127
でもお高いんでしょう?
0130774ワット発電中さん垢版2020/06/22(月) 20:38:49.53ID:ibnC1bZx
MaixduinoでオンボードのESP32をArduinoから使えたので報告します

ライブラリはこれです
https://github.com/arduino-libraries/WiFiNINA

上記ライブラリと、Maixduinoのframework-maixduinoを一部改変します

framework-maixduinoの方は
PlatformIOの方は
C:\Users\ユーザ名\.platformio\packages\framework-maixduino\variants\sipeed_maixduino
Arduino IDEの方は
C:\Users\ユーザ名\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\variants\sipeed_maixduino
ここのpins_arduino.hを一部改変します

74行目の
#define MD_PIN_MAP(fpio) (((fpio) < 17) ? _maixduino_pin_map[(fpio)] : (fpio))

static const uint8_t _maixduino_pin_map[17] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16};

の部分を
#define MD_PIN_MAP(fpio) (((fpio) < 22) ? _maixduino_pin_map[(fpio)] : (fpio))

static const uint8_t _maixduino_pin_map[22] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16, 8, 9, 25, 6, 7};

に改変
0131774ワット発電中さん垢版2020/06/22(月) 20:39:53.08ID:ibnC1bZx
続き


WiFiNINAのライブラリの方は
srcの中のutilityの中の52行の次の部分を
static uint8_t SLAVESELECT = 10; // ss
static uint8_t SLAVEREADY = 7; // handshake pin
static uint8_t SLAVERESET = 5; // reset pin

次のようにします

static uint8_t SLAVESELECT = 19; // ss pin 25
static uint8_t SLAVEREADY = 18; // pin 9 handshake pin
static uint8_t SLAVERESET = 17; // pin 8reset pin
static uint8_t NINA_GPIO0 = 18; // pin 9
#define PINS_COUNT 22

これだけです。
これでとりあえず、exampleのWiFiPingは成功しました
(PlatformIOだと先頭に下記内容を追加する必要があります)

#include <Arduino.h>
void printWiFiData();
void printCurrentNet();
void printMacAddress(byte mac[]);
0133774ワット発電中さん垢版2020/06/22(月) 21:02:06.13ID:ibnC1bZx
誤記がありました
改変するファイルのファイル名が抜けてました

正しくはこうです
WiFiNINAのライブラリの方は
srcの中のutilityの中のspi_drv.cppの52行の次の部分を
static uint8_t SLAVESELECT = 10; // ss
static uint8_t SLAVEREADY = 7; // handshake pin
static uint8_t SLAVERESET = 5; // reset pin

次のようにします

static uint8_t SLAVESELECT = 19; // ss pin 25
static uint8_t SLAVEREADY = 18; // pin 9 handshake pin
static uint8_t SLAVERESET = 17; // pin 8reset pin
static uint8_t NINA_GPIO0 = 18; // pin 9
#define PINS_COUNT 22
0134774ワット発電中さん垢版2020/06/23(火) 21:53:34.85ID:nqVjLTks
WiFiWebServerを試してみたところうまく動きませんでした
NINA_GPIO0がHIGHになってないとSpiDrv::available()で1を返さないので
WiFiServer.cppのWiFiServer::available()の中で呼ばれる
server_drv.cppの中のServerDrv::availServer(_sock)が
_sockの値を取得するまえにすぐに返ってきてしまいます

NINA_GPIO0はIO32(Maixduinoの6番目のピン)に割り当てみます
なので、srcの中のutilityの中の52行のspi_drv.cppの次の部分を
static uint8_t SLAVESELECT = 10; // ss
static uint8_t SLAVEREADY = 7; // handshake pin
static uint8_t SLAVERESET = 5; // reset pin
この部分はこうなります

static uint8_t SLAVESELECT = 19; // ss pin 25
static uint8_t SLAVEREADY = 18; // pin 9 handshake pin
static uint8_t SLAVERESET = 17; // pin 8reset pin
static uint8_t NINA_GPIO0 = 6; // pin 32
#define PINS_COUNT 22

次にsrcのutilityの中のspi_drv.cppの563行目を下記のように変更してください

int SpiDrv::available()
{
return (digitalRead(NINA_GPIO0) != LOW);
}
この部分を
int SpiDrv::available()
{
// return (digitalRead(NINA_GPIO0) != LOW);
return 1;
}
0135774ワット発電中さん垢版2020/06/23(火) 21:54:34.33ID:nqVjLTks
まとめると

WiFiNINAのライブラリはここ
https://github.com/arduino-libraries/WiFiNINA

Maixduinoで使えるように
上記ライブラリと、Maixduinoのframework-maixduinoを一部改変します

framework-maixduinoの方は
PlatformIOの方は
C:\Users\ユーザ名\.platformio\packages\framework-maixduino\variants\sipeed_maixduino
Arduino IDEの方は
C:\Users\ユーザ名\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\variants\sipeed_maixduino
ここのpins_arduino.hを一部改変します

74行目の
#define MD_PIN_MAP(fpio) (((fpio) < 17) ? _maixduino_pin_map[(fpio)] : (fpio))

static const uint8_t _maixduino_pin_map[17] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16};

の部分を
#define MD_PIN_MAP(fpio) (((fpio) < 22) ? _maixduino_pin_map[(fpio)] : (fpio))

static const uint8_t _maixduino_pin_map[22] = {4, 5, 21, 22, 23, 24, 32, 15, 14, 13, 12, 11, 10, 3, 31, 30, 16, 8, 9, 25, 6, 7};

に改変
0136774ワット発電中さん垢版2020/06/23(火) 21:55:04.09ID:nqVjLTks
続き

WiFiNINAのライブラリの方は下記のように改変します
NINA_GPIO0はIO32(Maixduinoの6番目のピン)に割り当てありますが適当な使ってないピンを割り当ててください
srcの中のutilityの中の52行のspi_drv.cppの次の部分を
static uint8_t SLAVESELECT = 10; // ss
static uint8_t SLAVEREADY = 7; // handshake pin
static uint8_t SLAVERESET = 5; // reset pin
この部分はこうなります

static uint8_t SLAVESELECT = 19; // ss pin 25
static uint8_t SLAVEREADY = 18; // pin 9 handshake pin
static uint8_t SLAVERESET = 17; // pin 8reset pin
static uint8_t NINA_GPIO0 = 6; // pin 32
#define PINS_COUNT 22

次にsrcのutilityの中のspi_drv.cppの563行目を下記のように変更してください

int SpiDrv::available()
{
return (digitalRead(NINA_GPIO0) != LOW);
}
この部分を
int SpiDrv::available()
{
// return (digitalRead(NINA_GPIO0) != LOW);
return 1;
}
0137774ワット発電中さん垢版2020/06/23(火) 21:59:58.58ID:nqVjLTks
https://github.com/arduino-libraries/WiFiNINA/blob/master/examples/WiFiUdpNtpClient/WiFiUdpNtpClient.ino

WiFiNINAのexampleのWiFiUdpNtpClientですが
129行目のsendNTPpacket関数の型がunsigned longなのにreturn文がないために
Maixduinoでは暴走してしまいます。
unsigned longではなくvoidにします

unsigned long sendNTPpacket(IPAddress& address) {

これを

void sendNTPpacket(IPAddress& address) {

にします
0138774ワット発電中さん垢版2020/06/24(水) 18:36:09.92ID:dOpT5/L4
K210だとリッチすぎ、GD32VF103だとプアすぎ
STM32F7とかSTM32F4クラスのRISC-Vマイコンが欲しい
0139774ワット発電中さん垢版2020/06/25(木) 07:04:34.51ID:JzIhqSS4
RISC-Vってあっちこっちから出てるけど、どのRISC-Vも同じコンパイラでコード生成できるもんなの?
0140774ワット発電中さん垢版2020/06/26(金) 04:48:40.29ID:LZTMupFO
ArduinoやPlatformIO使う分には勝手にgccのツールチェインが入るから
そのあたりは気にすることはないね
0143774ワット発電中さん垢版2020/06/26(金) 07:55:27.75ID:EhWT5Fr2
>>141,142
コアの計算能力はともかくメモリが少ない。RAMが16KBや20KBじゃ8/16bitマイコン並みだし
ROMも少ないしせっかくの32bitマイコンなのにマルチメディアデータを扱ったりするのが難しい
0145774ワット発電中さん垢版2020/06/28(日) 15:04:22.90ID:EJHUg9/I
>>144
K210はRISC-Vお試しとしてはありなんだろうけど結構電気食いというかラズパイzeroくらい電気いるように見える
組み込み制御向けのハイパフォーマンスマイコン・・STMならSTM32F7とかSTM32F4クラス、ルネエレならRX600やRX700クラス
というかこの辺と比較してみたい
0146774ワット発電中さん垢版2020/06/28(日) 15:48:23.85ID:vtJU8P9w
>>145
そこまで電気食わないよ
触っても全然熱くないというかほとんど温度上昇感じない
Cortex-M7が視野に入ってるならK210を使ってもいいはず
Cortex-M7を使ったTeensy 4.0なんてRaspberry Pi Zeroより速いんだから
0147774ワット発電中さん垢版2020/06/28(日) 15:52:16.34ID:vtJU8P9w
ちなみにMHzあたりの性能はK210よりCortex-M7の方が上
K210は64bitというだけでそこまでリッチなコアじゃないよ
Arduino計測すると性能的にはクロックも高くてMHzあたりの性能も高いTeensy 4.0の方が上
ただ、MicroPythonで計算するとK210の方が性能出るんだよね
0148774ワット発電中さん垢版2020/06/28(日) 16:33:31.51ID:vtJU8P9w
Teensy 4.0はNXP iMXRT1062というマイコン使っててCPUコアはCortex-M7の600MHz
0149774ワット発電中さん垢版2020/06/28(日) 17:10:26.47ID:vtJU8P9w
Dhrystone 2.1の結果はこんな感じ

Maixduino(K210 RISC-V RV64GC 400MHz)
Dhrystone/s : 1338079.0
DMIPS     : 761.5703
DMIPS/MHz  : 1.903926

Teensy 4.0(iMXRT1062 Cortex-M7 600MHz)
Dhrystone/s : 2690341.8
DMIPS     : 1531.2133
DMIPS/MHz  : 2.552022
0150774ワット発電中さん垢版2020/06/28(日) 19:11:19.70ID:EJHUg9/I
>>146-178
サンキュ。そうでもないのか。ググると出てきたデータシートを見てみたら
> 2.3 Power SuppliesSupply
> Core 0.9V VDD 0.9V Max 2000mA
とか書いてあったから結構食うのかと思った
買ってみるかなぁ・・・もっとも秋月は土日閉まっているから別のルートを考える必要があるが
0151774ワット発電中さん垢版2020/06/28(日) 19:49:46.61ID:vtJU8P9w
買うのか
STM32F7やRX700使うのかと思った

MaixduinoはWiFiが使える代わりにJTAGの端子が出てないのでデバッガが使えない
MaixbitならJTAGの端子は出てる

MaixbitやMaixduinoならShigezoneでも売ってるよ
https://www.shigezone.com/?product=maix-bit_set
5月30日から東京ラジオデパート3Fの店舗が再開してるらしい
土日は11:00からみたい
営業してるかどうか問い合わせてみたら?
0152774ワット発電中さん垢版2020/06/28(日) 21:31:31.26ID:EJHUg9/I
>>151
あくまで評価用だし
RX72Nはすでに買っている
STM32F7はどれにしようか迷い中

世の中ARMだらけだけどアセンブラも考慮するならRXは良くできていると思う
0153774ワット発電中さん垢版2020/06/29(月) 08:08:27.35ID:OLhfdQAp
K210について調べていたけどハードウェアマニュアル的な資料が見あたらない
割り込みやレジスタの使い方とか何処に書いてあるのだろうか。データシートも公式にはなさそうだし
まさか初期のSPRESENSEみたいにSDKを調べろと?
0156774ワット発電中さん垢版2020/06/30(火) 18:54:46.51ID:RxJbXPgH
>>155
マジか。となるとSDKにない使い方は難しいわけか
GD32VF103のマニュアルはそれなりに書いてあるようだ
うーむ、難しい・・
0158774ワット発電中さん垢版2020/06/30(火) 21:19:41.61ID:j/lrpME7
>>157
それは知っている。組み込みマイコンだからかフラッシュプログラマを作るための資料も用意されているようだ
個人的にGD32VF4とか出てきたらなかなかおもしろそう。ペリフェラルもいっぱいあるし
GD32VF103にSRAM外付けも考えたけどバーストモードがないみたいで断念(STM32F103にはある)
0160774ワット発電中さん垢版2020/08/25(火) 06:58:22.62ID:IDPQMyyU
Sipeed Maix Amigo is a Portable 64-bit RISC-V AI Development Kit with Display and Cameras
https://www.cnx-software.com/2020/08/24/sipeed-maix-amigo-portable-64-bit-risc-v-ai-development-kit-display-cameras/

https://www.cnx-software.com/wp-content/uploads/2020/08/Sipeed-Maix-Amigo.jpg

  SoC Kendryte K210 Dual-core 64-bit RISC-V (RV64GC) processor with FPU @ 400 MHz
     (overclockable to 500MHz),
     8MB SRAM,
     built-in AI accelerators for video and audio
  Storage 16MB Flash, MicroSD card slot up
  Display 3.5-inch TFT capacitive touch screen display with 480×320 resolution
  Camera
    VGA front-facing camera up to 30 fps (GC0328 sensor)
    VGA rear camera up to 60 fps (OV7740 sensor)
  Audio 6+1 microphone array
  USB 1x USB Type-C port for power and programming
  Expansion
    3x Grove ports with I2C, GPIO, etc…
    3x 8-pin SP-MOD headers with GPIOs, 3.3V, and GND signals;
     compatible with ESP-01 ESP8266 WiFi module, PSRAM modules, etc…
  Sensor Accelerometer
  Misc Reset button, 3x function buttons, 3x LEDs
  Battery 520 mAh Lithium battery
  Power Supply Via USB-C port
  Dimensions 104.3 x 63.3 x 16.5mm
0162774ワット発電中さん垢版2020/10/08(木) 22:13:49.93ID:OHqFEtj6
MaixduinoでArduinoでボードライブラリ0.3.11でカメラが使えない不具合について
別のスレでMaixduinoでカメラが使えないと指摘されたので
0.3.9と0.3.11のカメラのライブラリを比較したところ
Camera.h
79行目
virtual void setRotation(uint8_t rotation) = 0;
ここだけを中途半端にsetRotaionからsetRotationに修正してあってそれが原因でエラーが出てる模様


下記も修正するとうまくいく
Sipeed_OV2640.h
60行目
virtual void setRotaion(uint8_t rotation);
これを下記に修正
virtual void setRotation(uint8_t rotation);

Sipeed_OV2640.cpp
724行目
void Sipeed_OV2640::setRotaion(uint8_t rotation)
これを下記に修正
void Sipeed_OV2640::setRotation(uint8_t rotation)
0165774ワット発電中さん垢版2020/10/14(水) 13:08:07.96ID:D6Wnc/Bi
>>163
別スレでトラブっていた者です。
いろいろ試行錯誤したのですが、
結局のところライブラリ差替えだけではサンプルプログラムはまともには動かず、
結局OV2640のカメラを買って取り替えるはめになりました。
0168774ワット発電中さん垢版2020/10/24(土) 16:22:11.44ID:R5V2Ewvn
Maixduinoでbusyboxが動作したのでその方法を書きます

busyboxしか動作しないのでできることは限られます
全く実用的ではないです
あくまでMaixduino上でLinuxが動くという実験になります
MaixシリーズならMaixduino以外でも動作すると思われます


Maixduinoでbusyboxを使う
https://pastebin.com/uTtmnx71

busyboxでawkを追加できるので簡単なテストプログラムを用意してみました
https://pastebin.com/qgEHT9m5

buildrootのbusyboxにプログラムを追加する
https://pastebin.com/gXFxieJa


備考
ファイルシステムがRAMディスクなので
Maixduinoを再起動するとMaixduinoで作成したファイルが全部消えるので要注意です
0169774ワット発電中さん垢版2020/10/24(土) 20:28:57.05ID:R5V2Ewvn
今度はArduinoでの話ですが
MaixシリーズのArduinoではデフォルトのオプションでは
double型の演算がソフトウェアエミュレーションで実行されることを確認しました

whetstoneをArduinoで動くようにしてMaixduinoでも計測してみたのですが
busyboxで計測したものと比べて
MaixduinoのArduinoでは非常に遅い結果となりました

PlatformIOでビルドしてできるfirmware.elfをobjdumpで
逆アセンブルして確認したのですが
どうやらMaixシリーズのArduinoのデフォルトのオプションでは
double型の演算はFPUの命令を使わずに、ソフトウェアエミュレーションで演算してるようです
FPUの命令を使わずに浮動小数点演算のソフトウェアエミュレーションの関数を呼び出してます

PlatformIOはplatformio.iniでbuild_flagsとbuild_unflagsを指定することで
コンパイラオプションを指定できるのでFPU命令を使用するようにならないか試してみました

K210のツールチェインのgccやg++ではデフォルトで
--with-abi=lp64fと--with-arch=rv64imafcのオプションが付いてるようです
つまり、ハードウェアでdouble型に対応しないRISC-V用のABIとアーキテクチャが指定されています

rv64imafcは64bitRISC-Vで乗除算命令、atmic命令、単精度浮動小数点命令、縮小命令に対応してものになります
K210は倍精度浮動小数点演算に対応しているので、rv64imafdcもしくはrv64gcが指定できるはずです
lp64fは関数の呼び出しでfloat型のパラメーターや戻り値をFPUのレジスタで受け渡して
double型のパラメーターや戻り値は整数レジスタで受け渡しをするABIです
0170774ワット発電中さん垢版2020/10/24(土) 20:29:31.02ID:R5V2Ewvn
いろいろ試したところPlatformIOのplatformio.iniでオプションを
下のように指定するとコンパイラがFPU命令を生成するようになりました

build_unflags = -march=rv64imafc
build_flags = -mabi=lp64f -march=rv64gc

objdumpの逆アセンブルで確認してdouble型のFPU命令が生成されていることを確認しました


-mabi=lp64fの代わりに-mabi=lp64dも試してみましたが
コンパイルかリンクでエラーが出てビルドが成功しませんでした

また、デフォルトではサイズ優先最適化の-Osが付いているので
速度優先にしたい場合は-O2や-O3を指定して
build_unflags = -Os -march=rv64imafc
build_flags = -O2 -mabi=lp64f -march=rv64gc
または
build_unflags = -Os -march=rv64imafc
build_flags = -O3 -mabi=lp64f -march=rv64gc
のように指定した方がサイズは少し大きくなりますが実行速度は速くなります

PlatformIOのplatformio.iniでオプションを
build_unflags = -Os -march=rv64imafc
build_flags = -O3 -mabi=lp64f -march=rv64gc
このようにすることでWhetstoneの結果がかなり改善されました
0171774ワット発電中さん垢版2020/10/27(火) 21:54:01.70ID:3FNQlp8P
下記のようにAruino IDEでコンパイラオプションを変更して
Maixduinoでdhrystoneとwhetstoneを実行してみました
(オプションを変更したら一度ソースファイルすべてを保存して保存日時を更新してください、
そうしないと再ビルドされないかもしれません)

オプション変更前(-mabi=lp64f -march=rv64imafc -Os)

dhrystone
Microseconds for one run through Dhrystone: 1.5
Dhrystones per Second: 650801.5

whetstone
Loops: 7000, Iterations: 1, Duration: 23.251999 sec.
C Converted Double Precision Whetstones: 30.1 MIPS


オプション変更後(-mabi=lp64f -march=rv64imafc -O2)

dhrystone
Microseconds for one run through Dhrystone: 0.8
Dhrystones per Second: 1279344.9


whetstone
Loops: 50000, Iterations: 1, Duration: 23.533020 sec.
C Converted Double Precision Whetstones: 212.5 MIPS


大幅に実行速度が速くなりました


Arduino IDEでMaixシリーズのコンパイラオプションを変更する方法はこちらです
(自己責任でお願いします)
https://pastebin.com/E66j9e7f
0172774ワット発電中さん垢版2020/10/27(火) 21:55:22.45ID:3FNQlp8P
DhrystoneとWhetstoneのソースコードはこちらです

Dhrystone
Arduino互換機用Dhrystone 2.1のソースコード(PlatformIO IDE用)

main.cpp
https://pastebin.com/r4apdxaA

mylib.cpp
https://pastebin.com/MRkdRitB

dhry.h
https://pastebin.com/cwTrL2Ex

dhry_1.c
https://pastebin.com/n2AbNiRc

dhry_2.c
https://pastebin.com/TusHM9X6



Whetstone.cのArduino互換機用のソース(PlatformIO IDE用)
main.cpp
https://pastebin.com/AfdU9rbi

mylib.cpp
https://pastebin.com/LqFD9GBW

whetstone.c
https://pastebin.com/x6HFC051



ターミナル上で小文字の"s"キーを押すとスタートします

Arduino IDEでもmain.cppを.inoファイルにすることで
そのままで動作します
0173774ワット発電中さん垢版2020/10/29(木) 22:06:51.88ID:plAqF9yH
温度センサーのADT7410とADT7310のMaixシリーズ用のArduinoのスケッチです
以前、MaixPy用のみを投稿しててArduino用を投稿してなかったので今更ですが投稿します

ADT7410はI2C、ADT7310はSPIで動作します
ともに秋月で税込み500円で売ってます
https://akizukidenshi.com/catalog/g/gM-06675/
https://akizukidenshi.com/catalog/g/gM-06708/


これらのスケッチは気温を5秒おきにシリアルとLCDに表示するだけのスケッチです


MaixシリーズのArduino用のADT7410のスケッチ

https://pastebin.com/w75GcEVf


MaixduinoではSDA、SCLと書かれてるピン
Maixduino以外の機種ではSDAが31番ピン、SCLが30番ピンです

MaixシリーズではWire.endTransmission()のsendStopが無視されてしまうようで
ADT7410の0x00以外のレジスタの値が読み込めませんでした
一部でkendryte-standalone-sdkのライブラリを直接使うことで
ADT7410の0x00以外のレジスタの値を読み込んでます
0174774ワット発電中さん垢版2020/10/29(木) 22:09:57.69ID:plAqF9yH
MaixduinoのArduino用のADT7310のスケッチ
MaixシリーズのMaixduino以外の機種ではpinCSの値を変更してください

https://pastebin.com/FCBqYfFq


ADT7310はMaixduinoの
IO21ピンにCS    
IO22ピンにMISO
IO23ピンにSCK
IO24ピンにMOSI
を接続してみました

Maix BitなどのMaixシリーズのMaixduino以外の機種は
21番ピンにCS
22番ピンにMISO
23番ピンにSCK
24番ピンにMOSI
になると思います

SPI.beginをパラメーター無しで呼び出すと
デフォルトではK210のピン番号で
MISOが26番ピン、SCKが27番ピン、MOSIが28番ピンCSは指定無しになりますが
MaixduinoのピンソケットにはK210のそれらのピンが出てないため
SPI.beginでパラメーターを指定して上のようにSPIのピンを
Maixduinoのピンソケットに出てるピンに変更しました
0176774ワット発電中さん垢版2020/10/31(土) 10:47:56.09ID:PoIv2v2t
Sipeed MaixシリーズのArduino用でRISC-V RV64GC用の
インラインアセンブラを使った簡単なプログラムを書いてみました

MaixシリーズのLCDに簡単な図形を表示するプログラムです
Maixduinoで動作確認しました
Arduino IDE用です


Sipeed MaixシリーズのArduino用のRISC-V RV64GCインラインアセンブラ デモプログラム
https://pastebin.com/UTVk6LsY
0177774ワット発電中さん垢版2020/10/31(土) 16:46:28.16ID:PoIv2v2t
>>176をPlatformIO IDE、Arduino IDEどちらでもビルドできるように修正しました


Sipeed MaixシリーズのArduino用のRISC-V RV64GCインラインアセンブラ デモプログラム(PlatformIO IDE対応版)

https://pastebin.com/Yih6K59b


PlatformIO IDEでビルドする場合はplatformio.iniに
下記オプションのいずれかを指定してください

build_unflags = -march=rv64imafc
build_flags = -mabi=lp64f -march=rv64gc

build_unflags = -Os -march=rv64imafc
build_flags = -O2 -mabi=lp64f -march=rv64gc

build_unflags = -Os -march=rv64imafc
build_flags = -O3 -mabi=lp64f -march=rv64gc



Arduino IDEでビルドする場合は下記のやり方でオプションを変更してください
(オプション変更に関しては自己責任でお願いします)

https://pastebin.com/E66j9e7f
0178774ワット発電中さん垢版2020/11/01(日) 12:25:15.88ID:Ggm+nbqY
MaixシリーズのArduinoでBME280をI2Cで使ってみました

SparkFunのBME280ライブラリがそのまま使えます

SparkFunのBME280ライブラリはここにあります
https://github.com/sparkfun/SparkFun_BME280_Arduino_Library


単にLCDとSeralに温度、湿度、気圧を表示するだけのものです


BME280のサンプルスケッチ
https://pastebin.com/bFk36iGX


スケッチではBME280のI2Cアドレスは0x76にしてあります
BME280のI2Cアドレスに合わせて変更してください


ADT7410ではkendryte-standalone-sdkのI2Cのライブラリを
直接叩く必要がありましたが
BME280は一般的なArduinoと全く同じやり方で扱えます
たいていのI2CデバイスはBME280と同様に一般的なArduinoと同じ方法で使えると思います

MaixduinoではSDA、SCLと書かれてるピン
Maixduino以外の機種ではSDAが31番ピン、SCLが30番ピンです
0179774ワット発電中さん垢版2020/11/01(日) 18:43:26.31ID:Ggm+nbqY
>>176,>>177のプログラムでオプションを変更したくないという方のために
RISC-Vのインライン アセンブラの命令を倍精度浮動小数点命令を使っていたところを
すべて単精度浮動小数点命令にしたバージョンを作ってみました
これならArduino IDEやPlatformIOでオプションを変更せずに
デフォルトのオプションでビルドできます


Sipeed MaixシリーズのArduino用のRISC-V RV64GCインラインアセンブラ デモプログラム(単精度浮動小数点版)

https://pastebin.com/sKqhdLq1
0180774ワット発電中さん垢版2020/11/03(火) 18:09:27.88ID:91AZLfsn
>>176,177,179の修正版をつくりました

プログラムがdummy_func01を呼ばないと動作しないという変な挙動を示していたのは
アセンブラのプログラムが悪かったようです

gccのインラインアセンブラの入力オペランドで割り当てられるレジスタが
関数呼び出しで保存されないレジスタだったため
関数呼び出しで破壊されてしまうのが原因の一つでした

また、call擬似命令で暗黙的に使われるraレジスタを
インラインアセンブラで破壊されるレジスタのリストに加えてなかったのがもう一つの原因でした
これらが原因で変な挙動を示していたようです

これらを修正したバージョンを作ってみました
インラインアセンブラの入力オペランドに割り当てられるレジスタの内容は
アセンブラプログラムの最初のところで
スタックに確保したメモリに保存するようにしました

また、インラインアセンブラの入力オペランドに指定した変数は
割り当てられたレジスタに値を戻してからインラインアセンブラを終了しないと
インラインアセンブラの後に同じ関数内でその変数が使えないようなので
(これもインラインアセンブラ内の関数呼び出しでレジスタの内容が破壊されるのが原因)
アセンブラプログラムの最後に入力オペランドに割り当てられたレジスタに値を戻すようにしました
そしてインラインアセンブラで破壊されるレジスタのリストにra (x1の別名)レジスタを追加しました
0181774ワット発電中さん垢版2020/11/03(火) 18:13:19.69ID:91AZLfsn
>>176,>>177
これらの修正版はこちらです(Arduino IDEとPlatformIO IDEに対応してます)

Sipeed MaixシリーズのArduino用のRISC-V RV64IMAFCインラインアセンブラ デモプログラム(単精度浮動小数点修正版)
https://pastebin.com/LSG7pGwb

こちらは倍精度浮動小数点命令を使用せず単精度浮動小数点命令のみなので
Arduino IDEやPlatformIO IDEでオプションを変更しなくてもビルドできます
0182774ワット発電中さん垢版2020/11/03(火) 18:14:24.68ID:91AZLfsn
>>179の修正版はこちらです(こちらもArduino IDEとPlatformIO IDEに対応してます)
Sipeed MaixシリーズのArduino用のRISC-V RV64GCインラインアセンブラ デモプログラム(倍精度浮動小数点修正版)
https://pastebin.com/gvsybiG0

こちらは倍精度浮動小数点命令を使用するのでオプションの変更が必要です
(Arduino IDE、PlatformIO IDEともにデフォルトのオプションが-march=rv64imafcなため
アセンブラが倍精度浮動小数点命令でエラーを出すため。
-march=rv64imafdcもしくは-march=rv64gcを指定する)

PlatformIO IDEでビルドする場合はplatformio.iniに
下記オプションのいずれかを指定してください

build_unflags = -march=rv64imafc
build_flags = -mabi=lp64f -march=rv64gc

build_unflags = -Os -march=rv64imafc
build_flags = -O2 -mabi=lp64f -march=rv64gc

build_unflags = -Os -march=rv64imafc
build_flags = -O3 -mabi=lp64f -march=rv64gc

Arduino IDEでビルドする場合は下記のやり方でオプションを変更してください
(オプション変更に関しては自己責任でお願いします)

https://pastebin.com/E66j9e7f
0185774ワット発電中さん垢版2020/11/03(火) 18:36:06.14ID:91AZLfsn
>>178に関してですが
Windowsの場合のArduino IDEのライブラリフォルダは下記になります
メニューのツール→ライブラリの管理で入れるとカスタムライブラリに入ります

カスタムライブラリ
C:\Users\username\Documents\Arduino\libraries

あらゆるボード用のライブラリ
C:\Program Files (x86)\Arduino\libraries

Maixシリーズ用のライブラリ
C:\Users\username\AppData\Local\Arduino15\packages\Maixduino\hardware\k210\0.3.11\libraries

usernameの部分は各自のユーザ名に読み替えてください
0186774ワット発電中さん垢版2020/11/04(水) 00:26:20.07ID:UWtXrnOH
M5 Stack Core2の話題ってここでいいの?
0188774ワット発電中さん垢版2020/11/04(水) 08:16:28.91ID:igpM2pWF
>>185の追記

Microsoft StoreからArduino IDEを入れた人のMaixシリーズ用のライブラリはここ
C:\Users\username\Documents\ArduinoData\packages\Maixduino\hardware\k210\0.3.11\libraries


Microsoft StoreからArduino IDEを入れた人のコンパイラオプション変更のためのplatform.txtはここです
(コンパイラオプション変更は自己責任でお願いします)
C:\Users\username\Documents\ArduinoData\packages\Maixduino\hardware\k210\0.3.11\platform.txt
0189774ワット発電中さん垢版2020/11/07(土) 13:56:04.98ID:s0yOLKt3
IOエクスパンダのMCP23017をArduinoで使ってみました

ICは秋月で110円で買えます
https://akizukidenshi.com/catalog/g/gI-09486/
ボードはスイッチサイエンスで990円で買えます
https://www.switch-science.com/catalog/1650/


MCP23017はI2Cで制御します。
接続はMaixduinoではSDA、SCLと書かれてるピン
Maixduino以外の機種ではSDAが31番ピン、SCLが30番ピンです

https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
AdafruitのMCP23017用のライブラリを一部修正することで
Maixシリーズでそのまま使えます

Adafruit_MCP23017.cppの25行目から30行目を変更する

#ifdef __AVR
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#endif
#include "Adafruit_MCP23017.h"

この部分を下記のように修正する

#ifdef __AVR
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
//#endif
#elif defined(K210)
#include <avr/pgmspace.h>
#endif
#include "Adafruit_MCP23017.h"

Adafruitのこのライブラリを使うことで
ArduinoのdigitalWriteやdigitalReadのような関数で操作できます。


Adafruitのライブラリを使ったMaixシリーズのMCP23017用の簡単なLチカです
GPA0とGPB0にLED、GPA7にタクトスイッチを接続してあることを想定してます
アドレスは0x21になってますが自分の設定に合わせて変更してください
https://pastebin.com/iaHfktTf


ライブラリは上記URLからダウンロードできます。
緑色のCodeと書かれてる部分をクリックすると
一番下に「Download ZIP」と出てくるのでそれをダウンロードすればいいです
上記のように修正して手動で下記フォルダにフォルダごとコピーしてください。
C:\Users\username\Documents\Arduino\libraries
(usernameの部分は自分のユーザ名に読み替えてください)

ライブラリはArduino IDEの「ツール」→「ライブラリ」の管理からも入れられます
Adafruit MCP23017 Arduino Libraryを検索してください。
その場合、ライブラリは下記フォルダに入ります
上記のようにそれを修正します
C:\Users\username\Documents\Arduino\libraries
(usernameの部分は自分のユーザ名に読み替えてください)
0190774ワット発電中さん垢版2020/11/15(日) 15:15:12.02ID:teZ1TfP2
16ch、12bitのPWMコントローラーのPCA9685をArduinoで使ってみました

秋月やスイッチサイエンスでモジュールキットが購入できます

I2C接続16チャンネル サーボ&PWM駆動キット
https://akizukidenshi.com/catalog/g/gK-10350/

PCA9685搭載16チャネル PWM/サーボ ドライバー (I2C接続)
https://www.switch-science.com/catalog/961/


https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library
ここのAdafruitのPCA9685用のライブラリがそのまま使えます


MaixduinoはSDA、SCLと書かれてるピンに接続
Maixduino以外では31ピンにSDA、30ピンにSCLを接続します


簡単なLチカのデモプログラムを作ってみました
全チャンネルにLEDがシンク接続されていることを想定しています
(setPWMが使いにくいのでデューティ比で指定できる関数を作ってみました)
PCA9685のI2Cアドレスは0x40に設定されているので自分のものに合わせて変更してください
https://pastebin.com/Ceq6EjTW

このようにMaixシリーズでも簡単にI2Cデバイスが使えます
ADT7410のようなkendryte-standalone-sdkを
使わないといけなくなるケースはまれなケースのようです。
I2CデバイスはSCL、SDAとGND、電源を接続するだけで扱えるのが便利ですね
0194774ワット発電中さん垢版2020/11/21(土) 09:43:35.91ID:8Rne8laZ
RISC-Vは中華の救世主だから
0198774ワット発電中さん垢版2020/12/04(金) 23:36:55.10ID:Dxdew/7s
RISC-Vが過疎ってるからって関係ない板にまでコピペしまくるなよな。
0201774ワット発電中さん垢版2020/12/05(土) 23:11:22.02ID:MvrFfOP9
ここは別にRISC-Vのスレじゃないぞ
K210のスレ
K210がRISC-Vコアを使ってるというだけ
SipeedやM5Stackの話が出るのはわかるが全然関係ないこと書き込まないで
0202774ワット発電中さん垢版2020/12/05(土) 23:18:23.01ID:MvrFfOP9
ESP8266とPin互換のマイコンがespressifから出るから
もう少ししたらRISC-Vマイコンのスレ立てた方がいいかな
SipeedからもDebianが走るAllwinnerのRISC-VのSoC載ったボード出るようだし
0203774ワット発電中さん垢版2020/12/07(月) 19:04:42.05ID:saiuSP3Q
コンバトラー
0204774ワット発電中さん垢版2020/12/07(月) 22:45:03.02ID:7FG541DT
>>201 踏み台になれ
ttps://www.espressif.com/sites/default/files/Screenshot%202020-11-27%20at%2009.10.15.png
0207774ワット発電中さん垢版2020/12/09(水) 23:31:26.16ID:hYI/Bs05
粘着MIPS君といい、キチガイRISC-V厨といい他の板で暴れる馬鹿はなんだろうな。

ここでやればいいのに。
0208774ワット発電中さん垢版2020/12/12(土) 20:26:14.08ID:vJi+gh0L
MaixシリーズのArduinoでインラインアセンブラではなく
アセンブラソースファイルを含むプログラムを
ビルドできるか試してみました

結論から言うとMaixシリーズのArduinoではArduino IDEでビルドをしても
アセンブラソースファイルがアセンブルされないようでビルドに失敗しました

MaixシリーズのArduinoではPlatform IO IDEを使うと
アセンブラソースファイルを含むプログラムをビルドできます
アセンブラソースファイルはmain.cppと同じsrcフォルダに入れるだけでアセンブルされます



以下はPlatform IO IDEのArduino用のアセンブラデモプログラムです
以前の>>181>>182のインラインアセンブラで書いたものを少し変更しただけのものです
関数の中の大部分をアセンブラで書く場合はその関数だけ別ソースファイルに分けて
関数全体をアセンブラで書いた方が場合によってはインラインアセンブラを使うよりも簡単かもしれません

Sipeed MaixシリーズのArduino用のRISC-V RV64IMAFCアセンブラ デモプログラム(単精度浮動小数点版)
Platform IOでArduinoのプロジェクトを作成して
main.cpp、asm_int32_float32.sをsrcフォルダに置いてビルドするだけです

main.cpp
https://pastebin.com/fdWr2QJp

asm_int32_float32.s
https://pastebin.com/nw4KyE8B



Sipeed MaixシリーズのArduino用のRISC-V RV64GCアセンブラ デモプログラム(倍精度浮動小数点版)
Platform IOでArduinoのプロジェクトを作成して
main.cpp、asm_int32_double.sをsrcフォルダに置いてビルドするだけです

main.cpp
https://pastebin.com/hRK8jmss

asm_int32_double.s
https://pastebin.com/4La0G7XY


注意:倍精度浮動小数点命令を使うプログラムをビルドする場合は
   platformio.iniに下記オプションのいずれかを指定してください
   デフォルトのオプションが-march=rv64imafcなので
   倍精度浮動小数点命令を使うとエラーが出てビルドできません
build_unflags = -march=rv64imafc
build_flags = -mabi=lp64f -march=rv64gc

build_unflags = -Os -march=rv64imafc
build_flags = -O2 -mabi=lp64f -march=rv64gc

build_unflags = -Os -march=rv64imafc
build_flags = -O3 -mabi=lp64f -march=rv64gc
0209774ワット発電中さん垢版2021/01/10(日) 20:22:52.83ID:l+GZE7DR
ろくに遊ぶ前にstickV電源入らなくなった
鞄に入れたまま玄関置きっぱが悪かったか?
最近氷点下続いてたし
0212774ワット発電中さん垢版2021/01/19(火) 07:20:30.57ID:dsXnHkWL
>>208
>結論から言うとMaixシリーズのArduinoではArduino IDEでビルドをしても
>アセンブラソースファイルがアセンブルされないようでビルドに失敗しました

アセンブラソースファイルの拡張子を.s(小文字のs)ではなくて
.S(大文字のS)にしたら正常にビルドできました
0214774ワット発電中さん垢版2021/01/31(日) 09:42:24.51ID:ItpTOYq3
IDEのEclipseもアセンブラの拡張子は大文字の.Sじゃないとアセンブルしてくれないね
0215774ワット発電中さん垢版2021/02/21(日) 09:39:50.59ID:f79TU8HL
Maix BitでSipeed RISC-Vデバッガーを使ってデバッグを試したけど
安定しなくてステップ実行するとMaix Bitがすぐフリーズする
やっぱり、デバッガはつかえないが無線LANが使えるMaixduinoの方がいいね
>>159の方法でArduinoでMaixduinoのオンボードのWiFi使えるし
0216774ワット発電中さん垢版2021/09/03(金) 22:02:19.57ID:+W/8ad1C
Maixduinoの液晶が壊れたけど、また同じの買うしかないのかな?
液晶目的だけならMaixbit買った方がやすいかな
0217774ワット発電中さん垢版2022/03/03(木) 07:37:45.81ID:D355cDx9
新チップきたな
世界に先駆けて、64ビットRISC-V CPUコア搭載の汎用MPU「RZ/Five」を発表 | Renesas
ttps://www.renesas.com/jp/ja/about/press-room/renesas-pioneers-risc-v-technology-rzfive-general-purpose-mpus-based-64-bit-risc-v-cpu-core
0219774ワット発電中さん垢版2022/03/24(木) 10:14:26.67ID:/JCKTgI2
ありがたや
0220774ワット発電中さん垢版2022/03/24(木) 15:39:53.64ID:8AMA94MD
シナ製品はシナの中だけで使ってろ。
露中の侵略を応援する気はない。
0221774ワット発電中さん垢版2022/03/24(木) 16:30:34.56ID:IOQZu3Pv
>>220 うーん・・・チャイナで今現在進行中の方々への侵略行為は許しがたい暴挙だけれど、
今回のウクライナに限ればロシア側にまったく道理が無いというわけでもないらしくてなぁ・・・
ぼくはゆーちゅーぶで、「ウクライナ・オン・ファイヤー 日本語字幕(字幕改正版)」てのを
見て、状況への評価が、だいぶ変わりましたぞ。
0222774ワット発電中さん垢版2022/03/24(木) 17:52:56.51ID:clJx/lG7
第三次世界大戦を起こしたい側がウクライナ問題を煽っているから
0223774ワット発電中さん垢版2022/03/24(木) 18:04:17.65ID:/JCKTgI2
M5StickV MaixPy MicroPython serial 接続で遊んでたら急に文字化けが増えて
可笑しくなって数十分後に勝手に切断された
再起動しても USB が不明なデバイスになってしまった
PC 再起動したら治るんかこれ
https://www.youtube.com/watch?v=BVaC_OXGt9k
0225774ワット発電中さん垢版2022/03/25(金) 23:44:43.09ID:fGV9Qrm0
>>221
オリバーストーンって名手だろ。
そんな人の映像を見て考え方変えているようじゃまずいのでは。
どうすれば見る人が考え方を変えるかをよく知ってる人だよ。
0226774ワット発電中さん垢版2022/03/26(土) 15:23:31.25ID:zuWUeXfO
君は書き込むスレを考え治すべきだ
0227774ワット発電中さん垢版2022/05/08(日) 14:17:01.60ID:qs+VidjG
JDSC AIの活用で、この国は変えられる、(株)JDSC/4418 テンバガー候補
https://jdsc.ai/news/ シニアマーケティングのゆこゆこ、DM等による販促サポートサービスへ JDSCのAIを導入CVRが平均2.4倍 長野県松本市 電力データとAIによるフレイル検知の実証を開始/中部電力
//dime.jp/genre/1380420/ AIであれば知床半島観光船事故の出航判断を誤ることはなかったかもしれない 2022.05.08 @DIME

https://jimin.jp-east-2.storage.api.nifcloud.com/pdf/news/policy/203427_1.pdf デジタル・ニッポン 2022~デジタルによる新しい資本主義への挑戦~ !! 自民党デジタル社会推進本部
//www.smbcnikko.co.jp/products/inv/toshin_lab/column/002.html AI通信 投資対象として「AI」をどう見るか? AI関連企業の成長物語はまだ始まったばかり 官民の積極的な取り組みが加速する 日興
//www.meti.go.jp/policy/it_policy/jinzai/AIutilization.html 中小企業のDXに役立つ「手引き」と「AI導入ガイドブック」0408 経産省
//www.riken.jp/research/labs/aip/#h2Anchor1220421 理研 革新知能統合研究センター 革新的な人工知能基盤技術を開発し、それらを応用する
//special.nikkeibp.co.jp/atclh/NXT/22/laboro_ai0428/ 中長期的に企業価値を高めることに貢献する 株Laboro.AI 日経BP

//cloud.watch.impress.co.jp/docs/special/1405135.html AIにとっては必然のもの? 東芝が推進するMLOps活用の取り組み 大河原克行 0502 機械学習を活用したシステムを開発して運用を開始したあとも、継続的にモニタリングを行い、システム運用や市場環境の変化を通じて再学習や改良、改善を実施し、品質を保つ
//www.okinawatimes.co.jp/articles/-/953511 InnodiskがエッジAIコンピューティング市場に焦点を当てた新ビジネスを発表 220505 沖縄タイムス

//www.nikkei.com/article/DGXZQOUC186WY0Y2A410C2000000/ 熟練者の技をデジタル化 ALGO ARTIS 220503
//www.jcer.or.jp/economic-forecast/2021127.html DX社会の構築なければ、30年代はマイナス成長に 日本経済研究センタ
//www.nikkei.com/article/DGXZQOUC130YI0T10C22A3000000/ ソフトバンク、全社員1.8万人にAI・統計スキル習得求める 0327
//www.nikkei.com/article/DGXZQOUC11C8C0R10C22A4000000/ デジタル人材の育成 日本は7カ国平均の29%を大幅に下回った AWS調査 0419
レスを投稿する


ニューススポーツなんでも実況