Skip to content

Commit e562b3f

Browse files
authored
add p4 rev300 support
1 parent 8ff66f3 commit e562b3f

File tree

10 files changed

+244
-32
lines changed

10 files changed

+244
-32
lines changed

.github/workflows/parallel_build.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: IDF v5.5 based build
1+
name: IDF v5.5
22

33
on:
44
workflow_dispatch: # Manually start a workflow
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
strategy:
1111
matrix:
12-
target: [esp32, esp32s2, esp32s3, esp32c2, esp32c3, esp32c5, esp32c6, esp32h2, esp32p4, esp32c61]
12+
target: [esp32, esp32s2, esp32s3, esp32c2, esp32c3, esp32c5, esp32c6, esp32h2, esp32p4, esp32p4_es, esp32c61]
1313
fail-fast: true
1414
steps:
1515
- uses: actions/checkout@v4

CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ idf_build_get_property(elf EXECUTABLE GENERATOR_EXPRESSION)
99

1010
add_custom_command(
1111
OUTPUT "idf_libs"
12-
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-libs.sh ${IDF_TARGET} "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_SPIRAM_MODE_OCT}" "${CONFIG_IDF_TARGET_ARCH_XTENSA}"
12+
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-libs.sh ${IDF_TARGET} "$ENV{CHIP_VARIANT}" "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_SPIRAM_MODE_OCT}" "${CONFIG_IDF_TARGET_ARCH_XTENSA}"
1313
DEPENDS ${elf}
1414
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
1515
VERBATIM
@@ -18,7 +18,7 @@ add_custom_target(idf-libs DEPENDS "idf_libs")
1818

1919
add_custom_command(
2020
OUTPUT "copy_bootloader"
21-
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-bootloader.sh ${IDF_TARGET} "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_LIB_BUILDER_FLASHFREQ}"
21+
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-bootloader.sh ${IDF_TARGET} "$ENV{CHIP_VARIANT}" "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_LIB_BUILDER_FLASHFREQ}"
2222
DEPENDS bootloader
2323
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
2424
VERBATIM
@@ -27,7 +27,7 @@ add_custom_target(copy-bootloader DEPENDS "copy_bootloader")
2727

2828
add_custom_command(
2929
OUTPUT "mem_variant"
30-
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-mem-variant.sh ${IDF_TARGET} "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_SPIRAM_MODE_OCT}"
30+
COMMAND ${CMAKE_SOURCE_DIR}/tools/copy-mem-variant.sh ${IDF_TARGET} "$ENV{CHIP_VARIANT}" "${CONFIG_LIB_BUILDER_FLASHMODE}" "${CONFIG_SPIRAM_MODE_OCT}"
3131
DEPENDS ${elf}
3232
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
3333
VERBATIM

build.sh

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,12 @@ if [ "$BUILD_TYPE" != "all" ]; then
125125
# Target Features Configs
126126
for target_json in `jq -c '.targets[]' configs/builds.json`; do
127127
target=$(echo "$target_json" | jq -c '.target' | tr -d '"')
128+
export CHIP_VARIANT=$(echo "$target_json" | jq -c '.chip_variant // "'$target'"' | tr -d '"')
128129

129-
# Check if $target is in the $TARGET array
130+
# Check if $CHIP_VARIANT is in the $TARGET array
130131
target_in_array=false
131132
for item in "${TARGET[@]}"; do
132-
if [ "$item" = "$target" ]; then
133+
if [ "$item" = "$CHIP_VARIANT" ]; then
133134
target_in_array=true
134135
break
135136
fi
@@ -140,12 +141,12 @@ if [ "$BUILD_TYPE" != "all" ]; then
140141
continue
141142
fi
142143

143-
configs="configs/defconfig.common;configs/defconfig.$target"
144+
configs="configs/defconfig.common;configs/defconfig.$CHIP_VARIANT"
144145
for defconf in `echo "$target_json" | jq -c '.features[]' | tr -d '"'`; do
145146
configs="$configs;configs/defconfig.$defconf"
146147
done
147148

148-
echo "* Building for $target"
149+
echo "* Building for target: '$target', variant: '$CHIP_VARIANT'"
149150

150151
# Configs From Arguments
151152
for conf in $CONFIGS; do
@@ -175,36 +176,37 @@ echo "Framework built from
175176
#targets_count=`jq -c '.targets[] | length' configs/builds.json`
176177
for target_json in `jq -c '.targets[]' configs/builds.json`; do
177178
target=$(echo "$target_json" | jq -c '.target' | tr -d '"')
179+
export CHIP_VARIANT=$(echo "$target_json" | jq -c '.chip_variant // "'$target'"' | tr -d '"')
178180
target_skip=$(echo "$target_json" | jq -c '.skip // 0')
179181

180-
# Check if $target is in the $TARGET array if not "all"
182+
# Check if $CHIP_VARIANT is in the $TARGET array if not "all"
181183
if [ "$TARGET" != "all" ]; then
182184
target_in_array=false
183185
for item in "${TARGET[@]}"; do
184-
if [ "$item" = "$target" ]; then
186+
if [ "$item" = "$CHIP_VARIANT" ]; then
185187
target_in_array=true
186188
break
187189
fi
188190
done
189191

190-
# If $target is not in the $TARGET array, skip processing
192+
# If $CHIP_VARIANT is not in the $TARGET array, skip processing
191193
if [ "$target_in_array" = false ]; then
192-
echo "* Skipping Target: $target"
194+
echo "* Skipping Target: $CHIP_VARIANT"
193195
continue
194196
fi
195197
fi
196198

197199
# Skip chips that should not be a part of the final libs
198200
# WARNING!!! this logic needs to be updated when cron builds are split into jobs
199201
if [ "$TARGET" = "all" ] && [ $target_skip -eq 1 ]; then
200-
echo "* Skipping Target: $target"
202+
echo "* Skipping Target: $CHIP_VARIANT"
201203
continue
202204
fi
203205

204-
echo "* Target: $target"
206+
echo "* Target: '$target', Variant: '$CHIP_VARIANT'"
205207

206208
# Build Main Configs List
207-
main_configs="configs/defconfig.common;configs/defconfig.$target"
209+
main_configs="configs/defconfig.common;configs/defconfig.$CHIP_VARIANT"
208210
for defconf in `echo "$target_json" | jq -c '.features[]' | tr -d '"'`; do
209211
main_configs="$main_configs;configs/defconfig.$defconf"
210212
done

configs/builds.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,18 @@
6464
["dio","80m"]
6565
]
6666
},
67+
{
68+
"chip_variant": "esp32p4_es",
69+
"target": "esp32p4",
70+
"features":["qio_ram"],
71+
"idf_libs":["qio","200m"],
72+
"bootloaders":[
73+
["qio","200m"]
74+
],
75+
"mem_variants":[
76+
[]
77+
]
78+
},
6779
{
6880
"target": "esp32p4",
6981
"features":["qio_ram"],

configs/defconfig.esp32p4

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# CONFIG_ESP32P4_SELECTS_REV_LESS_V3 is not set
12
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
23

34
CONFIG_SPIRAM=y
@@ -8,11 +9,6 @@ CONFIG_COMPILER_FLOAT_LIB_FROM_RVFPLIB=y
89
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
910
CONFIG_ESPTOOLPY_FLASHSIZE="16MB"
1011

11-
# Enable LP Core
12-
CONFIG_ULP_COPROC_ENABLED=y
13-
CONFIG_ULP_COPROC_TYPE_LP_CORE=y
14-
CONFIG_ULP_COPROC_RESERVE_MEM=8192
15-
1612
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_360=y
1713
CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE=y
1814
# CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1 is not set

configs/defconfig.esp32p4_es

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y
2+
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
3+
4+
CONFIG_SPIRAM=y
5+
6+
CONFIG_NEWLIB_NANO_FORMAT=y
7+
CONFIG_COMPILER_FLOAT_LIB_FROM_RVFPLIB=y
8+
9+
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
10+
CONFIG_ESPTOOLPY_FLASHSIZE="16MB"
11+
12+
# Enable LP Core
13+
CONFIG_ULP_COPROC_ENABLED=y
14+
CONFIG_ULP_COPROC_TYPE_LP_CORE=y
15+
CONFIG_ULP_COPROC_RESERVE_MEM=8192
16+
17+
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_360=y
18+
CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE=y
19+
# CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1 is not set
20+
21+
CONFIG_RTC_CLK_CAL_CYCLES=576
22+
# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set
23+
CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y
24+
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=3120
25+
CONFIG_CACHE_L2_CACHE_256KB=y
26+
CONFIG_CACHE_L2_CACHE_LINE_128B=y
27+
28+
# RGB Display Optimizations
29+
CONFIG_LCD_RGB_ISR_IRAM_SAFE=y
30+
31+
# CONFIG_ESP_HOSTED_ENABLE_ITWT is not set
32+
# CONFIG_ESP_HOSTED_ENABLE_DPP is not set
33+
CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
34+
CONFIG_ESP_SDIO_BUS_WIDTH=4
35+
CONFIG_ESP_SDIO_CLOCK_FREQ_KHZ=40000
36+
CONFIG_ESP_SDIO_PIN_CMD=19
37+
CONFIG_ESP_SDIO_PIN_CLK=18
38+
CONFIG_ESP_SDIO_PIN_D0=14
39+
CONFIG_ESP_SDIO_PIN_D1=15
40+
CONFIG_ESP_SDIO_PIN_D2=16
41+
CONFIG_ESP_SDIO_PIN_D3=17
42+
43+
#
44+
# Camera driver
45+
#
46+
CONFIG_CAMERA_SC2336=y
47+
CONFIG_CAMERA_OV5647=y
48+
49+
#
50+
# BT config
51+
#
52+
CONFIG_BT_ENABLED=y
53+
CONFIG_BT_CONTROLLER_DISABLED=y
54+
CONFIG_BT_BLUEDROID_ENABLED=n
55+
CONFIG_BT_NIMBLE_ENABLED=y
56+
CONFIG_BT_NIMBLE_TRANSPORT_UART=n
57+
58+
#
59+
# Wi-Fi Remote
60+
#
61+
CONFIG_ESP_WIFI_REMOTE_ENABLED=y
62+
CONFIG_ESP_WIFI_REMOTE_LIBRARY_HOSTED=y
63+
64+
#### Add Wi-Fi Remote config for better performance:
65+
CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=16
66+
CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=64
67+
CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=64
68+
CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y
69+
CONFIG_WIFI_RMT_TX_BA_WIN=32
70+
CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y
71+
CONFIG_WIFI_RMT_RX_BA_WIN=32
72+
73+
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534
74+
CONFIG_LWIP_TCP_WND_DEFAULT=65534
75+
CONFIG_LWIP_TCP_RECVMBOX_SIZE=64
76+
CONFIG_LWIP_UDP_RECVMBOX_SIZE=64
77+
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64
78+
79+
#
80+
# Enable ESP Hosted BT
81+
# Used as VHCI transport between BT Host and Controller
82+
#
83+
CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE=y
84+
CONFIG_ESP_HOSTED_NIMBLE_HCI_VHCI=y
85+
86+
#
87+
# PPP
88+
#
89+
CONFIG_LWIP_PPP_SUPPORT=y
90+
CONFIG_LWIP_PPP_NOTIFY_PHASE_SUPPORT=y
91+
CONFIG_LWIP_PPP_PAP_SUPPORT=y
92+
CONFIG_LWIP_PPP_ENABLE_IPV6=n
93+
94+
#
95+
# Arduino TinyUSB
96+
#
97+
CONFIG_TINYUSB_ENABLED=y
98+
CONFIG_TINYUSB_DEBUG_LEVEL=0
99+
100+
#
101+
# Serial (CDC) driver
102+
#
103+
CONFIG_TINYUSB_CDC_ENABLED=y
104+
CONFIG_TINYUSB_DESC_CDC_STRING="Tasmota CDC Device"
105+
CONFIG_TINYUSB_CDC_RX_BUFSIZE=512
106+
CONFIG_TINYUSB_CDC_TX_BUFSIZE=512
107+
CONFIG_TINYUSB_CDC_MAX_PORTS=2
108+
# end of Serial (CDC) driver
109+
110+
#
111+
# Mass Storage (MSC) driver
112+
#
113+
CONFIG_TINYUSB_MSC_ENABLED=y
114+
CONFIG_TINYUSB_DESC_MSC_STRING="Tasmota MSC Device"
115+
CONFIG_TINYUSB_MSC_BUFSIZE=4096
116+
# end of Mass Storage (MSC) driver
117+
118+
#
119+
# Human Interface (HID) driver
120+
#
121+
CONFIG_TINYUSB_HID_ENABLED=y
122+
CONFIG_TINYUSB_DESC_HID_STRING="Tasmota HID Device"
123+
CONFIG_TINYUSB_HID_BUFSIZE=512
124+
# end of Human Interface (HID) driver
125+
126+
#
127+
# MIDI driver
128+
#
129+
CONFIG_TINYUSB_MIDI_ENABLED=y
130+
CONFIG_TINYUSB_DESC_MIDI_STRING="Tasmota MIDI Device"
131+
CONFIG_TINYUSB_MIDI_RX_BUFSIZE=512
132+
CONFIG_TINYUSB_MIDI_TX_BUFSIZE=512
133+
# end of MIDI driver
134+
135+
#
136+
# VIDEO driver
137+
#
138+
CONFIG_TINYUSB_VIDEO_ENABLED=y
139+
CONFIG_TINYUSB_DESC_VIDEO_STRING="Tasmota Video Device"
140+
CONFIG_TINYUSB_VIDEO_STREAMING_BUFSIZE=512
141+
CONFIG_TINYUSB_VIDEO_STREAMING_IFS=1
142+
# end of VIDEO driver
143+
144+
#
145+
# DFU Runtime driver
146+
#
147+
CONFIG_TINYUSB_DFU_RT_ENABLED=y
148+
CONFIG_TINYUSB_DESC_DFU_RT_STRING="Tasmota DFU_RT Device"
149+
# end of DFU Runtime driver
150+
151+
#
152+
# DFU driver
153+
#
154+
CONFIG_TINYUSB_DFU_ENABLED=y
155+
CONFIG_TINYUSB_DESC_DFU_STRING="Tasmota DFU Device"
156+
CONFIG_TINYUSB_DFU_BUFSIZE=4096
157+
# end of DFU driver
158+
159+
#
160+
# VENDOR driver
161+
#
162+
CONFIG_TINYUSB_VENDOR_ENABLED=y
163+
CONFIG_TINYUSB_DESC_VENDOR_STRING="Tasmota VENDOR Device"
164+
CONFIG_TINYUSB_VENDOR_RX_BUFSIZE=512
165+
CONFIG_TINYUSB_VENDOR_TX_BUFSIZE=512
166+
# end of VENDOR driver
167+
168+
#
169+
# NCM driver
170+
#
171+
CONFIG_TINYUSB_NCM_ENABLED=y
172+
173+
#
174+
# USB-OTG
175+
#
176+
CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=1024
177+
CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y
178+
179+
#
180+
# Root Port configuration
181+
#
182+
CONFIG_USB_HOST_DEBOUNCE_DELAY_MS=250
183+
CONFIG_USB_HOST_RESET_HOLD_MS=30
184+
CONFIG_USB_HOST_RESET_RECOVERY_MS=30
185+
CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS=10
186+
CONFIG_USB_HOST_HUBS_SUPPORTED=y
187+
CONFIG_USB_HOST_HUB_MULTI_LEVEL=y
188+
189+
#
190+
# Downstream Port configuration
191+
#
192+
CONFIG_USB_HOST_EXT_PORT_RESET_ATTEMPTS=1
193+
CONFIG_USB_HOST_EXT_PORT_RESET_RECOVERY_DELAY_MS=30
194+
CONFIG_USB_HOST_DWC_DMA_CAP_MEMORY_IN_PSRAM=y
195+
CONFIG_USB_OTG_SUPPORTED=y

tools/config.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ if [ -z $IDF_TARGET ]; then
2525
fi
2626
fi
2727

28+
if [ -z "$CHIP_VARIANT" ]; then
29+
CHIP_VARIANT="$IDF_TARGET"
30+
fi
31+
2832
# Owner of the target ESP32 Arduino repository
2933
AR_USER="tasmota"
3034

@@ -55,8 +59,8 @@ AR_TOOLS="$AR_OUT/tools"
5559
AR_PATCHES="$AR_ROOT/patches"
5660
AR_PLATFORM_TXT="$AR_OUT/platform.txt"
5761
AR_GEN_PART_PY="$AR_TOOLS/gen_esp32part.py"
58-
AR_SDK="$AR_TOOLS/esp32-arduino-libs/$IDF_TARGET"
59-
PIO_SDK="FRAMEWORK_SDK_DIR, \"$IDF_TARGET\""
62+
AR_SDK="$AR_TOOLS/esp32-arduino-libs/$CHIP_VARIANT"
63+
PIO_SDK="FRAMEWORK_SDK_DIR, \"$CHIP_VARIANT\""
6064
TOOLS_JSON_OUT="$AR_TOOLS/esp32-arduino-libs"
6165
IDF_LIBS_DIR="$AR_ROOT/../esp32-arduino-libs"
6266

tools/copy-bootloader.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#!/bin/bash
22

33
IDF_TARGET=$1
4-
FLASH_MODE="$2"
5-
FLASH_FREQ="$3"
4+
CHIP_VARIANT=$2
5+
FLASH_MODE="$3"
6+
FLASH_FREQ="$4"
67
BOOTCONF=$FLASH_MODE"_$FLASH_FREQ"
78

89
source ./tools/config.sh

0 commit comments

Comments
 (0)