提交 275e6ffa 编写于 作者: M me-no-dev

Add example ESP32-S2 USB-ONLY board

上级 934b6460
......@@ -181,7 +181,7 @@ esp32s2.build.dfu_on_boot=0
esp32s2.build.f_cpu=240000000L
esp32s2.build.flash_size=4MB
esp32s2.build.flash_freq=80m
esp32s2.build.flash_mode=qio
esp32s2.build.flash_mode=dio
esp32s2.build.boot=qio
esp32s2.build.partitions=default
esp32s2.build.defines=
......@@ -649,6 +649,103 @@ pico32.menu.DebugLevel.verbose.build.code_debug=5
##############################################################
esp32s2usb.name=ESP32S2 Native USB
esp32s2usb.vid.0=0x303a
esp32s2usb.pid.0=0x0003
esp32s2usb.upload.tool=esptool_py
esp32s2usb.upload.maximum_size=1310720
esp32s2usb.upload.maximum_data_size=327680
esp32s2usb.upload.flags=
esp32s2usb.upload.extra_flags=
esp32s2usb.upload.use_1200bps_touch=true
esp32s2usb.upload.wait_for_upload_port=true
esp32s2usb.upload.speed=921600
esp32s2usb.serial.disableDTR=false
esp32s2usb.serial.disableRTS=false
esp32s2usb.build.tarch=xtensa
esp32s2usb.build.bootloader_addr=0x1000
esp32s2usb.build.target=esp32s2
esp32s2usb.build.mcu=esp32s2
esp32s2usb.build.core=esp32
esp32s2usb.build.variant=esp32s2usb
esp32s2usb.build.board=ESP32S2_USB
esp32s2usb.build.cdc_on_boot=1
esp32s2usb.build.msc_on_boot=1
esp32s2usb.build.dfu_on_boot=1
esp32s2usb.build.f_cpu=240000000L
esp32s2usb.build.flash_size=4MB
esp32s2usb.build.flash_freq=80m
esp32s2usb.build.flash_mode=dio
esp32s2usb.build.boot=qio
esp32s2usb.build.partitions=default
esp32s2usb.build.defines=
esp32s2usb.menu.PSRAM.disabled=Disabled
esp32s2usb.menu.PSRAM.disabled.build.defines=
esp32s2usb.menu.PSRAM.enabled=Enabled
esp32s2usb.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
esp32s2usb.menu.FlashSize.4M=4MB (32Mb)
esp32s2usb.menu.FlashSize.4M.build.flash_size=4MB
esp32s2usb.menu.FlashSize.8M=8MB (64Mb)
esp32s2usb.menu.FlashSize.8M.build.flash_size=8MB
esp32s2usb.menu.FlashSize.8M.build.partitions=default_8MB
esp32s2usb.menu.FlashSize.16M=16MB (128Mb)
esp32s2usb.menu.FlashSize.16M.build.flash_size=16MB
esp32s2usb.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
esp32s2usb.menu.PartitionScheme.default.build.partitions=default
esp32s2usb.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
esp32s2usb.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
esp32s2usb.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
esp32s2usb.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
esp32s2usb.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
esp32s2usb.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
esp32s2usb.menu.PartitionScheme.minimal.build.partitions=minimal
esp32s2usb.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
esp32s2usb.menu.PartitionScheme.no_ota.build.partitions=no_ota
esp32s2usb.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
esp32s2usb.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
esp32s2usb.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
esp32s2usb.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
esp32s2usb.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
esp32s2usb.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
esp32s2usb.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
esp32s2usb.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
esp32s2usb.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
esp32s2usb.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
esp32s2usb.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
esp32s2usb.menu.PartitionScheme.huge_app.build.partitions=huge_app
esp32s2usb.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
esp32s2usb.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
esp32s2usb.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
esp32s2usb.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
esp32s2usb.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
esp32s2usb.menu.PartitionScheme.fatflash.build.partitions=ffat
esp32s2usb.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
esp32s2usb.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
esp32s2usb.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
esp32s2usb.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
esp32s2usb.menu.DebugLevel.none=None
esp32s2usb.menu.DebugLevel.none.build.code_debug=0
esp32s2usb.menu.DebugLevel.error=Error
esp32s2usb.menu.DebugLevel.error.build.code_debug=1
esp32s2usb.menu.DebugLevel.warn=Warn
esp32s2usb.menu.DebugLevel.warn.build.code_debug=2
esp32s2usb.menu.DebugLevel.info=Info
esp32s2usb.menu.DebugLevel.info.build.code_debug=3
esp32s2usb.menu.DebugLevel.debug=Debug
esp32s2usb.menu.DebugLevel.debug.build.code_debug=4
esp32s2usb.menu.DebugLevel.verbose=Verbose
esp32s2usb.menu.DebugLevel.verbose.build.code_debug=5
##############################################################
esp32wroverkit.name=ESP32 Wrover Kit (all versions)
esp32wroverkit.upload.tool=esptool_py
esp32wroverkit.upload.maximum_size=1310720
......
......@@ -17,9 +17,27 @@
#include "esp_partition.h"
#include "esp_ota_ops.h"
#include "esp32-hal.h"
#include "pins_arduino.h"
#include "firmware_msc_fat.h"
#if CONFIG_TINYUSB_MSC_ENABLED
#ifndef USB_FW_MSC_VENDOR_ID
#define USB_FW_MSC_VENDOR_ID "ESP32" //max 8 chars
#endif
#ifndef USB_FW_MSC_PRODUCT_ID
#define USB_FW_MSC_PRODUCT_ID "Firmware MSC"//max 16 chars
#endif
#ifndef USB_FW_MSC_PRODUCT_REVISION
#define USB_FW_MSC_PRODUCT_REVISION "1.0" //max 4 chars
#endif
#ifndef USB_FW_MSC_VOLUME_NAME
#define USB_FW_MSC_VOLUME_NAME "ESP32-FWMSC" //max 11 chars
#endif
#ifndef USB_FW_MSC_SERIAL_NUMBER
#define USB_FW_MSC_SERIAL_NUMBER 0x00000000
#endif
ESP_EVENT_DEFINE_BASE(ARDUINO_FIRMWARE_MSC_EVENTS);
esp_err_t arduino_usb_event_post(esp_event_base_t event_base, int32_t event_id, void *event_data, size_t event_data_size, TickType_t ticks_to_wait);
esp_err_t arduino_usb_event_handler_register_with(esp_event_base_t event_base, int32_t event_id, esp_event_handler_t event_handler, void *event_handler_arg);
......@@ -334,7 +352,7 @@ FirmwareMSC::FirmwareMSC():msc(){}
FirmwareMSC::~FirmwareMSC(){}
bool FirmwareMSC::begin(){
if(!msc_update_setup_disk("ESP32-FWMSC", 0x0)){
if(!msc_update_setup_disk(USB_FW_MSC_VOLUME_NAME, USB_FW_MSC_SERIAL_NUMBER)){
return false;
}
......@@ -345,9 +363,9 @@ bool FirmwareMSC::begin(){
}
}
msc.vendorID("ESP32S2");//max 8 chars
msc.productID("Firmware MSC");//max 16 chars
msc.productRevision("1.0");//max 4 chars
msc.vendorID(USB_FW_MSC_VENDOR_ID);
msc.productID(USB_FW_MSC_PRODUCT_ID);
msc.productRevision(USB_FW_MSC_PRODUCT_REVISION);
msc.onStartStop(msc_start_stop);
msc.onRead(msc_read);
msc.onWrite(msc_write);
......
......@@ -31,6 +31,12 @@
#ifndef USB_SERIAL
#define USB_SERIAL "0"
#endif
#ifndef USB_WEBUSB_ENABLED
#define USB_WEBUSB_ENABLED false
#endif
#ifndef USB_WEBUSB_URL
#define USB_WEBUSB_URL "https://espressif.github.io/arduino-esp32/webusb.html"
#endif
#if CFG_TUD_DFU_RUNTIME
static uint16_t load_dfu_descriptor(uint8_t * dst, uint8_t * itf)
......@@ -116,8 +122,8 @@ ESPUSB::ESPUSB(size_t task_stack_size, uint8_t event_task_priority)
,usb_protocol(MISC_PROTOCOL_IAD)
,usb_attributes(TUSB_DESC_CONFIG_ATT_SELF_POWERED)
,usb_power_ma(500)
,webusb_enabled(false)
,webusb_url("https://espressif.github.io/arduino-esp32/webusb.html")
,webusb_enabled(USB_WEBUSB_ENABLED)
,webusb_url(USB_WEBUSB_URL)
,_started(false)
,_task_stack_size(task_stack_size)
,_event_task_priority(event_task_priority)
......
......@@ -61,7 +61,7 @@ static void cplstr(void *dst, const void * src, size_t max_len){
// Invoked when received GET_MAX_LUN request, required for multiple LUNs implementation
uint8_t tud_msc_get_maxlun_cb(void)
{
log_v("");
log_v("%u", MSC_ACTIVE_LUN);
return MSC_ACTIVE_LUN;
}
......
......@@ -13,27 +13,22 @@
// limitations under the License.
#include "firmware_msc_fat.h"
static void cplstr(void *dst, const void * src, size_t max_len){
//copy up to max_len chars from src to dst and do not terminate
static size_t cplstr(void *dst, const void * src, size_t max_len){
if(!src || !dst || !max_len){
return;
return 0;
}
size_t l = strlen((const char *)src);
if(l > max_len){
l = max_len;
}
memcpy(dst, src, l);
return l;
}
//copy up to max_len chars from src to dst, adding spaces up to max_len. do not terminate
static void cplstrsp(void *dst, const void * src, size_t max_len){
if(!src || !dst || !max_len){
return;
}
size_t l = strlen((const char *)src);
if(l > max_len){
l = max_len;
}
memcpy(dst, src, l);
size_t l = cplstr(dst, src, max_len);
for(l; l < max_len; l++){
((uint8_t*)dst)[l] = 0x20;
}
......@@ -89,6 +84,7 @@ static void fat16_set_table_index(uint8_t * table, uint16_t index, uint16_t valu
*(uint16_t *)(table + offset) = value;
}
//Interface
const char * fat_file_system_type(bool fat16) {
return ((fat16)?FAT16_FILE_SYSTEM_TYPE:FAT12_FILE_SYSTEM_TYPE);
}
......
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <stdint.h>
// Default USB Settings
#define USB_VID 0x303A
#define USB_PID 0x0003
#define USB_MANUFACTURER "Espressif Systems"
#define USB_PRODUCT "ESP32-S2-USB"
#define USB_SERIAL "0"
#define USB_WEBUSB_ENABLED false
#define USB_WEBUSB_URL "https://espressif.github.io/arduino-esp32/webusb.html"
// Default USB FirmwareMSC Settings
#define USB_FW_MSC_VENDOR_ID "ESP32-S2" //max 8 chars
#define USB_FW_MSC_PRODUCT_ID "Firmware MSC" //max 16 chars
#define USB_FW_MSC_PRODUCT_REVISION "1.23" //max 4 chars
#define USB_FW_MSC_VOLUME_NAME "S2-Firmware" //max 11 chars
#define USB_FW_MSC_SERIAL_NUMBER 0x00000000
#define EXTERNAL_NUM_INTERRUPTS 46
#define NUM_DIGITAL_PINS 48
#define NUM_ANALOG_INPUTS 20
#define analogInputToDigitalPin(p) (((p)<20)?(esp32_adc2gpio[(p)]):-1)
#define digitalPinToInterrupt(p) (((p)<48)?(p):-1)
#define digitalPinHasPWM(p) (p < 46)
static const uint8_t TX = 43;
static const uint8_t RX = 44;
static const uint8_t SDA = 8;
static const uint8_t SCL = 9;
static const uint8_t SS = 34;
static const uint8_t MOSI = 35;
static const uint8_t MISO = 37;
static const uint8_t SCK = 36;
static const uint8_t A0 = 1;
static const uint8_t A1 = 2;
static const uint8_t A2 = 3;
static const uint8_t A3 = 4;
static const uint8_t A4 = 5;
static const uint8_t A5 = 6;
static const uint8_t A6 = 7;
static const uint8_t A7 = 8;
static const uint8_t A8 = 9;
static const uint8_t A9 = 10;
static const uint8_t A10 = 11;
static const uint8_t A11 = 12;
static const uint8_t A12 = 13;
static const uint8_t A13 = 14;
static const uint8_t A14 = 15;
static const uint8_t A15 = 16;
static const uint8_t A16 = 17;
static const uint8_t A17 = 18;
static const uint8_t A18 = 19;
static const uint8_t A19 = 20;
static const uint8_t T1 = 1;
static const uint8_t T2 = 2;
static const uint8_t T3 = 3;
static const uint8_t T4 = 4;
static const uint8_t T5 = 5;
static const uint8_t T6 = 6;
static const uint8_t T7 = 7;
static const uint8_t T8 = 8;
static const uint8_t T9 = 9;
static const uint8_t T10 = 10;
static const uint8_t T11 = 11;
static const uint8_t T12 = 12;
static const uint8_t T13 = 13;
static const uint8_t T14 = 14;
static const uint8_t DAC1 = 17;
static const uint8_t DAC2 = 18;
#endif /* Pins_Arduino_h */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册