開発ツールPlatformIOをcliで使う(Wio_Lite_RISC-V版)
2020/6/14+:
・SERIAL_TEST,SERIAL0_ECHO,SERIAL_2CH,AT_TESTを追加した。
2020/6/13+:
初版
PlatformIO cli Wio Lite RISC-V
PlatformIO cli Wio Lite RISC-V
概要
開発ツールPlatformIOをcli(comand line interface)で使う(Wio_Lite_RISC-V版)。
VisualCodeのプラグインとしてPlatformIOを使用することができるが、ここでは、cliとしての使い方について記する。
(ホストPCとしてはubuntuを想定している)
PlatformIOのインストール
python3 -m venv pio_env
source pio_env/bin/activate
pip3 install platformio
インストール後も、本ツールを使用する場合
同じディレクトリで以下を実行する:
source pio_env/bin/activate
# 「source」は、「.」でも良い
準備
以下を実行して、udevのrulesを登録する:
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
sudo udevadm control --reload-rules
sudo usermod -a -G dialout $USER
sudo usermod -a -G plugdev $USER
過去に設定してあったとしても、rulesが更新されている場合があるので、再設定したほうが良い。
テスト用プロジェクト wio_sample を作成/実行する
#ターゲットボードのtarget名を検索する
# (ここではwioを検索する)
pio boards | grep -i wio
#出力例:
seeed_wio_lite_mg126 SAMD21G18A 48MHz 256KB 32KB Seeeduino Wio Lite MG126
seeed_wio_terminal SAMD51P19A 120MHz 496KB 192KB Seeeduino Wio Terminal
wio_link ESP8266 80MHz 4MB 80KB Wio Link
wio_node ESP8266 80MHz 4MB 80KB Wio Node
wio_lite_risc-v GD32VF103CBT6 108MHz 128KB 32KB Wio Lite RISC-V
wio_3g STM32F439VI 180MHz 2MB 256KB Seeed Wio 3G
....
#target名として「wio_lite_risc-v」が判明した
# プロジェクト wio_sample のディレクトリを作成する
mkdir wio_sample
cd wio_sample
# 以下を実行して必要なファイルを作成する
pio init --board wio_lite_risc-v
pio platform update
# arduinoとして欠落しているファイルがあるのでダウンロードする:
cd ~/.platformio/packages/framework-arduino-gd32v/variants
mkdir wio_lite_risc-v
cd wio_lite_risc-v/
wget https://raw.githubusercontent.com/sipeed/Longduino/master/variants/wio_lite_risc-v/pins_arduino.c
wget https://raw.githubusercontent.com/sipeed/Longduino/master/variants/wio_lite_risc-v/pins_arduino.h
# 書き込み(dfu-util)ツールのデフォルトバージョンでは、wio_lite_risc-vの書き込みが失敗するので
# 正常に書き込めるバージョンをインストールする:
#(失敗するバージョンでも、表示メッセージは書き込みが正常に終了したように見えるので要注意)
mkdir ~/wio-lite-dfu/
cd wio-lite-dfu
git clone https://git.code.sf.net/p/dfu-util/dfu-util
cd dfu-utils
./autogen.sh
./configure
make
# 以下のように実行ファイルをコピーする:
cp src/dfu-prefix ~/.local/bin/
cp src/dfu-suffix ~/.local/bin/
cp src/dfu-util ~/.local/bin/
cp src/dfu-prefix ~/.platformio/packages/tool-gd32vflash/
cp src/dfu-suffix ~/.platformio/packages/tool-gd32vflash/
cp src/dfu-util ~/.platformio/packages/tool-gd32vflash/
#元のディレクトリに戻す
cd wio_sample
nano platformio.ini
以下にように編集する:
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:wio_lite_risc-v]
platform = gd32v
board = wio_lite_risc-v
framework = arduino
upload_protocol = dfu
続き:
# テスト用のmain.cppを作成する
nano src/main.cpp
以下のように編集する:
#include <Arduino.h>
#define LED_BUILTIN PA8 // for wio-lite-rv
//#define LED_BUILTIN PC13 // for longan-nano
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
ツールのテストとしてCPUが同じlongan-nanoでも動作テストができるように LEDのポートを#defineで定義して切り換えられるようにしている。
続き:
# build
pio run
# ボードをホストPCに接続する
# DFUモードにするために
# (BOOT0スイッチを1にして)resetを1度押す
# build&upload(flash)
pio run -t upload
# buildしないで書き込む場合は以下を実行する:
pio run -t nobuild -t upload -v
# -v は、詳細を表示するオプション
# (書き込み終了後、BOOT0を0にする)
# 以上で、基本的な操作としては完了となる
オンボードのLEDが点滅すれば動作としてはOKとなる。
出力例:
$ pio run -t upload
Processing wio_lite_risc-v (platform: gd32v; board: wio_lite_risc-v; framework: arduino)
---------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/gd32v/wio_lite_risc-v.html
PLATFORM: GigaDevice GD32V 1.1.2 > Wio Lite RISC-V
HARDWARE: GD32VF103CBT6 108MHz, 32KB RAM, 128KB Flash
DEBUG: Current (altera-usb-blaster) External (altera-usb-blaster, gd-link, jlink, rv-link, sipeed-rv-debugger, um232h)
PACKAGES:
- framework-arduino-gd32v 0.1.1
- tool-gd32vflash 0.1.0
- tool-openocd-gd32v 0.1.1
- toolchain-gd32v 9.2.0
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 1 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Checking size .pio/build/wio_lite_risc-v/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 7.4% (used 2420 bytes from 32768 bytes)
Flash: [= ] 7.3% (used 9592 bytes from 131072 bytes)
Configuring upload protocol...
AVAILABLE: altera-usb-blaster, dfu, gd-link, jlink, rv-link, serial, sipeed-rv-debugger, um232h
CURRENT: upload_protocol = dfu
Uploading .pio/build/wio_lite_risc-v/firmware.bin
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2020 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Opening DFU capable USB device...
ID 28e9:0189
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash "
Found GD32VF103, which reports a bad page size and count for its internal memory.
Fixed layout based on part number: page size 1024, count 128.
Downloading to address = 0x08000000, size = 9608
Erase [ ] 0% 0 bytes
Erase [===== ] 21% 2048 bytes
Erase [========== ] 42% 4096 bytes
Erase [=============== ] 63% 6144 bytes
Erase [===================== ] 85% 8192 bytes
Download [ ] 0% 0 bytes
Download [===== ] 21% 2048 bytes
Download [========== ] 42% 4096 bytes
Download [=============== ] 63% 6144 bytes
Download [===================== ] 85% 8192 bytes
Download [=========================] 100% 9608 bytes
Download done.
File downloaded successfully
dfu-util: Error during download get_status
*** [upload] Error 74
===== [FAILED] Took 2.43 seconds =====
#[FAILED]になっているが「File downloaded successfully」になっているので、書き込みが正常に終わっている。
これ以降、別のプログラムを動かすときは wio_sampleのディレクトリをまるごと コピーして別のプロジェクトのディレクトリを作り そこにプログラム(.cpp)を置く。
例:
cp wio_sample wio_proj01
cd wio_proj01
...
serial_test
src/serial_test.cpp
#include <Arduino.h>
#include <stdio.h>
#define CYCLES 2 // 2 yields a heartbeat effect
#define SHORT_DELAY 100 // 1/10 second
#define LONG_DELAY 1000 // 1 second
static void wio_serial_init(void)
{
// enable GPIO clock
rcu_periph_clock_enable(RCU_GPIOA);
// enable USART clock
rcu_periph_clock_enable(RCU_USART0);
// USART configure
usart_deinit(USART0);
usart_baudrate_set(USART0, 115200U);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_enable(USART0);
}
/*
// retarget the C library printf function to USART0
// Not needed, see the _put_char functino in
// ~.platformio/packages/framework-arduino-gd32v/cores/arduino/GD32VF103_Firmware_Library/RISCV/stubs/write.c
extern "C" int _put_char(int ch) // used by printf
{
usart_data_transmit(USART0, (uint8_t) ch );
while (usart_flag_get(USART0, USART_FLAG_TBE) == RESET){
}
//delay(100); // make it obvious the function is being used
return ch;
}
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
wio_serial_init();
printf("\nSeeed Wio Lite RISC-V WiFi\n");
printf("==========================\n");
printf("Platform: Arduino\n");
printf("LED_BUILTIN: %d\n", LED_BUILTIN);
printf("\n");
}
// the loop function runs over and over again forever
void loop() {
for (int i=0; i<CYCLES; i++) {
digitalWrite(LED_BUILTIN, HIGH); // turn the red LED on
printf("ON "); // update terminal
delay(SHORT_DELAY); // wait for a short on period
digitalWrite(LED_BUILTIN, LOW); // turn the red LED off
delay(SHORT_DELAY); // wait for a short off period
}
digitalWrite(LED_BUILTIN, LOW); // turn the LED off
printf("OFF\n"); // update terminal
delay(LONG_DELAY); // wait for a long off period
}
ボードのPA9(TX). PA10(RX)、GNDをUSBシリアルに接続する。 書き込み後に「picocom /dev/ttyACM0 -b115200」で通信ソフトを起動すると以下のような出力が表示される:
$ picocom /dev/ttyACM0 -b115200
Seeed Wio Lite RISC-V WiFi
==========================
Platform: Arduino
LED_BUILTIN: 8
ON ON OFF
ON ON OFF
ON ON OFF
ON ON OFF
ON ON OFF
ON ON OFF
ON ON OFF
ON ON OFF
ON ON OFF
ON ON OFF
ちなみに、XIAOをUSBシリアルとして使用する場合は以下のように接続する:
wio-lite-rv | XIAO |
---|---|
PA10(RX) | D6(TX) |
PA9(TX) | D7(RX) |
GND | GND |
serial0_echo
シリアルエコープログラム:
src/serial0_echo.cpp
#include <Arduino.h>
#include <stdio.h>
#include <stdarg.h>
static void wio_serial_init(void)
{
// enable GPIO clock for USART0
rcu_periph_clock_enable(RCU_GPIOA);
// enable USART clock
rcu_periph_clock_enable(RCU_USART0);
/* connect port to USARTx_Tx(PA9) */
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
/* connect port to USARTx_Rx(PA10) */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
// USART0 configure
usart_deinit(USART0);
usart_baudrate_set(USART0, 115200U);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_enable(USART0);
}
int _get0_char(void) {
while ( usart_flag_get(USART0, USART_FLAG_RBNE)== RESET){
}
return (uint8_t)usart_data_receive(USART0);
}
int _put0_char(int ch)
{
usart_data_transmit(USART0, (uint8_t) ch );
while ( usart_flag_get(USART0, USART_FLAG_TBE)== RESET){
}
return ch;
}
void setup() {
wio_serial_init();
}
void loop() {
_put0_char(_get0_char());
}
ボードのPA9(TX). PA10(RX)、GNDをUSBシリアルに接続する。 書き込み後に「picocom /dev/ttyACM0 -b115200」で通信ソフトを起動して キー入力すると入力した文字が表示される。
serial_2ch
シリアルを2ch有効にするプログラム:
src/serial_2ch.cpp
#include <Arduino.h>
#include <stdio.h>
#include <stdarg.h>
int n = 0;
static void wio_serial_init(void)
{
// enable GPIO clock for USART0
rcu_periph_clock_enable(RCU_GPIOA);
// enable USART clock
rcu_periph_clock_enable(RCU_USART0);
/* connect port to USARTx_Tx(PA9) */
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
/* connect port to USARTx_Rx(PA10) */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
// enable GPIO clock for USART1
rcu_periph_clock_enable(RCU_GPIOA);
// enable USART clock
rcu_periph_clock_enable(RCU_USART1);
/* connect port to USARTx_Tx(PA2) */
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
/* connect port to USARTx_Rx(PA3) */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_3);
// USART0 configure
usart_deinit(USART0);
usart_baudrate_set(USART0, 115200U);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_enable(USART0);
// USART1 configure
usart_deinit(USART1);
usart_baudrate_set(USART1, 115200U);
usart_word_length_set(USART1, USART_WL_8BIT);
usart_stop_bit_set(USART1, USART_STB_1BIT);
usart_parity_config(USART1, USART_PM_NONE);
usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE);
usart_receive_config(USART1, USART_RECEIVE_ENABLE);
usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
usart_enable(USART1);
}
int _get0_char(void) {
while ( usart_flag_get(USART0, USART_FLAG_RBNE)== RESET){
}
return (uint8_t)usart_data_receive(USART0);
}
int _get1_char(void) {
while ( usart_flag_get(USART1, USART_FLAG_RBNE)== RESET){
}
return (uint8_t)usart_data_receive(USART1);
}
int _put0_char(int ch)
{
usart_data_transmit(USART0, (uint8_t) ch );
while ( usart_flag_get(USART0, USART_FLAG_TBE)== RESET){
}
return ch;
}
int _put1_char(int ch)
{
usart_data_transmit(USART1, (uint8_t) ch );
while ( usart_flag_get(USART1, USART_FLAG_TBE)== RESET){
}
return ch;
}
void usart1_printf(const char *fmt, ...) {
char buf[100];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
char *p = buf;
while( *p != '\0' ) {
_put1_char(*p);
p++;
}
}
void usart1_println(const char *fmt, ...) {
char buf[100];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
char *p = buf;
while( *p != '\0' ) {
_put1_char(*p);
p++;
}
_put1_char('\r');
_put1_char('\n');
}
// the setup function runs once when you press reset or power the board
void setup() {
wio_serial_init();
printf("\nSerial#0\n");
printf("#0==========================\n");
usart1_printf("\r\nSerial#1\r\n");
usart1_printf("#1==========================\r\n");
}
void loop() {
printf("#0 line #%d\n", n);
usart1_printf("#1 line #%d\r\n", n);
n++;
}
・チャンネル#0のボードのPA9(TX). PA10(RX)、GNDをUSBシリアルに接続する。
・チャンネル#1のボードのPA2(TX). PA3(RX)、GNDをUSBシリアルに接続する。
(チャンネル#1はオンボードの[ESP-WROOM-02]とシリアル接続されている)
AT_test
WiFiモジュール[ESP-WROOM-02]にシリアル#0経由でATコマンドを送るプログラム:
src/AT_test.cpp
#include <Arduino.h>
#include <stdio.h>
#include <stdarg.h>
static void wio_serial_init(void)
{
// enable GPIO clock for USART0
rcu_periph_clock_enable(RCU_GPIOA);
// enable USART clock
rcu_periph_clock_enable(RCU_USART0);
/* connect port to USARTx_Tx(PA9) */
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
/* connect port to USARTx_Rx(PA10) */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
// enable GPIO clock for USART1
rcu_periph_clock_enable(RCU_GPIOA);
// enable USART clock
rcu_periph_clock_enable(RCU_USART1);
/* connect port to USARTx_Tx(PA2) */
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
/* connect port to USARTx_Rx(PA3) */
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_3);
// USART0 configure
usart_deinit(USART0);
usart_baudrate_set(USART0, 115200U);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_hardware_flow_rts_config(USART0, USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART0, USART_CTS_DISABLE);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_enable(USART0);
// USART1 configure
usart_deinit(USART1);
usart_baudrate_set(USART1, 115200U);
usart_word_length_set(USART1, USART_WL_8BIT);
usart_stop_bit_set(USART1, USART_STB_1BIT);
usart_parity_config(USART1, USART_PM_NONE);
usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE);
usart_receive_config(USART1, USART_RECEIVE_ENABLE);
usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
usart_enable(USART1);
}
int _get0_char(void) {
while ( usart_flag_get(USART0, USART_FLAG_RBNE)== RESET){
}
return (uint8_t)usart_data_receive(USART0);
}
int _get1_char(void) {
while ( usart_flag_get(USART1, USART_FLAG_RBNE)== RESET){
}
return (uint8_t)usart_data_receive(USART1);
}
int _put0_char(int ch)
{
usart_data_transmit(USART0, (uint8_t) ch );
while ( usart_flag_get(USART0, USART_FLAG_TBE)== RESET){
}
return ch;
}
int _put1_char(int ch)
{
usart_data_transmit(USART1, (uint8_t) ch );
while ( usart_flag_get(USART1, USART_FLAG_TBE)== RESET){
}
return ch;
}
void usart1_printf(const char *fmt, ...) {
char buf[100];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
char *p = buf;
while( *p != '\0' ) {
_put1_char(*p);
p++;
}
}
void usart1_println(const char *fmt, ...) {
char buf[100];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);
char *p = buf;
while( *p != '\0' ) {
_put1_char(*p);
p++;
}
_put1_char('\r');
_put1_char('\n');
}
// the setup function runs once when you press reset or power the board
void setup() {
wio_serial_init();
}
void loop() {
if ( usart_flag_get(USART1, USART_FLAG_RBNE)== SET) _put0_char(_get1_char());
if ( usart_flag_get(USART0, USART_FLAG_RBNE)== SET) _put1_char(_get0_char());
}
・チャンネル#0のボードのPA9(TX). PA10(RX)、GNDをUSBシリアルに接続する。
「picocom /dev/ttyACM0 -b115200」を起動して以下のコマンドを送る:
(通信ソフトを起動した後、ボードを接続してプログラムを起動する)
AT+CWQAP
AT+CWMODE=1
AT+CWJAP="YOUR_SSID","YOUR_PASSWORD"
AT+CIFSR
AT+CIPMUX=1
AT+CIPSERVER=1,80
各行末には[Enter],[Control+J]を入力する。
YOUR_SSID,YOUR_PASSWORDの部分は、自分の環境に合わせた文字列を設定する。
以下のような出力(レスポンス)が得られ、WiFiネットワークに接続できたのが分かる。
$ picocom /dev/ttyACM0 -b115200
...
2.0.0
max tx power=78,ret=0
AT+CWQAP
AT+CWMODE=1
AT+CWJAP="YOUR_SSID","YOUR_PASSWORD"
I (51523) wifi: state: 0 -> 2 (b0)
I (51528) wifi: state: 2 -> 3 (0)
I (51536) wifi: state: 3 -> 5 (10)
WIFI CONNECTED
WIFI GOT IP
AT+CIFSR
+CIFSR:STAIP,"192.168.0.28"
+CIFSR:STAMAC,"2c:f4:32:48:ed:0b"
OK
AT+CIPMUX=1
OK
AT+CIPSERVER=1,80
OK
# ここで、上で取得したIPと設定したportである80であるIP:port(192.168.0.28:80)にブラウザーでアクセスする
0,CONNECT
# 以下のようなレスポンスが返ってくる:
+IPD,0,464:GET / HTTP/1.1
Host: 192.168.0.28
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36
Sec-Metadata: cause="forced", destination="document", site="cross-site"
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7
1,CONNECT
1,CLOSED
delete
OK
参考情報
Wio Lite RISC V GD32VF103 with ESP8266
Blink with a Wio Lite RISC-V with ESP8266
以上
| 固定リンク
「linux」カテゴリの記事
- platfomioを使ってnaitive(linux/windows)のプログラムをビルドする方法(2021.03.10)
- micro:bit Yotta開発ツール(linux版)(2021.01.09)
- PlatformIOをRaspberryPi4で動かしてみる(実験)(2020.10.20)
- headless RaspberryPiインストール方法(v2)(2020.10.20)
- wio-terminalのファームウェア・アップデートについて(linux版)(2020.10.15)
「PlatformIO」カテゴリの記事
- NuEVI/NuRADのビルド(2022.08.18)
- Wio_ExtFlashLoad(WriteSampleMenu.ino)スケッチをplatformioでビルドする(2022.02.03)
- uncannyeyesスケッチをplatformioでビルドする(2022.01.31)
- LovyanGFX-Display ライブラリを使用したスケッチをplatformioでビルドする(2022.01.30)
- Wio-Terminal/M5Core2のWiFiAnallyzer(2022.01.24)
「Arduino」カテゴリの記事
- platformioのために新しいユーザーを設定する(2022.02.06)
- MAKER_PI_RP2040でI2Cを使う(Arduino編)(2022.01.09)
- M5Stamp-PICO Arduino Install(2021.12.12)
- M5Stamp-C3 Arduino Install(2021.12.12)
- Arduino-CLIのインストール(2021.05.19)
コメント