Adafruit TinyUSB Libraryがv1.0.0以降にアップデートされている場合、USBスタックにTinyUSB
を選択してビルドすると次のようなエラーとなってしまいます。
- Board
Wio Terminal
- Seeed SAMD Boards
v1.8.2
- Adafruit TinyUSB Library
v1.4.4
- サンプルスケッチ
Adafruit TinyUSB Library > MassStorage > msc_ramdisk
の場合
"C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-g++" -mcpu=cortex-m4 -mthumb -c -g -Os -std=gnu++14 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD "-D__SKETCH_NAME__=\"\"\"msc_ramdisk.ino\"\"\"" -DF_CPU=120000000L -DARDUINO=10813 -DARDUINO_WIO_TERMINAL -DARDUINO_ARCH_SAMD -D__SAMD51P19A__ -DWIO_TERMINAL -DSEEED_WIO_TERMINAL -DSEEED_GROVE_UI_WIRELESS -D__SAMD51__ -DUSB_VID=0x2886 -DUSB_PID=0x802D -DUSBCON -DUSB_CONFIG_POWER=100 "-DUSB_MANUFACTURER=\"Seeed Studio\"" "-DUSB_PRODUCT=\"Seeed Wio Terminal\"" -DUSE_TINYUSB -DROLE=0 "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\samd\\1.8.2\\cores\\arduino/TinyUSB" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\samd\\1.8.2\\cores\\arduino/TinyUSB/Adafruit_TinyUSB_ArduinoCore" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\samd\\1.8.2\\cores\\arduino/TinyUSB/Adafruit_TinyUSB_ArduinoCore/tinyusb/src" -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -DENABLE_CACHE -DTXRXLED_ENABLE -DROLE=0 -Os -DVARIANT_QSPI_BAUD_DEFAULT=50000000 -D__SAMD51P19A__ -DWIO_TERMINAL -DSEEED_WIO_TERMINAL -DSEEED_GROVE_UI_WIRELESS -D__SAMD51__ -DUSB_VID=0x2886 -DUSB_PID=0x802D -DUSBCON -DUSB_CONFIG_POWER=100 "-DUSB_MANUFACTURER=\"Seeed Studio\"" "-DUSB_PRODUCT=\"Seeed Wio Terminal\"" -DUSE_TINYUSB -DROLE=0 "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\samd\\1.8.2\\cores\\arduino/TinyUSB" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\samd\\1.8.2\\cores\\arduino/TinyUSB/Adafruit_TinyUSB_ArduinoCore" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\samd\\1.8.2\\cores\\arduino/TinyUSB/Adafruit_TinyUSB_ArduinoCore/tinyusb/src" -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\tools\\CMSIS\\5.7.0/CMSIS/Core/Include/" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\tools\\CMSIS\\5.7.0/CMSIS/DSP/Include/" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\tools\\CMSIS-Atmel\\1.2.1/CMSIS-Atmel/CMSIS/Device/ATMEL/" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\samd\\1.8.2\\cores\\arduino" "-IC:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\Seeeduino\\hardware\\samd\\1.8.2\\variants\\wio_terminal" "-IC:\\Users\\user\\Documents\\Arduino\\libraries\\Adafruit_TinyUSB_Arduino\\src" "C:\\Users\\user\\AppData\\Local\\Temp\\arduino_build_374642\\sketch\\msc_ramdisk.ino.cpp" -o "C:\\Users\\user\\AppData\\Local\\Temp\\arduino_build_374642\\sketch\\msc_ramdisk.ino.cpp.o" msc_ramdisk:19:19: error: cannot declare variable 'usb_msc' to be of abstract type 'Adafruit_USBD_MSC' Adafruit_USBD_MSC usb_msc; ^~~~~~~ In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_TinyUSB_Arduino\src/Adafruit_TinyUSB.h:44:0, from C:\Users\user\Documents\Arduino\libraries\Adafruit_TinyUSB_Arduino\examples\MassStorage\msc_ramdisk\msc_ramdisk.ino:12: C:\Users\user\Documents\Arduino\libraries\Adafruit_TinyUSB_Arduino\src/arduino/msc/Adafruit_USBD_MSC.h:30:7: note: because the following virtual functions are pure within 'Adafruit_USBD_MSC': class Adafruit_USBD_MSC : public Adafruit_USBD_Interface { ^~~~~~~~~~~~~~~~~ In file included from C:\Users\user\AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\1.8.2\cores\arduino/TinyUSB/Adafruit_TinyUSB_ArduinoCore/Adafruit_TinyUSB_Core.h:35:0, from C:\Users\user\AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\1.8.2\cores\arduino/Arduino.h:173, from C:\Users\user\AppData\Local\Temp\arduino_build_374642\sketch\msc_ramdisk.ino.cpp:1: C:\Users\user\AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\1.8.2\cores\arduino/TinyUSB/Adafruit_TinyUSB_ArduinoCore/Adafruit_USBD_Device.h:38:22: note: virtual uint16_t Adafruit_USBD_Interface::getDescriptor(uint8_t, uint8_t*, uint16_t) virtual uint16_t getDescriptor(uint8_t itfnum, uint8_t* buf, uint16_t bufsize) = 0; ^~~~~~~~~~~~~ 次のフォルダのライブラリAdafruit_TinyUSB_Arduinoバージョン1.4.4を使用中:C:\Users\user\Documents\Arduino\libraries\Adafruit_TinyUSB_Arduino exit status 1 cannot declare variable 'usb_msc' to be of abstract type 'Adafruit_USBD_MSC'
この問題はAdafruit TinyUSB Libraryがv1.0.0にアップデートされる際に、 従来2つあったリポジトリが統合されAdafruit TinyUSB Libraryに一本化されたことにより、 Seeed SAMD Boards内に内包されているAdafruit TinyUSB ArduinoCoreと競合することによって不具合が発生してしまいます。
- リポジトリ
(いまのところの)回避策はライブラリをロールバック
2021年8月19日時点での不具合の回避策は、Adafruit TinyUSB Libraryのバージョンを0.10.5
にロールバックすることです。
下記に手順を説明しておきます。
1. Arduino IDE ツール > ライブラリを管理...
でライブラリマネージャを立ち上げる
2. Adafruit TinyUSBを検索しバージョンを0.10.5
に選択してインストールしなおす
変更履歴
日付 | 変更者 | 変更内容 |
---|---|---|
2021/8/19 | mnakai | 作成 |