WIP: Initial OPI support

This commit is contained in:
me-no-dev 2022-02-11 16:28:35 +02:00
parent 399b5e6328
commit fa086ff883
26 changed files with 1426 additions and 47 deletions

View file

@ -16,6 +16,7 @@ menu.LORAWAN_REGION=LoRaWan Region
menu.LoRaWanDebugLevel=LoRaWan Debug Level
menu.LoopCore=Arduino Runs On
menu.EventsCore=Events Run On
menu.MemoryType=Memory Type
##############################################################
### DO NOT PUT BOARDS ABOVE THE OFFICIAL ESPRESSIF BOARDS! ###
@ -55,9 +56,52 @@ esp32s3.build.flash_mode=dio
esp32s3.build.boot=qio
esp32s3.build.partitions=default
esp32s3.build.defines=
esp32s3.build.extra_libs="-L{compiler.sdk.path}/lib/spiram"
esp32s3.build.loop_core=
esp32s3.build.event_core=
esp32s3.build.memory_type=qspi_qspi
esp32s3.menu.MemoryType.default=QSPI Flash and PSRAM
esp32s3.menu.MemoryType.default.build.memory_type=qspi_qspi
esp32s3.menu.MemoryType.qspi_opi=QSPI Flash and OPI PSRAM
esp32s3.menu.MemoryType.qspi_opi.build.memory_type=qspi_opi
esp32s3.menu.MemoryType.opi_opi=OPI Flash and PSRAM
esp32s3.menu.MemoryType.opi_opi.build.memory_type=opi_opi
esp32s3.menu.PSRAM.disabled=Disabled
esp32s3.menu.PSRAM.disabled.build.defines=
esp32s3.menu.PSRAM.enabled=Enabled
esp32s3.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
esp32s3.menu.FlashMode.qio=QIO
esp32s3.menu.FlashMode.qio.build.flash_mode=dio
esp32s3.menu.FlashMode.qio.build.boot=qio
esp32s3.menu.FlashMode.dio=DIO
esp32s3.menu.FlashMode.dio.build.flash_mode=dio
esp32s3.menu.FlashMode.dio.build.boot=dio
esp32s3.menu.FlashMode.qout=QOUT
esp32s3.menu.FlashMode.qout.build.flash_mode=dout
esp32s3.menu.FlashMode.qout.build.boot=qout
esp32s3.menu.FlashMode.dout=DOUT
esp32s3.menu.FlashMode.dout.build.flash_mode=dout
esp32s3.menu.FlashMode.dout.build.boot=dout
esp32s3.menu.FlashMode.opi=OPI
esp32s3.menu.FlashMode.opi.build.flash_mode=dout
esp32s3.menu.FlashMode.opi.build.boot=opi
esp32s3.menu.FlashFreq.80=80MHz
esp32s3.menu.FlashFreq.80.build.flash_freq=80m
esp32s3.menu.FlashFreq.40=40MHz
esp32s3.menu.FlashFreq.40.build.flash_freq=40m
esp32s3.menu.FlashSize.4M=4MB (32Mb)
esp32s3.menu.FlashSize.4M.build.flash_size=4MB
esp32s3.menu.FlashSize.8M=8MB (64Mb)
esp32s3.menu.FlashSize.8M.build.flash_size=8MB
esp32s3.menu.FlashSize.8M.build.partitions=default_8MB
esp32s3.menu.FlashSize.16M=16MB (128Mb)
esp32s3.menu.FlashSize.16M.build.flash_size=16MB
esp32s3.menu.FlashSize.32M=32MB (256Mb)
esp32s3.menu.FlashSize.32M.build.flash_size=32MB
esp32s3.menu.LoopCore.1=Core 1
esp32s3.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1
@ -96,16 +140,6 @@ esp32s3.menu.UploadMode.cdc=Internal USB
esp32s3.menu.UploadMode.cdc.upload.use_1200bps_touch=true
esp32s3.menu.UploadMode.cdc.upload.wait_for_upload_port=true
esp32s3.menu.PSRAM.disabled=Disabled
esp32s3.menu.PSRAM.disabled.build.defines=
esp32s3.menu.PSRAM.disabled.build.extra_libs="-L{compiler.sdk.path}/lib/spiram"
esp32s3.menu.PSRAM.qspi=QSPI
esp32s3.menu.PSRAM.qspi.build.defines=-DBOARD_HAS_PSRAM
esp32s3.menu.PSRAM.qspi.build.extra_libs="-L{compiler.sdk.path}/lib/spiram"
esp32s3.menu.PSRAM.opi=OPI
esp32s3.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM -DCONFIG_SPIRAM_BOOT_INIT -DCONFIG_SPIRAM_MODE_OCT=1
esp32s3.menu.PSRAM.opi.build.extra_libs="-L{compiler.sdk.path}/lib/opiram"
esp32s3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
esp32s3.menu.PartitionScheme.default.build.partitions=default
esp32s3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
@ -153,35 +187,6 @@ esp32s3.menu.CPUFreq.20.build.f_cpu=20000000L
esp32s3.menu.CPUFreq.10=10MHz
esp32s3.menu.CPUFreq.10.build.f_cpu=10000000L
esp32s3.menu.FlashMode.qio=QIO
esp32s3.menu.FlashMode.qio.build.flash_mode=dio
esp32s3.menu.FlashMode.qio.build.boot=qio
esp32s3.menu.FlashMode.dio=DIO
esp32s3.menu.FlashMode.dio.build.flash_mode=dio
esp32s3.menu.FlashMode.dio.build.boot=dio
esp32s3.menu.FlashMode.qout=QOUT
esp32s3.menu.FlashMode.qout.build.flash_mode=dout
esp32s3.menu.FlashMode.qout.build.boot=qout
esp32s3.menu.FlashMode.dout=DOUT
esp32s3.menu.FlashMode.dout.build.flash_mode=dout
esp32s3.menu.FlashMode.dout.build.boot=dout
esp32s3.menu.FlashFreq.80=80MHz
esp32s3.menu.FlashFreq.80.build.flash_freq=80m
esp32s3.menu.FlashFreq.40=40MHz
esp32s3.menu.FlashFreq.40.build.flash_freq=40m
esp32s3.menu.FlashSize.4M=4MB (32Mb)
esp32s3.menu.FlashSize.4M.build.flash_size=4MB
esp32s3.menu.FlashSize.8M=8MB (64Mb)
esp32s3.menu.FlashSize.8M.build.flash_size=8MB
esp32s3.menu.FlashSize.8M.build.partitions=default_8MB
esp32s3.menu.FlashSize.2M=2MB (16Mb)
esp32s3.menu.FlashSize.2M.build.flash_size=2MB
esp32s3.menu.FlashSize.2M.build.partitions=minimal
esp32s3.menu.FlashSize.16M=16MB (128Mb)
esp32s3.menu.FlashSize.16M.build.flash_size=16MB
esp32s3.menu.UploadSpeed.921600=921600
esp32s3.menu.UploadSpeed.921600.upload.speed=921600
esp32s3.menu.UploadSpeed.115200=115200
@ -884,8 +889,8 @@ esp32s3box.build.flash_freq=80m
esp32s3box.build.flash_mode=dio
esp32s3box.build.boot=qio
esp32s3box.build.partitions=default
esp32s3box.build.extra_libs="-L{compiler.sdk.path}/lib/opiram"
esp32s3box.build.defines=-DBOARD_HAS_PSRAM -DCONFIG_SPIRAM_BOOT_INIT -DCONFIG_SPIRAM_MODE_OCT=1
esp32s3box.build.defines=-DBOARD_HAS_PSRAM
esp32s3box.build.memory_type=qspi_opi
esp32s3box.build.loop_core=-DARDUINO_RUNNING_CORE=1
esp32s3box.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
@ -955,6 +960,118 @@ esp32s3box.menu.DebugLevel.verbose.build.code_debug=5
##############################################################
esp32s3camlcd.name=ESP32S3 CAM LCD
esp32s3camlcd.vid.0=0x303a
esp32s3camlcd.pid.0=0x1001
esp32s3camlcd.upload.tool=esptool_py
esp32s3camlcd.upload.maximum_size=1310720
esp32s3camlcd.upload.maximum_data_size=327680
esp32s3camlcd.upload.flags=
esp32s3camlcd.upload.extra_flags=
esp32s3camlcd.upload.use_1200bps_touch=false
esp32s3camlcd.upload.wait_for_upload_port=false
esp32s3camlcd.serial.disableDTR=false
esp32s3camlcd.serial.disableRTS=false
esp32s3camlcd.build.tarch=xtensa
esp32s3camlcd.build.bootloader_addr=0x0
esp32s3camlcd.build.target=esp32s3
esp32s3camlcd.build.mcu=esp32s3
esp32s3camlcd.build.core=esp32
esp32s3camlcd.build.variant=esp32s3camlcd
esp32s3camlcd.build.board=ESP32S3_CAM_LCD
esp32s3camlcd.build.usb_mode=1
esp32s3camlcd.build.cdc_on_boot=0
esp32s3camlcd.build.msc_on_boot=0
esp32s3camlcd.build.dfu_on_boot=0
esp32s3camlcd.build.f_cpu=240000000L
esp32s3camlcd.build.flash_size=4MB
esp32s3camlcd.build.flash_freq=80m
esp32s3camlcd.build.flash_mode=dout
esp32s3camlcd.build.boot=opi
esp32s3camlcd.build.partitions=default
esp32s3camlcd.build.defines=-DBOARD_HAS_PSRAM
esp32s3camlcd.build.memory_type=opi_opi
esp32s3camlcd.build.loop_core=
esp32s3camlcd.build.event_core=
esp32s3camlcd.menu.LoopCore.1=Core 1
esp32s3camlcd.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1
esp32s3camlcd.menu.LoopCore.0=Core 0
esp32s3camlcd.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0
esp32s3camlcd.menu.EventsCore.1=Core 1
esp32s3camlcd.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
esp32s3camlcd.menu.EventsCore.0=Core 0
esp32s3camlcd.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0
esp32s3camlcd.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
esp32s3camlcd.menu.PartitionScheme.default.build.partitions=default
esp32s3camlcd.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
esp32s3camlcd.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
esp32s3camlcd.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
esp32s3camlcd.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
esp32s3camlcd.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
esp32s3camlcd.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
esp32s3camlcd.menu.PartitionScheme.minimal.build.partitions=minimal
esp32s3camlcd.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
esp32s3camlcd.menu.PartitionScheme.no_ota.build.partitions=no_ota
esp32s3camlcd.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
esp32s3camlcd.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
esp32s3camlcd.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
esp32s3camlcd.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
esp32s3camlcd.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
esp32s3camlcd.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
esp32s3camlcd.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
esp32s3camlcd.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
esp32s3camlcd.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
esp32s3camlcd.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
esp32s3camlcd.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
esp32s3camlcd.menu.PartitionScheme.huge_app.build.partitions=huge_app
esp32s3camlcd.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
esp32s3camlcd.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
esp32s3camlcd.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
esp32s3camlcd.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
esp32s3camlcd.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
esp32s3camlcd.menu.PartitionScheme.fatflash.build.partitions=ffat
esp32s3camlcd.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
esp32s3camlcd.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
esp32s3camlcd.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
esp32s3camlcd.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
esp32s3camlcd.menu.UploadSpeed.921600=921600
esp32s3camlcd.menu.UploadSpeed.921600.upload.speed=921600
esp32s3camlcd.menu.UploadSpeed.115200=115200
esp32s3camlcd.menu.UploadSpeed.115200.upload.speed=115200
esp32s3camlcd.menu.UploadSpeed.256000.windows=256000
esp32s3camlcd.menu.UploadSpeed.256000.upload.speed=256000
esp32s3camlcd.menu.UploadSpeed.230400.windows.upload.speed=256000
esp32s3camlcd.menu.UploadSpeed.230400=230400
esp32s3camlcd.menu.UploadSpeed.230400.upload.speed=230400
esp32s3camlcd.menu.UploadSpeed.460800.linux=460800
esp32s3camlcd.menu.UploadSpeed.460800.macosx=460800
esp32s3camlcd.menu.UploadSpeed.460800.upload.speed=460800
esp32s3camlcd.menu.UploadSpeed.512000.windows=512000
esp32s3camlcd.menu.UploadSpeed.512000.upload.speed=512000
esp32s3camlcd.menu.DebugLevel.none=None
esp32s3camlcd.menu.DebugLevel.none.build.code_debug=0
esp32s3camlcd.menu.DebugLevel.error=Error
esp32s3camlcd.menu.DebugLevel.error.build.code_debug=1
esp32s3camlcd.menu.DebugLevel.warn=Warn
esp32s3camlcd.menu.DebugLevel.warn.build.code_debug=2
esp32s3camlcd.menu.DebugLevel.info=Info
esp32s3camlcd.menu.DebugLevel.info.build.code_debug=3
esp32s3camlcd.menu.DebugLevel.debug=Debug
esp32s3camlcd.menu.DebugLevel.debug.build.code_debug=4
esp32s3camlcd.menu.DebugLevel.verbose=Verbose
esp32s3camlcd.menu.DebugLevel.verbose.build.code_debug=5
##############################################################
esp32s2usb.name=ESP32S2 Native USB
esp32s2usb.vid.0=0x303a
esp32s2usb.pid.0=0x0003

View file

@ -117,6 +117,7 @@ compiler.elf2hex.extra_flags=
compiler.libraries.ldflags=
# This can be overriden in boards.txt
build.memory_type=qspi_qspi
build.flash_size=4MB
build.flash_mode=dio
build.boot=qio
@ -165,7 +166,7 @@ recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.fla
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}"
## Combine gc-sections, archives, and objects
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-Wl,--Map={build.path}/{build.project_name}.map" "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} {build.extra_flags} -Wl,--start-group {object_files} "{archive_file_path}" {build.extra_libs} {compiler.c.elf.libs} {compiler.libraries.ldflags} -Wl,--end-group -Wl,-EL -o "{build.path}/{build.project_name}.elf"
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-Wl,--Map={build.path}/{build.project_name}.map" "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.sdk.path}/{build.memory_type}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} {build.extra_flags} -Wl,--start-group {object_files} "{archive_file_path}" {build.extra_libs} {compiler.c.elf.libs} {compiler.libraries.ldflags} -Wl,--end-group -Wl,-EL -o "{build.path}/{build.project_name}.elf"
## Create partitions.bin
recipe.objcopy.partitions.bin.pattern={tools.gen_esp32part.cmd} -q "{build.path}/partitions.csv" "{build.path}/{build.project_name}.partitions.bin"

View file

@ -290,7 +290,8 @@ env.Append(
LIBPATH=[
join(FRAMEWORK_DIR, "tools", "sdk", "esp32", "lib"),
join(FRAMEWORK_DIR, "tools", "sdk", "esp32", "ld")
join(FRAMEWORK_DIR, "tools", "sdk", "esp32", "ld"),
join(FRAMEWORK_DIR, "tools", "sdk", "esp32", "qspi_qspi")
],
LIBS=[

View file

@ -280,7 +280,8 @@ env.Append(
LIBPATH=[
join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "lib"),
join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "ld")
join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "ld"),
join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "qspi_qspi")
],
LIBS=[

View file

@ -277,7 +277,8 @@ env.Append(
LIBPATH=[
join(FRAMEWORK_DIR, "tools", "sdk", "esp32s2", "lib"),
join(FRAMEWORK_DIR, "tools", "sdk", "esp32s2", "ld")
join(FRAMEWORK_DIR, "tools", "sdk", "esp32s2", "ld"),
join(FRAMEWORK_DIR, "tools", "sdk", "esp32s2", "qspi_qspi")
],
LIBS=[

View file

@ -294,7 +294,8 @@ env.Append(
LIBPATH=[
join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "lib"),
join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "ld")
join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "ld"),
join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "qspi_qspi")
],
LIBS=[

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,71 @@
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <stdint.h>
#define USB_VID 0x303a
#define USB_PID 0x1001
#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 = 17;
static const uint8_t SCL = 18;
static const uint8_t SS = 10;
static const uint8_t MOSI = 11;
static const uint8_t MISO = 13;
static const uint8_t SCK = 12;
// Wire1 for Cam and TS
#define I2C_SDA 17
#define I2C_SCL 18
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 40
#define SIOD_GPIO_NUM 17
#define SIOC_GPIO_NUM 18
#define Y9_GPIO_NUM 39
#define Y8_GPIO_NUM 41
#define Y7_GPIO_NUM 42
#define Y6_GPIO_NUM 12
#define Y5_GPIO_NUM 3
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 47
#define Y2_GPIO_NUM 13
#define VSYNC_GPIO_NUM 21
#define HREF_GPIO_NUM 38
#define PCLK_GPIO_NUM 11
#define TFT_FREQ 40000000
#define TFT_BITS 8
#define TFT_WIDTH 480
#define TFT_HEIGHT 320
#define TFT_WR 4
#define TFT_DC 2
#define TFT_D0 45
#define TFT_D1 16
#define TFT_D2 15
#define TFT_D3 10
#define TFT_D4 8
#define TFT_D5 7
#define TFT_D6 6
#define TFT_D7 5
#define SDMMC_CMD 20
#define SDMMC_CLK 9
#define SDMMC_DATA 19
#define MIC_CLK 0
#define MIC_DATA 1
#endif /* Pins_Arduino_h */