Skip to content

Commit 42eba89

Browse files
authored
updates
* keep folder flags * Use 80Mhz for PSRAM too * Use 40Mhz for PSRAM too * lib lcd needs to be specific for S3 * esp32-p4: Enable optimizations for RGB LCD * Update Kconfig.projbuild * Update tusb_config.h * CONFIG_TINYUSB_CDC_MAX_PORTS=2 * AR_BRANCH="release/v3.1.x" * fix(TinyUSB): USB HUB Subport Added, FIFO sizes(Bias Periodic OUT) * Update defconfig.opi_ram * set s3 cache size to 16kb * CONFIG_HEAP_POISONING_DISABLED=y * rm "-DNDEBUG" from compile DEFINES * Update prepare-ci.sh * Update dcd_dwc2.c * Update dcd_dwc2.patch * remove duplicate entry * CONFIG_MBEDTLS_SHA1_C=y * Fix compile error sha1 * better IDF commit checkout handling * Update install-esp-idf.sh
1 parent c61ce03 commit 42eba89

16 files changed

+118
-65
lines changed

components/arduino_tinyusb/Kconfig.projbuild

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ menu "Arduino TinyUSB"
4242
help
4343
CDC FIFO size of TX
4444

45+
config TINYUSB_CDC_MAX_PORTS
46+
int "Maximum enabled CDC ports"
47+
range 1 2
48+
default 1
49+
depends on TINYUSB_CDC_ENABLED
50+
help
51+
Maximum enabled CDC ports
52+
4553
endmenu
4654

4755
menu "Mass Storage (MSC) driver"

components/arduino_tinyusb/include/tusb_config.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,11 @@ extern "C" {
115115
#define CFG_TUD_ENDOINT0_SIZE 64
116116

117117
// Enabled Drivers
118-
#define CFG_TUD_CDC CONFIG_TINYUSB_CDC_ENABLED
118+
#ifdef CONFIG_TINYUSB_CDC_MAX_PORTS
119+
#define CFG_TUD_CDC CONFIG_TINYUSB_CDC_MAX_PORTS
120+
#else
121+
#define CFG_TUD_CDC 0
122+
#endif
119123
#define CFG_TUD_MSC CONFIG_TINYUSB_MSC_ENABLED
120124
#define CFG_TUD_HID CONFIG_TINYUSB_HID_ENABLED
121125
#define CFG_TUD_MIDI CONFIG_TINYUSB_MIDI_ENABLED

components/arduino_tinyusb/patches/dcd_dwc2.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
dwc2_regs_t* dwc2 = DWC2_REG(rhport);
2020
const uint8_t epnum = tu_edpt_number(p_endpoint_desc->bEndpointAddress);
2121
@@ -266,7 +277,18 @@
22-
depctl.bm.set_data0_iso_even = 1;
22+
depctl.set_data0_iso_even = 1;
2323
}
2424
if (dir == TUSB_DIR_IN) {
25-
- depctl.bm.tx_fifo_num = epnum;
26-
+ //depctl.bm.tx_fifo_num = epnum;
25+
- depctl.tx_fifo_num = epnum;
26+
+ //depctl.tx_fifo_num = epnum;
2727
+ uint8_t fifo_num = epnum;
2828
+#if TU_CHECK_MCU(OPT_MCU_ESP32S2, OPT_MCU_ESP32S3)
2929
+ // Special Case for EP5, which is used by CDC but not actually called by the driver
@@ -34,7 +34,7 @@
3434
+ fifo_num = get_free_fifo();
3535
+ }
3636
+#endif
37-
+ depctl.bm.tx_fifo_num = fifo_num;
37+
+ depctl.tx_fifo_num = fifo_num;
3838
}
3939

4040
dwc2_dep_t* dep = &dwc2->ep[dir == TUSB_DIR_IN ? 0 : 1][epnum];

components/arduino_tinyusb/src/dcd_dwc2.c

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,6 @@
4141
#include "device/dcd.h"
4242
#include "dwc2_common.h"
4343

44-
#if TU_CHECK_MCU(OPT_MCU_GD32VF103)
45-
#define DWC2_EP_COUNT(_dwc2) DWC2_EP_MAX
46-
#else
47-
#define DWC2_EP_COUNT(_dwc2) ((_dwc2)->ghwcfg2_bm.num_dev_ep + 1)
48-
#endif
49-
5044
//--------------------------------------------------------------------+
5145
// MACRO TYPEDEF CONSTANT ENUM
5246
//--------------------------------------------------------------------+
@@ -79,6 +73,16 @@ CFG_TUD_MEM_SECTION static struct {
7973
TUD_EPBUF_DEF(setup_packet, 8);
8074
} _dcd_usbbuf;
8175

76+
TU_ATTR_ALWAYS_INLINE static inline uint8_t dwc2_ep_count(const dwc2_regs_t* dwc2) {
77+
#if TU_CHECK_MCU(OPT_MCU_GD32VF103)
78+
return DWC2_EP_MAX;
79+
#else
80+
const dwc2_ghwcfg2_t ghwcfg2 = {.value = dwc2->ghwcfg2};
81+
return ghwcfg2.num_dev_ep + 1;
82+
#endif
83+
}
84+
85+
8286
//--------------------------------------------------------------------
8387
// DMA
8488
//--------------------------------------------------------------------
@@ -102,7 +106,8 @@ bool dcd_dcache_clean_invalidate(const void* addr, uint32_t data_size) {
102106
TU_ATTR_ALWAYS_INLINE static inline bool dma_device_enabled(const dwc2_regs_t* dwc2) {
103107
(void) dwc2;
104108
// Internal DMA only
105-
return CFG_TUD_DWC2_DMA_ENABLE && dwc2->ghwcfg2_bm.arch == GHWCFG2_ARCH_INTERNAL_DMA;
109+
const dwc2_ghwcfg2_t ghwcfg2 = {.value = dwc2->ghwcfg2};
110+
return CFG_TUD_DWC2_DMA_ENABLE && ghwcfg2.arch == GHWCFG2_ARCH_INTERNAL_DMA;
106111
}
107112

108113
static void dma_setup_prepare(uint8_t rhport) {
@@ -261,20 +266,15 @@ static void edpt_activate(uint8_t rhport, const tusb_desc_endpoint_t* p_endpoint
261266
xfer->interval = p_endpoint_desc->bInterval;
262267

263268
// Endpoint control
264-
union {
265-
uint32_t value;
266-
dwc2_depctl_t bm;
267-
} depctl;
268-
depctl.value = 0;
269-
270-
depctl.bm.mps = xfer->max_size;
271-
depctl.bm.active = 1;
272-
depctl.bm.type = p_endpoint_desc->bmAttributes.xfer;
269+
dwc2_depctl_t depctl = {.value = 0};
270+
depctl.mps = xfer->max_size;
271+
depctl.active = 1;
272+
depctl.type = p_endpoint_desc->bmAttributes.xfer;
273273
if (p_endpoint_desc->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS) {
274-
depctl.bm.set_data0_iso_even = 1;
274+
depctl.set_data0_iso_even = 1;
275275
}
276276
if (dir == TUSB_DIR_IN) {
277-
//depctl.bm.tx_fifo_num = epnum;
277+
//depctl.tx_fifo_num = epnum;
278278
uint8_t fifo_num = epnum;
279279
#if TU_CHECK_MCU(OPT_MCU_ESP32S2, OPT_MCU_ESP32S3)
280280
// Special Case for EP5, which is used by CDC but not actually called by the driver
@@ -285,7 +285,7 @@ static void edpt_activate(uint8_t rhport, const tusb_desc_endpoint_t* p_endpoint
285285
fifo_num = get_free_fifo();
286286
}
287287
#endif
288-
depctl.bm.tx_fifo_num = fifo_num;
288+
depctl.tx_fifo_num = fifo_num;
289289
}
290290

291291
dwc2_dep_t* dep = &dwc2->ep[dir == TUSB_DIR_IN ? 0 : 1][epnum];
@@ -365,31 +365,22 @@ static void edpt_schedule_packets(uint8_t rhport, const uint8_t epnum, const uin
365365
}
366366

367367
// transfer size: A full OUT transfer (multiple packets, possibly) triggers XFRC.
368-
union {
369-
uint32_t value;
370-
dwc2_ep_tsize_t bm;
371-
} deptsiz;
372-
deptsiz.value = 0;
373-
deptsiz.bm.xfer_size = total_bytes;
374-
deptsiz.bm.packet_count = num_packets;
375-
368+
dwc2_ep_tsize_t deptsiz = {.value = 0};
369+
deptsiz.xfer_size = total_bytes;
370+
deptsiz.packet_count = num_packets;
376371
dep->tsiz = deptsiz.value;
377372

378373
// control
379-
union {
380-
dwc2_depctl_t bm;
381-
uint32_t value;
382-
} depctl;
383-
depctl.value = dep->ctl;
384-
385-
depctl.bm.clear_nak = 1;
386-
depctl.bm.enable = 1;
387-
if (depctl.bm.type == DEPCTL_EPTYPE_ISOCHRONOUS && xfer->interval == 1) {
388-
const uint32_t odd_now = (dwc2->dsts_bm.frame_number & 1u);
374+
dwc2_depctl_t depctl = {.value = dep->ctl};
375+
depctl.clear_nak = 1;
376+
depctl.enable = 1;
377+
if (depctl.type == DEPCTL_EPTYPE_ISOCHRONOUS && xfer->interval == 1) {
378+
const dwc2_dsts_t dsts = {.value = dwc2->dsts};
379+
const uint32_t odd_now = dsts.frame_number & 1u;
389380
if (odd_now) {
390-
depctl.bm.set_data0_iso_even = 1;
381+
depctl.set_data0_iso_even = 1;
391382
} else {
392-
depctl.bm.set_data1_iso_odd = 1;
383+
depctl.set_data1_iso_odd = 1;
393384
}
394385
}
395386

@@ -432,7 +423,8 @@ bool dcd_init(uint8_t rhport, const tusb_rhport_init_t* rh_init) {
432423

433424
// XCVRDLY: transceiver delay between xcvr_sel and txvalid during device chirp is required
434425
// when using with some PHYs such as USB334x (USB3341, USB3343, USB3346, USB3347)
435-
if (dwc2->ghwcfg2_bm.hs_phy_type == GHWCFG2_HSPHY_ULPI) {
426+
const dwc2_ghwcfg2_t ghwcfg2 = {.value = dwc2->ghwcfg2};
427+
if (ghwcfg2.hs_phy_type == GHWCFG2_HSPHY_ULPI) {
436428
dcfg |= DCFG_XCVRDLY;
437429
}
438430
} else {
@@ -667,7 +659,7 @@ void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) {
667659
// 7.4.1 Initialization on USB Reset
668660
static void handle_bus_reset(uint8_t rhport) {
669661
dwc2_regs_t *dwc2 = DWC2_REG(rhport);
670-
const uint8_t ep_count = DWC2_EP_COUNT(dwc2);
662+
const uint8_t ep_count = dwc2_ep_count(dwc2);
671663

672664
tu_memclr(xfer_status, sizeof(xfer_status));
673665

@@ -697,7 +689,9 @@ static void handle_bus_reset(uint8_t rhport) {
697689
dfifo_device_init(rhport);
698690

699691
// 5. Reset device address
700-
dwc2->dcfg_bm.address = 0;
692+
dwc2_dcfg_t dcfg = {.value = dwc2->dcfg};
693+
dcfg.address = 0;
694+
dwc2->dcfg = dcfg.value;
701695

702696
// Fixed both control EP0 size to 64 bytes
703697
dwc2->epin[0].ctl &= ~(0x03 << DIEPCTL_MPSIZ_Pos);
@@ -717,8 +711,9 @@ static void handle_bus_reset(uint8_t rhport) {
717711

718712
static void handle_enum_done(uint8_t rhport) {
719713
dwc2_regs_t *dwc2 = DWC2_REG(rhport);
714+
const dwc2_dsts_t dsts = {.value = dwc2->dsts};
720715
tusb_speed_t speed;
721-
switch (dwc2->dsts_bm.enum_speed) {
716+
switch (dsts.enum_speed) {
722717
case DCFG_SPEED_HIGH:
723718
speed = TUSB_SPEED_HIGH;
724719
break;
@@ -763,12 +758,12 @@ static void handle_rxflvl_irq(uint8_t rhport) {
763758
const volatile uint32_t* rx_fifo = dwc2->fifo[0];
764759

765760
// Pop control word off FIFO
766-
const dwc2_grxstsp_t grxstsp_bm = dwc2->grxstsp_bm;
767-
const uint8_t epnum = grxstsp_bm.ep_ch_num;
761+
const dwc2_grxstsp_t grxstsp = {.value = dwc2->grxstsp};
762+
const uint8_t epnum = grxstsp.ep_ch_num;
768763

769764
dwc2_dep_t* epout = &dwc2->epout[epnum];
770765

771-
switch (grxstsp_bm.packet_status) {
766+
switch (grxstsp.packet_status) {
772767
case GRXSTS_PKTSTS_GLOBAL_OUT_NAK:
773768
// Global OUT NAK: do nothing
774769
break;
@@ -790,7 +785,7 @@ static void handle_rxflvl_irq(uint8_t rhport) {
790785

791786
case GRXSTS_PKTSTS_RX_DATA: {
792787
// Out packet received
793-
const uint16_t byte_count = grxstsp_bm.byte_count;
788+
const uint16_t byte_count = grxstsp.byte_count;
794789
xfer_ctl_t* xfer = XFER_CTL_BASE(epnum, TUSB_DIR_OUT);
795790

796791
if (byte_count) {
@@ -804,7 +799,8 @@ static void handle_rxflvl_irq(uint8_t rhport) {
804799

805800
// short packet, minus remaining bytes (xfer_size)
806801
if (byte_count < xfer->max_size) {
807-
xfer->total_len -= epout->tsiz_bm.xfer_size;
802+
const dwc2_ep_tsize_t tsiz = {.value = epout->tsiz};
803+
xfer->total_len -= tsiz.xfer_size;
808804
if (epnum == 0) {
809805
xfer->total_len -= _dcd_data.ep0_pending[TUSB_DIR_OUT];
810806
_dcd_data.ep0_pending[TUSB_DIR_OUT] = 0;
@@ -866,11 +862,13 @@ static void handle_epin_slave(uint8_t rhport, uint8_t epnum, dwc2_diepint_t diep
866862
// - 64 bytes or
867863
// - Half/Empty of TX FIFO size (configured by GAHBCFG.TXFELVL)
868864
if (diepint_bm.txfifo_empty && (dwc2->diepempmsk & (1 << epnum))) {
869-
const uint16_t remain_packets = epin->tsiz_bm.packet_count;
865+
dwc2_ep_tsize_t tsiz = {.value = epin->tsiz};
866+
const uint16_t remain_packets = tsiz.packet_count;
870867

871868
// Process every single packet (only whole packets can be written to fifo)
872869
for (uint16_t i = 0; i < remain_packets; i++) {
873-
const uint16_t remain_bytes = (uint16_t) epin->tsiz_bm.xfer_size;
870+
tsiz.value = epin->tsiz;
871+
const uint16_t remain_bytes = (uint16_t) tsiz.xfer_size;
874872
const uint16_t xact_bytes = tu_min16(remain_bytes, xfer->max_size);
875873

876874
// Check if dtxfsts has enough space available
@@ -889,7 +887,8 @@ static void handle_epin_slave(uint8_t rhport, uint8_t epnum, dwc2_diepint_t diep
889887
}
890888

891889
// Turn off TXFE if all bytes are written.
892-
if (epin->tsiz_bm.xfer_size == 0) {
890+
tsiz.value = epin->tsiz;
891+
if (tsiz.xfer_size == 0) {
893892
dwc2->diepempmsk &= ~(1 << epnum);
894893
}
895894
}
@@ -920,7 +919,8 @@ static void handle_epout_dma(uint8_t rhport, uint8_t epnum, dwc2_doepint_t doepi
920919
xfer_ctl_t* xfer = XFER_CTL_BASE(epnum, TUSB_DIR_OUT);
921920

922921
// determine actual received bytes
923-
const uint16_t remain = epout->tsiz_bm.xfer_size;
922+
const dwc2_ep_tsize_t tsiz = {.value = epout->tsiz};
923+
const uint16_t remain = tsiz.xfer_size;
924924
xfer->total_len -= remain;
925925

926926
// this is ZLP, so prepare EP0 for next setup
@@ -956,7 +956,7 @@ static void handle_epin_dma(uint8_t rhport, uint8_t epnum, dwc2_diepint_t diepin
956956
static void handle_ep_irq(uint8_t rhport, uint8_t dir) {
957957
dwc2_regs_t* dwc2 = DWC2_REG(rhport);
958958
const bool is_dma = dma_device_enabled(dwc2);
959-
const uint8_t ep_count = DWC2_EP_COUNT(dwc2);
959+
const uint8_t ep_count = dwc2_ep_count(dwc2);
960960
const uint8_t daint_offset = (dir == TUSB_DIR_IN) ? DAINT_IEPINT_Pos : DAINT_OEPINT_Pos;
961961
dwc2_dep_t* ep_base = &dwc2->ep[dir == TUSB_DIR_IN ? 0 : 1][0];
962962

configs/builds.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@
3636
"out":"lib/libesp_hw_support.a",
3737
"targets":["esp32s3"]
3838
},
39+
{
40+
"file":"libesp_lcd.a",
41+
"src":"build/esp-idf/esp_lcd/libesp_lcd.a",
42+
"out":"lib/libesp_lcd.a",
43+
"targets":["esp32s3"]
44+
},
3945
{
4046
"file":"sections.ld",
4147
"src":"build/esp-idf/esp_system/ld/sections.ld",

configs/defconfig.40m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
2+
CONFIG_SPIRAM_SPEED_40M=y
3+
CONFIG_SPIRAM_SPEED=40

configs/defconfig.80m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
CONFIG_ESPTOOLPY_FLASHFREQ_80M=y
2+
CONFIG_SPIRAM_SPEED_80M=y
3+
CONFIG_SPIRAM_SPEED=80

configs/defconfig.common

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304
7878
CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y
7979
CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
8080
CONFIG_HAL_ASSERTION_DISABLE=y
81-
CONFIG_HEAP_POISONING_LIGHT=y
81+
CONFIG_HEAP_POISONING_DISABLED=y
8282
CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024
8383
CONFIG_HTTPD_WS_SUPPORT=y
8484
CONFIG_LOG_DEFAULT_LEVEL_NONE=y
@@ -158,7 +158,7 @@ CONFIG_MBEDTLS_ROM_MD5=y
158158
CONFIG_MBEDTLS_HARDWARE_ECC=y
159159
CONFIG_MBEDTLS_HARDWARE_AES=y
160160
CONFIG_MBEDTLS_HARDWARE_MPI=y
161-
CONFIG_MBEDTLS_HARDWARE_SHA=y
161+
# CONFIG_MBEDTLS_HARDWARE_SHA is not set
162162
# CONFIG_MBEDTLS_ECC_OTHER_CURVES_SOFT_FALLBACK is not set
163163
# CONFIG_MBEDTLS_HAVE_TIME is not set
164164
# CONFIG_MBEDTLS_ECDSA_DETERMINISTIC is not set
@@ -178,6 +178,8 @@ CONFIG_MBEDTLS_ECP_C=y
178178
CONFIG_MBEDTLS_ECDH_C=y
179179
CONFIG_MBEDTLS_ECDSA_C=y
180180
CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
181+
# CONFIG_MBEDTLS_SHA1_C is not set
182+
# CONFIG_MBEDTLS_SHA1_ALT is not set
181183
# CONFIG_MBEDTLS_DHM_C is not set
182184
# CONFIG_MBEDTLS_ECJPAKE_C is not set
183185
# CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS is not set
@@ -227,6 +229,14 @@ CONFIG_LITTLEFS_MAX_PARTITIONS=2
227229
CONFIG_LITTLEFS_MULTIVERSION=y
228230
CONFIG_LITTLEFS_DISK_VERSION_2_0=y
229231

232+
#
233+
# TinyUSB Config
234+
#
235+
CONFIG_TINYUSB_CDC_MAX_PORTS=2
236+
CONFIG_USB_HOST_HUBS_SUPPORTED=y
237+
CONFIG_USB_HOST_HUB_MULTI_LEVEL=y
238+
CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT=y
239+
230240
#
231241
# Disable Cameras not used
232242
#

configs/defconfig.esp32

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ CONFIG_ETH_USE_SPI_ETHERNET=y
3333

3434
CONFIG_SPIRAM=y
3535
CONFIG_SPIRAM_OCCUPY_HSPI_HOST=y
36-
CONFIG_ULP_COPROC_ENABLED=y
3736
# CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1 is not set
3837
# CONFIG_UNITY_ENABLE_FLOAT is not set
3938
# CONFIG_UNITY_ENABLE_DOUBLE is not set

configs/defconfig.esp32p4

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=3120
2020
CONFIG_CACHE_L2_CACHE_256KB=y
2121
CONFIG_CACHE_L2_CACHE_LINE_128B=y
2222

23+
# RGB Display Optimizations
24+
CONFIG_LCD_RGB_ISR_IRAM_SAFE=y
25+
CONFIG_LCD_RGB_RESTART_IN_VSYNC=y
26+
2327
CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
2428
CONFIG_ESP_SDIO_BUS_WIDTH=4
2529
CONFIG_ESP_SDIO_CLOCK_FREQ_KHZ=40000

configs/defconfig.esp32s3

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ CONFIG_ULP_COPROC_RESERVE_MEM=4096
77
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
88
CONFIG_SPIRAM=y
99
CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
10+
CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y
11+
CONFIG_ESP32S3_DATA_CACHE_16KB=y
1012
CONFIG_RTC_CLK_CAL_CYCLES=576
1113
CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO=y
1214
# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set

configs/defconfig.opi_ram

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y
77
# I2S_ISR_IRAM_SAFE has to be set!! Done in common config
88
CONFIG_GDMA_ISR_IRAM_SAFE=y
99
# Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash
10+
CONFIG_SPIRAM_XIP_FROM_PSRAM=y
1011
CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
1112
CONFIG_SPIRAM_RODATA=y

tools/config.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fi
1111

1212
# Arduino branch to use
1313
if [ -z $AR_BRANCH ]; then
14-
AR_BRANCH="main"
14+
AR_BRANCH="release/v3.1.x"
1515
fi
1616

1717
if [ -z $IDF_TARGET ]; then

0 commit comments

Comments
 (0)