Add support for CMake, ESP32-S2 and IDF master
This commit is contained in:
parent
fe8eeb0cab
commit
1ee032a19c
29 changed files with 5050 additions and 1305 deletions
7
.github/workflows/cron.yml
vendored
7
.github/workflows/cron.yml
vendored
|
|
@ -20,12 +20,13 @@ jobs:
|
|||
|
||||
strategy:
|
||||
matrix:
|
||||
idf_branch: [release/v3.3]
|
||||
#idf_branch: [release/v3.3, release/v4.0]
|
||||
idf_branch: [master, release/v3.3]
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Install dependencies
|
||||
run: bash ./tools/prepare-ci.sh
|
||||
run: sudo apt-get install git wget curl libssl-dev libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache
|
||||
- name: Install Python Wheel
|
||||
run: pip install wheel
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.PUSH_TOKEN }}
|
||||
|
|
|
|||
4
.github/workflows/push.yml
vendored
4
.github/workflows/push.yml
vendored
|
|
@ -14,7 +14,9 @@ jobs:
|
|||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Install dependencies
|
||||
run: bash ./tools/prepare-ci.sh
|
||||
run: sudo apt-get install git wget curl libssl-dev libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache
|
||||
- name: Install Python Wheel
|
||||
run: pip install wheel
|
||||
- name: Build Arduino Libs
|
||||
run: bash ./build.sh
|
||||
- name: Upload archive
|
||||
|
|
|
|||
4
.github/workflows/repository_dispatch.yml
vendored
4
.github/workflows/repository_dispatch.yml
vendored
|
|
@ -9,7 +9,9 @@ jobs:
|
|||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Install dependencies
|
||||
run: bash ./tools/prepare-ci.sh
|
||||
run: sudo apt-get install git wget curl libssl-dev libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache
|
||||
- name: Install Python Wheel
|
||||
run: pip install wheel
|
||||
- name: Handle Event
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.PUSH_TOKEN }}
|
||||
|
|
|
|||
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -1,10 +1,17 @@
|
|||
sdkconfig.old
|
||||
.DS_Store
|
||||
.vscode
|
||||
components/arduino/
|
||||
components/esp-face/
|
||||
components/esp32-camera/
|
||||
components/esp_littlefs/
|
||||
components/esp-rainmaker/
|
||||
components/esp-dsp/
|
||||
esp-idf/
|
||||
out/
|
||||
build/
|
||||
xtensa-esp32-elf/
|
||||
dist/
|
||||
env.sh
|
||||
sdkconfig
|
||||
sdkconfig.old
|
||||
version.txt
|
||||
components/arduino_tinyusb/tinyusb/
|
||||
|
|
|
|||
19
CMakeLists.txt
Normal file
19
CMakeLists.txt
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# The following lines of boilerplate have to be in your project's
|
||||
# CMakeLists in this exact order for cmake to work correctly
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
if(IDF_TARGET STREQUAL "esp32")
|
||||
set(EXTRA_COMPONENT_DIRS ${CMAKE_SOURCE_DIR}/components/esp-rainmaker/components)
|
||||
endif()
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(arduino-lib-builder)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "idf_libs"
|
||||
COMMAND ${CMAKE_SOURCE_DIR}/tools/prepare-libs.sh ${IDF_TARGET}
|
||||
DEPENDS gen_project_binary bootloader partition_table
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target(idf-libs ALL DEPENDS "idf_libs")
|
||||
17
Makefile
17
Makefile
|
|
@ -1,17 +0,0 @@
|
|||
PROJECT_NAME := esp32-arduino-lib-builder
|
||||
|
||||
EXTRA_COMPONENT_DIRS += $(PROJECT_PATH)/components/esp-face/lib
|
||||
EXTRA_COMPONENT_DIRS += $(PROJECT_PATH)/components/esp-face/image_util
|
||||
EXTRA_COMPONENT_DIRS += $(PROJECT_PATH)/components/esp-face/face_detection
|
||||
EXTRA_COMPONENT_DIRS += $(PROJECT_PATH)/components/esp-face/face_recognition
|
||||
|
||||
include $(IDF_PATH)/make/project.mk
|
||||
|
||||
IDF_INCLUDES = $(filter $(IDF_PATH)/components/%, $(COMPONENT_INCLUDES))
|
||||
IDF_OUT = $(patsubst $(IDF_PATH)/components/%,%,$(IDF_INCLUDES))
|
||||
|
||||
PROJ_INCLUDES = $(filter-out $(PROJECT_PATH)/components/arduino/%,$(filter $(PROJECT_PATH)/components/%, $(COMPONENT_INCLUDES)))
|
||||
PROJ_OUT = $(patsubst $(PROJECT_PATH)/components/%,%,$(PROJ_INCLUDES))
|
||||
|
||||
idf-libs: all
|
||||
@$(PROJECT_PATH)/tools/prepare-libs.sh $(IDF_OUT) $(PROJ_OUT)
|
||||
59
build.sh
59
build.sh
|
|
@ -10,41 +10,6 @@ if ! [ -x "$(command -v git)" ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v make)" ]; then
|
||||
echo "ERROR: Make is not installed! Please install Make first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v flex)" ]; then
|
||||
echo "ERROR: flex is not installed! Please install flex first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v bison)" ]; then
|
||||
echo "ERROR: bison is not installed! Please install bison first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v gperf)" ]; then
|
||||
echo "ERROR: gperf is not installed! Please install gperf first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v stat)" ]; then
|
||||
echo "ERROR: stat is not installed! Please install stat first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
awk="awk"
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
awk="gawk"
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v $awk)" ]; then
|
||||
echo "ERROR: $awk is not installed! Please install $awk first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p dist
|
||||
|
||||
# update components from git
|
||||
|
|
@ -55,17 +20,27 @@ if [ $? -ne 0 ]; then exit 1; fi
|
|||
source ./tools/install-esp-idf.sh
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
|
||||
# build and prepare libs
|
||||
./tools/build-libs.sh
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
TARGETS="esp32s2 esp32"
|
||||
|
||||
# bootloader
|
||||
./tools/build-bootloaders.sh
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
echo $(git -C $AR_COMPS/arduino describe --all --long) > version.txt
|
||||
|
||||
rm -rf out build sdkconfig sdkconfig.old
|
||||
|
||||
for target in $TARGETS; do
|
||||
# configure the build for the target
|
||||
rm -rf build sdkconfig sdkconfig.old
|
||||
cp "sdkconfig.$target" sdkconfig
|
||||
# build and prepare libs
|
||||
idf.py build
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
cp sdkconfig "sdkconfig.$target"
|
||||
# build bootloaders
|
||||
./tools/build-bootloaders.sh
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
done
|
||||
|
||||
# archive the build
|
||||
./tools/archive-build.sh
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
|
||||
# POST Build
|
||||
#./tools/copy-to-arduino.sh
|
||||
|
|
|
|||
53
components/arduino_tinyusb/CMakeLists.txt
Executable file
53
components/arduino_tinyusb/CMakeLists.txt
Executable file
|
|
@ -0,0 +1,53 @@
|
|||
idf_component_register(REQUIRES esp_rom freertos soc PRIV_REQUIRES arduino main)
|
||||
|
||||
if(CONFIG_TINYUSB_ENABLED)
|
||||
|
||||
### variables ###
|
||||
#################
|
||||
set(compile_options
|
||||
"-DCFG_TUSB_MCU=OPT_MCU_ESP32S2"
|
||||
"-DCFG_TUSB_DEBUG=${CONFIG_TINYUSB_DEBUG_LEVEL}"
|
||||
"-Wno-type-limits" # needed for the vanila tinyusb with turned off classes
|
||||
)
|
||||
idf_component_get_property(FREERTOS_ORIG_INCLUDE_PATH freertos
|
||||
ORIG_INCLUDE_PATH)
|
||||
set(includes_private
|
||||
# tusb:
|
||||
"${COMPONENT_DIR}/tinyusb/hw/bsp/"
|
||||
"${COMPONENT_DIR}/tinyusb/src/"
|
||||
"${COMPONENT_DIR}/tinyusb/src/device"
|
||||
)
|
||||
|
||||
set(includes_public
|
||||
# tusb:
|
||||
"${FREERTOS_ORIG_INCLUDE_PATH}"
|
||||
"${COMPONENT_DIR}/tinyusb/src/"
|
||||
# espressif:
|
||||
"${COMPONENT_DIR}/include")
|
||||
set(srcs
|
||||
# espressif:
|
||||
"${COMPONENT_DIR}/src/dcd_esp32s2.c"
|
||||
# tusb:
|
||||
#"${COMPONENT_DIR}/tinyusb/src/portable/espressif/esp32s2/dcd_esp32s2.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/class/cdc/cdc_device.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/class/hid/hid_device.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/class/midi/midi_device.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/class/msc/msc_device.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/class/dfu/dfu_rt_device.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/class/vendor/vendor_device.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/common/tusb_fifo.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/device/usbd_control.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/device/usbd.c"
|
||||
"${COMPONENT_DIR}/tinyusb/src/tusb.c")
|
||||
|
||||
### tinyusb lib ###
|
||||
###################
|
||||
add_library(arduino_tinyusb STATIC ${srcs})
|
||||
target_include_directories(
|
||||
arduino_tinyusb
|
||||
PUBLIC ${includes_public}
|
||||
PRIVATE ${includes_private})
|
||||
target_compile_options(arduino_tinyusb PRIVATE ${compile_options})
|
||||
target_link_libraries(${COMPONENT_TARGET} INTERFACE arduino_tinyusb)
|
||||
|
||||
endif()
|
||||
184
components/arduino_tinyusb/Kconfig.projbuild
Executable file
184
components/arduino_tinyusb/Kconfig.projbuild
Executable file
|
|
@ -0,0 +1,184 @@
|
|||
menu "Arduino TinyUSB"
|
||||
|
||||
config TINYUSB_ENABLED
|
||||
bool "Enable TinyUSB driver"
|
||||
default y
|
||||
depends on IDF_TARGET_ESP32S2
|
||||
select FREERTOS_SUPPORT_STATIC_ALLOCATION
|
||||
select FREERTOS_USE_AUTHENTIC_INCLUDE_PATHS
|
||||
help
|
||||
Adds support for TinyUSB
|
||||
|
||||
menu "Serial (CDC) driver"
|
||||
depends on TINYUSB_ENABLED
|
||||
|
||||
config TINYUSB_CDC_ENABLED
|
||||
bool "Enable USB Serial (CDC) TinyUSB driver"
|
||||
default y
|
||||
help
|
||||
Enable USB Serial (CDC) TinyUSB driver.
|
||||
|
||||
config TINYUSB_DESC_CDC_STRING
|
||||
string "CDC Device String"
|
||||
default "Espressif CDC Device"
|
||||
depends on TINYUSB_CDC_ENABLED
|
||||
help
|
||||
Specify name of the CDC device
|
||||
|
||||
config TINYUSB_CDC_RX_BUFSIZE
|
||||
int "CDC FIFO size of RX"
|
||||
default 64
|
||||
depends on TINYUSB_CDC_ENABLED
|
||||
help
|
||||
CDC FIFO size of RX
|
||||
|
||||
config TINYUSB_CDC_TX_BUFSIZE
|
||||
int "CDC FIFO size of TX"
|
||||
default 64
|
||||
depends on TINYUSB_CDC_ENABLED
|
||||
help
|
||||
CDC FIFO size of TX
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Mass Storage (MSC) driver"
|
||||
depends on TINYUSB_ENABLED
|
||||
|
||||
config TINYUSB_MSC_ENABLED
|
||||
bool "Enable USB Mass Storage (MSC) TinyUSB driver"
|
||||
default y
|
||||
help
|
||||
Enable USB Mass Storage (MSC) TinyUSB driver.
|
||||
|
||||
config TINYUSB_DESC_MSC_STRING
|
||||
string "MSC Device String"
|
||||
default "Espressif MSC Device"
|
||||
depends on TINYUSB_MSC_ENABLED
|
||||
help
|
||||
Specify name of the MSC device
|
||||
|
||||
config TINYUSB_MSC_BUFSIZE
|
||||
int "MSC Buffer size"
|
||||
default 64
|
||||
depends on TINYUSB_MSC_ENABLED
|
||||
help
|
||||
MSC Buffer size
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Human Interface (HID) driver"
|
||||
depends on TINYUSB_ENABLED
|
||||
|
||||
config USB_HID_ENABLED
|
||||
bool "Enable USB Human Interface (HID) TinyUSB driver"
|
||||
default y
|
||||
help
|
||||
Enable USB Human Interface (HID) TinyUSB driver.
|
||||
|
||||
config TINYUSB_DESC_HID_STRING
|
||||
string "HID Device String"
|
||||
default "Espressif HID Device"
|
||||
depends on TINYUSB_HID_ENABLED
|
||||
help
|
||||
Specify name of the HID device
|
||||
|
||||
config TINYUSB_HID_BUFSIZE
|
||||
int "HID Buffer size"
|
||||
default 64
|
||||
depends on TINYUSB_HID_ENABLED
|
||||
help
|
||||
HID Buffer size. Should be sufficient to hold ID (if any) + Data
|
||||
|
||||
endmenu
|
||||
|
||||
menu "MIDI driver"
|
||||
depends on TINYUSB_ENABLED && (!TINYUSB_VENDOR_ENABLED || !TINYUSB_MSC_ENABLED || !TINYUSB_HID_ENABLED || !TINYUSB_CDC_ENABLED)
|
||||
|
||||
config TINYUSB_MIDI_ENABLED
|
||||
bool "Enable USB MIDI TinyUSB driver"
|
||||
default n
|
||||
help
|
||||
Enable USB MIDI TinyUSB driver.
|
||||
|
||||
config TINYUSB_DESC_MIDI_STRING
|
||||
string "MIDI Device String"
|
||||
default "Espressif MIDI Device"
|
||||
depends on TINYUSB_MIDI_ENABLED
|
||||
help
|
||||
Specify name of the MIDI device
|
||||
|
||||
config TINYUSB_MIDI_RX_BUFSIZE
|
||||
int "MIDI FIFO size of RX"
|
||||
default 64
|
||||
depends on TINYUSB_MIDI_ENABLED
|
||||
help
|
||||
MIDI FIFO size of RX
|
||||
|
||||
config TINYUSB_MIDI_TX_BUFSIZE
|
||||
int "MIDI FIFO size of TX"
|
||||
default 64
|
||||
depends on TINYUSB_MIDI_ENABLED
|
||||
help
|
||||
MIDI FIFO size of TX
|
||||
|
||||
endmenu
|
||||
|
||||
menu "DFU Runtime driver"
|
||||
depends on TINYUSB_ENABLED
|
||||
|
||||
config TINYUSB_DFU_RT_ENABLED
|
||||
bool "Enable USB DFU Runtime TinyUSB driver"
|
||||
default y
|
||||
help
|
||||
Enable USB DFU Runtime TinyUSB driver.
|
||||
|
||||
config TINYUSB_DESC_DFU_RT_STRING
|
||||
string "DFU_RT Device String"
|
||||
default "Espressif DFU_RT Device"
|
||||
depends on TINYUSB_DFU_RT_ENABLED
|
||||
help
|
||||
Specify name of the DFU_RT device
|
||||
|
||||
endmenu
|
||||
|
||||
menu "VENDOR driver"
|
||||
depends on TINYUSB_ENABLED
|
||||
|
||||
config TINYUSB_VENDOR_ENABLED
|
||||
bool "Enable USB VENDOR TinyUSB driver"
|
||||
default y
|
||||
help
|
||||
Enable USB VENDOR TinyUSB driver.
|
||||
|
||||
config TINYUSB_DESC_VENDOR_STRING
|
||||
string "VENDOR Device String"
|
||||
default "Espressif VENDOR Device"
|
||||
depends on TINYUSB_VENDOR_ENABLED
|
||||
help
|
||||
Specify name of the VENDOR device
|
||||
|
||||
config TINYUSB_VENDOR_RX_BUFSIZE
|
||||
int "VENDOR FIFO size of RX"
|
||||
default 64
|
||||
depends on TINYUSB_VENDOR_ENABLED
|
||||
help
|
||||
VENDOR FIFO size of RX
|
||||
|
||||
config TINYUSB_VENDOR_TX_BUFSIZE
|
||||
int "VENDOR FIFO size of TX"
|
||||
default 64
|
||||
depends on TINYUSB_VENDOR_ENABLED
|
||||
help
|
||||
VENDOR FIFO size of TX
|
||||
|
||||
endmenu
|
||||
|
||||
config TINYUSB_DEBUG_LEVEL
|
||||
int "TinyUSB log level (0-3)"
|
||||
default 0
|
||||
range 0 3
|
||||
depends on TINYUSB_ENABLED
|
||||
help
|
||||
Define amount of log output from TinyUSB
|
||||
|
||||
endmenu
|
||||
126
components/arduino_tinyusb/include/tusb_config.h
Executable file
126
components/arduino_tinyusb/include/tusb_config.h
Executable file
|
|
@ -0,0 +1,126 @@
|
|||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2019 Ha Thach (tinyusb.org),
|
||||
* Additions Copyright (c) 2020, Espressif Systems (Shanghai) PTE LTD
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "tusb_option.h"
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* */
|
||||
/* KCONFIG */
|
||||
/* */
|
||||
|
||||
#ifndef CONFIG_TINYUSB_CDC_ENABLED
|
||||
# define CONFIG_TINYUSB_CDC_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_TINYUSB_MSC_ENABLED
|
||||
# define CONFIG_TINYUSB_MSC_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_TINYUSB_HID_ENABLED
|
||||
# define CONFIG_TINYUSB_HID_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_TINYUSB_MIDI_ENABLED
|
||||
# define CONFIG_TINYUSB_MIDI_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_TINYUSB_CUSTOM_CLASS_ENABLED
|
||||
# define CONFIG_TINYUSB_CUSTOM_CLASS_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_TINYUSB_DFU_RT_ENABLED
|
||||
# define CONFIG_TINYUSB_DFU_RT_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_TINYUSB_VENDOR_ENABLED
|
||||
# define CONFIG_TINYUSB_VENDOR_ENABLED 0
|
||||
#endif
|
||||
|
||||
/* */
|
||||
/* COMMON CONFIGURATION */
|
||||
/* */
|
||||
|
||||
#define CFG_TUSB_MCU OPT_MCU_ESP32S2
|
||||
#define CFG_TUSB_RHPORT0_MODE OPT_MODE_DEVICE
|
||||
#define CFG_TUSB_OS OPT_OS_FREERTOS
|
||||
|
||||
/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
|
||||
* Tinyusb use follows macros to declare transferring memory so that they can be put
|
||||
* into those specific section.
|
||||
* e.g
|
||||
* - CFG_TUSB_MEM SECTION : __attribute__ (( section(".usb_ram") ))
|
||||
* - CFG_TUSB_MEM_ALIGN : __attribute__ ((aligned(4)))
|
||||
*/
|
||||
#ifndef CFG_TUSB_MEM_SECTION
|
||||
# define CFG_TUSB_MEM_SECTION
|
||||
#endif
|
||||
|
||||
#ifndef CFG_TUSB_MEM_ALIGN
|
||||
# define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4)
|
||||
#endif
|
||||
|
||||
/* */
|
||||
/* DRIVER CONFIGURATION */
|
||||
/* */
|
||||
|
||||
#define CFG_TUD_MAINTASK_SIZE 4096
|
||||
#define CFG_TUD_ENDOINT0_SIZE 64
|
||||
|
||||
// Enabled Drivers
|
||||
#define CFG_TUD_CDC CONFIG_TINYUSB_CDC_ENABLED
|
||||
#define CFG_TUD_MSC CONFIG_TINYUSB_MSC_ENABLED
|
||||
#define CFG_TUD_HID CONFIG_TINYUSB_HID_ENABLED
|
||||
#define CFG_TUD_MIDI CONFIG_TINYUSB_MIDI_ENABLED
|
||||
#define CFG_TUD_CUSTOM_CLASS CONFIG_TINYUSB_CUSTOM_CLASS_ENABLED
|
||||
#define CFG_TUD_DFU_RUNTIME CONFIG_TINYUSB_DFU_RT_ENABLED
|
||||
#define CFG_TUD_VENDOR CONFIG_TINYUSB_VENDOR_ENABLED
|
||||
|
||||
// CDC FIFO size of TX and RX
|
||||
#define CFG_TUD_CDC_RX_BUFSIZE CONFIG_TINYUSB_CDC_RX_BUFSIZE
|
||||
#define CFG_TUD_CDC_TX_BUFSIZE CONFIG_TINYUSB_CDC_TX_BUFSIZE
|
||||
|
||||
// MSC Buffer size of Device Mass storage:
|
||||
#define CFG_TUD_MSC_BUFSIZE CONFIG_TINYUSB_MSC_BUFSIZE
|
||||
|
||||
// HID buffer size Should be sufficient to hold ID (if any) + Data
|
||||
#define CFG_TUD_HID_BUFSIZE CONFIG_TINYUSB_HID_BUFSIZE
|
||||
|
||||
// MIDI FIFO size of TX and RX
|
||||
#define CFG_TUD_MIDI_RX_BUFSIZE CONFIG_TINYUSB_MIDI_RX_BUFSIZE
|
||||
#define CFG_TUD_MIDI_TX_BUFSIZE CONFIG_TINYUSB_MIDI_TX_BUFSIZE
|
||||
|
||||
// VENDOR FIFO size of TX and RX
|
||||
#define CFG_TUD_VENDOR_RX_BUFSIZE CONFIG_TINYUSB_VENDOR_RX_BUFSIZE
|
||||
#define CFG_TUD_VENDOR_TX_BUFSIZE CONFIG_TINYUSB_VENDOR_TX_BUFSIZE
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
862
components/arduino_tinyusb/src/dcd_esp32s2.c
Executable file
862
components/arduino_tinyusb/src/dcd_esp32s2.c
Executable file
|
|
@ -0,0 +1,862 @@
|
|||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2018 Scott Shawcroft, 2019 William D. Jones for Adafruit Industries
|
||||
* Copyright (c) 2019 Ha Thach (tinyusb.org)
|
||||
* Additions Copyright (c) 2020, Espressif Systems (Shanghai) Co. Ltd.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* This file is part of the TinyUSB stack.
|
||||
*/
|
||||
|
||||
#include "tusb_option.h"
|
||||
|
||||
#if CFG_TUSB_MCU == OPT_MCU_ESP32S2 && TUSB_OPT_DEVICE_ENABLED
|
||||
|
||||
// Espressif
|
||||
#include "driver/periph_ctrl.h"
|
||||
#include "freertos/xtensa_api.h"
|
||||
#include "esp_intr_alloc.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp32s2/rom/gpio.h"
|
||||
#include "soc/dport_reg.h"
|
||||
#include "soc/gpio_sig_map.h"
|
||||
#include "soc/usb_periph.h"
|
||||
|
||||
#include "device/dcd.h"
|
||||
|
||||
// Since TinyUSB doesn't use SOF for now, and this interrupt too often (1ms interval)
|
||||
// We disable SOF for now until needed later on
|
||||
#define USE_SOF 0
|
||||
|
||||
// Max number of bi-directional endpoints including EP0
|
||||
// Note: ESP32S2 specs say there are only up to 5 IN active endpoints include EP0
|
||||
// We should probably prohibit enabling Endpoint IN > 4 (not done yet)
|
||||
#define EP_MAX USB_OUT_EP_NUM
|
||||
|
||||
// FIFO size in bytes
|
||||
#define EP_FIFO_SIZE 1024
|
||||
|
||||
// Max number of IN EP FIFOs
|
||||
#define EP_FIFO_NUM 5
|
||||
|
||||
typedef struct {
|
||||
uint8_t *buffer;
|
||||
uint16_t total_len;
|
||||
uint16_t queued_len;
|
||||
uint16_t max_size;
|
||||
bool short_packet;
|
||||
} xfer_ctl_t;
|
||||
|
||||
static const char *TAG = "TUSB:DCD";
|
||||
static intr_handle_t usb_ih;
|
||||
|
||||
|
||||
static uint32_t _setup_packet[2];
|
||||
|
||||
#define XFER_CTL_BASE(_ep, _dir) &xfer_status[_ep][_dir]
|
||||
static xfer_ctl_t xfer_status[EP_MAX][2];
|
||||
|
||||
// Keep count of how many FIFOs are in use
|
||||
static uint8_t _allocated_fifos = 1; //FIFO0 is always in use
|
||||
|
||||
// Will either return an unused FIFO number, or 0 if all are used.
|
||||
static uint8_t get_free_fifo(void)
|
||||
{
|
||||
if (_allocated_fifos < EP_FIFO_NUM) return _allocated_fifos++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Setup the control endpoint 0.
|
||||
static void bus_reset(void)
|
||||
{
|
||||
for (int ep_num = 0; ep_num < USB_OUT_EP_NUM; ep_num++) {
|
||||
USB0.out_ep_reg[ep_num].doepctl |= USB_DO_SNAK0_M; // DOEPCTL0_SNAK
|
||||
}
|
||||
|
||||
USB0.dcfg &= ~USB_DEVADDR_M; // reset address
|
||||
|
||||
USB0.daintmsk |= USB_OUTEPMSK0_M | USB_INEPMSK0_M;
|
||||
USB0.doepmsk |= USB_SETUPMSK_M | USB_XFERCOMPLMSK;
|
||||
USB0.diepmsk |= USB_TIMEOUTMSK_M | USB_DI_XFERCOMPLMSK_M /*| USB_INTKNTXFEMPMSK_M*/;
|
||||
|
||||
// "USB Data FIFOs" section in reference manual
|
||||
// Peripheral FIFO architecture
|
||||
//
|
||||
// --------------- 320 or 1024 ( 1280 or 4096 bytes )
|
||||
// | IN FIFO MAX |
|
||||
// ---------------
|
||||
// | ... |
|
||||
// --------------- y + x + 16 + GRXFSIZ
|
||||
// | IN FIFO 2 |
|
||||
// --------------- x + 16 + GRXFSIZ
|
||||
// | IN FIFO 1 |
|
||||
// --------------- 16 + GRXFSIZ
|
||||
// | IN FIFO 0 |
|
||||
// --------------- GRXFSIZ
|
||||
// | OUT FIFO |
|
||||
// | ( Shared ) |
|
||||
// --------------- 0
|
||||
//
|
||||
// According to "FIFO RAM allocation" section in RM, FIFO RAM are allocated as follows (each word 32-bits):
|
||||
// - Each EP IN needs at least max packet size, 16 words is sufficient for EP0 IN
|
||||
//
|
||||
// - All EP OUT shared a unique OUT FIFO which uses
|
||||
// * 10 locations in hardware for setup packets + setup control words (up to 3 setup packets).
|
||||
// * 2 locations for OUT endpoint control words.
|
||||
// * 16 for largest packet size of 64 bytes. ( TODO Highspeed is 512 bytes)
|
||||
// * 1 location for global NAK (not required/used here).
|
||||
// * It is recommended to allocate 2 times the largest packet size, therefore
|
||||
// Recommended value = 10 + 1 + 2 x (16+2) = 47 --> Let's make it 52
|
||||
USB0.grstctl |= 0x10 << USB_TXFNUM_S; // fifo 0x10,
|
||||
USB0.grstctl |= USB_TXFFLSH_M; // Flush fifo
|
||||
USB0.grxfsiz = 52;
|
||||
|
||||
// Control IN uses FIFO 0 with 64 bytes ( 16 32-bit word )
|
||||
USB0.gnptxfsiz = (16 << USB_NPTXFDEP_S) | (USB0.grxfsiz & 0x0000ffffUL);
|
||||
|
||||
// Ready to receive SETUP packet
|
||||
USB0.out_ep_reg[0].doeptsiz |= USB_SUPCNT0_M;
|
||||
|
||||
USB0.gintmsk |= USB_IEPINTMSK_M | USB_OEPINTMSK_M;
|
||||
}
|
||||
|
||||
static void enum_done_processing(void)
|
||||
{
|
||||
ESP_EARLY_LOGV(TAG, "dcd_int_handler - Speed enumeration done! Sending DCD_EVENT_BUS_RESET then");
|
||||
// On current silicon on the Full Speed core, speed is fixed to Full Speed.
|
||||
// However, keep for debugging and in case Low Speed is ever supported.
|
||||
uint32_t enum_spd = (USB0.dsts >> USB_ENUMSPD_S) & (USB_ENUMSPD_V);
|
||||
|
||||
// Maximum packet size for EP 0 is set for both directions by writing DIEPCTL
|
||||
if (enum_spd == 0x03) { // Full-Speed (PHY on 48 MHz)
|
||||
USB0.in_ep_reg[0].diepctl &= ~USB_D_MPS0_V; // 64 bytes
|
||||
USB0.in_ep_reg[0].diepctl &= ~USB_D_STALL0_M; // clear Stall
|
||||
xfer_status[0][TUSB_DIR_OUT].max_size = 64;
|
||||
xfer_status[0][TUSB_DIR_IN].max_size = 64;
|
||||
} else {
|
||||
USB0.in_ep_reg[0].diepctl |= USB_D_MPS0_V; // 8 bytes
|
||||
USB0.in_ep_reg[0].diepctl &= ~USB_D_STALL0_M; // clear Stall
|
||||
xfer_status[0][TUSB_DIR_OUT].max_size = 8;
|
||||
xfer_status[0][TUSB_DIR_IN].max_size = 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
/* Controller API
|
||||
*------------------------------------------------------------------*/
|
||||
void dcd_init(uint8_t rhport)
|
||||
{
|
||||
(void)rhport;
|
||||
|
||||
ESP_LOGV(TAG, "DCD init - Start");
|
||||
|
||||
bool did_persist = (USB_WRAP.date.val & (1 << 31)) != 0;
|
||||
|
||||
if (did_persist) {
|
||||
//Clear persistence of USB peripheral through reset
|
||||
USB_WRAP.date.val = 0;
|
||||
} else {
|
||||
// A. Disconnect
|
||||
ESP_LOGV(TAG, "DCD init - Soft DISCONNECT and Setting up");
|
||||
USB0.dctl |= USB_SFTDISCON_M; // Soft disconnect
|
||||
|
||||
// B. Programming DCFG
|
||||
/* If USB host misbehaves during status portion of control xfer
|
||||
(non zero-length packet), send STALL back and discard. Full speed. */
|
||||
USB0.dcfg |= USB_NZSTSOUTHSHK_M | // NonZero .... STALL
|
||||
(3 << 0); // dev speed: fullspeed 1.1 on 48 mhz // TODO no value in usb_reg.h (IDF-1476)
|
||||
}
|
||||
|
||||
USB0.gahbcfg |= USB_NPTXFEMPLVL_M | USB_GLBLLNTRMSK_M; // Global interruptions ON
|
||||
USB0.gusbcfg |= USB_FORCEDEVMODE_M; // force devmode
|
||||
USB0.gotgctl &= ~(USB_BVALIDOVVAL_M | USB_BVALIDOVEN_M | USB_VBVALIDOVVAL_M); //no overrides
|
||||
|
||||
// C. Setting SNAKs, then connect
|
||||
for (int n = 0; n < USB_OUT_EP_NUM; n++) {
|
||||
USB0.out_ep_reg[n].doepctl |= USB_DO_SNAK0_M; // DOEPCTL0_SNAK
|
||||
}
|
||||
|
||||
if (!did_persist) {
|
||||
// D. Interruption masking
|
||||
USB0.gintmsk = 0; //mask all
|
||||
USB0.gotgint = ~0U; //clear OTG ints
|
||||
USB0.gintsts = ~0U; //clear pending ints
|
||||
}
|
||||
|
||||
USB0.gintmsk = USB_OTGINTMSK_M |
|
||||
USB_MODEMISMSK_M |
|
||||
#if USE_SOF
|
||||
USB_SOFMSK_M |
|
||||
#endif
|
||||
USB_RXFLVIMSK_M |
|
||||
USB_ERLYSUSPMSK_M |
|
||||
USB_USBSUSPMSK_M |
|
||||
USB_USBRSTMSK_M |
|
||||
USB_ENUMDONEMSK_M |
|
||||
USB_RESETDETMSK_M |
|
||||
USB_DISCONNINTMSK_M; // host most only
|
||||
if (did_persist) {
|
||||
USB0.grstctl &= ~USB_TXFNUM_M;
|
||||
USB0.grstctl |= 0x10 << USB_TXFNUM_S;
|
||||
USB0.grstctl |= USB_TXFFLSH;
|
||||
USB0.grxfsiz = 52;
|
||||
|
||||
for (int n = 0; n < USB_IN_EP_NUM; n++) {
|
||||
USB0.in_ep_reg[n].diepint = USB_D_XFERCOMPL0_M | USB_D_TXFEMP0_M;
|
||||
USB0.in_ep_reg[n].diepctl &= ~USB_D_STALL0_M; // clear Stall
|
||||
USB0.in_ep_reg[n].diepctl |= USB_D_CNAK0 | USB_D_EPENA0; // clear NAK
|
||||
}
|
||||
USB0.dtknqr4_fifoemptymsk &= ~(0x7F);
|
||||
|
||||
USB0.gnptxfsiz = (16 << USB_NPTXFDEP_S) | (USB0.grxfsiz & 0x0000ffffUL);
|
||||
|
||||
USB0.daintmsk |= USB_OUTEPMSK0_M | USB_INEPMSK0_M;
|
||||
USB0.doepmsk |= USB_SETUP0 | USB_XFERCOMPLMSK;
|
||||
USB0.diepmsk |= USB_TIMEOUTMSK_M | USB_DI_XFERCOMPLMSK_M;//USB_INEPNAKEFFMSK
|
||||
|
||||
USB0.gintmsk |= USB_IEPINTMSK_M | USB_OEPINTMSK_M;
|
||||
USB0.gotgint = ~0; //clear OTG ints
|
||||
USB0.gintsts = ~0; //clear pending ints
|
||||
enum_done_processing();
|
||||
dcd_event_bus_signal(0, DCD_EVENT_BUS_RESET, true);
|
||||
tusb_control_request_t request = {
|
||||
.bmRequestType_bit = { .recipient = TUSB_REQ_RCPT_DEVICE, .type = TUSB_REQ_TYPE_STANDARD, .direction = TUSB_DIR_OUT },
|
||||
.bRequest = TUSB_REQ_SET_CONFIGURATION,
|
||||
.wValue = 1,
|
||||
.wIndex = 0,
|
||||
.wLength = 0
|
||||
};
|
||||
dcd_event_setup_received(0, (uint8_t *)&request, true);
|
||||
} else {
|
||||
dcd_connect(rhport);
|
||||
}
|
||||
}
|
||||
|
||||
void dcd_set_address(uint8_t rhport, uint8_t dev_addr)
|
||||
{
|
||||
(void)rhport;
|
||||
ESP_LOGV(TAG, "DCD init - Set address : %u", dev_addr);
|
||||
USB0.dcfg |= ((dev_addr & USB_DEVADDR_V) << USB_DEVADDR_S);
|
||||
// Response with status after changing device address
|
||||
dcd_edpt_xfer(rhport, tu_edpt_addr(0, TUSB_DIR_IN), NULL, 0);
|
||||
}
|
||||
|
||||
void dcd_remote_wakeup(uint8_t rhport)
|
||||
{
|
||||
(void)rhport;
|
||||
|
||||
// TODO must manually clear this bit after 1-15 ms
|
||||
// USB0.DCTL |= USB_RMTWKUPSIG_M;
|
||||
}
|
||||
|
||||
// connect by enabling internal pull-up resistor on D+/D-
|
||||
void dcd_connect(uint8_t rhport)
|
||||
{
|
||||
(void) rhport;
|
||||
USB0.dctl &= ~USB_SFTDISCON_M;
|
||||
}
|
||||
|
||||
// disconnect by disabling internal pull-up resistor on D+/D-
|
||||
void dcd_disconnect(uint8_t rhport)
|
||||
{
|
||||
(void) rhport;
|
||||
USB0.dctl |= USB_SFTDISCON_M;
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
/* DCD Endpoint port
|
||||
*------------------------------------------------------------------*/
|
||||
|
||||
bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_edpt)
|
||||
{
|
||||
ESP_LOGV(TAG, "DCD endpoint opened");
|
||||
(void)rhport;
|
||||
|
||||
usb_out_endpoint_t *out_ep = &(USB0.out_ep_reg[0]);
|
||||
usb_in_endpoint_t *in_ep = &(USB0.in_ep_reg[0]);
|
||||
|
||||
uint8_t const epnum = tu_edpt_number(desc_edpt->bEndpointAddress);
|
||||
uint8_t const dir = tu_edpt_dir(desc_edpt->bEndpointAddress);
|
||||
|
||||
TU_ASSERT(epnum < EP_MAX);
|
||||
|
||||
xfer_ctl_t *xfer = XFER_CTL_BASE(epnum, dir);
|
||||
xfer->max_size = desc_edpt->wMaxPacketSize.size;
|
||||
|
||||
if (dir == TUSB_DIR_OUT) {
|
||||
out_ep[epnum].doepctl &= ~(USB_D_EPTYPE1_M | USB_D_MPS1_M);
|
||||
out_ep[epnum].doepctl |= USB_USBACTEP0_M |
|
||||
desc_edpt->bmAttributes.xfer << USB_EPTYPE0_S |
|
||||
desc_edpt->wMaxPacketSize.size << USB_MPS0_S;
|
||||
USB0.daintmsk |= (1 << (16 + epnum));
|
||||
} else {
|
||||
// "USB Data FIFOs" section in reference manual
|
||||
// Peripheral FIFO architecture
|
||||
//
|
||||
// --------------- 320 or 1024 ( 1280 or 4096 bytes )
|
||||
// | IN FIFO MAX |
|
||||
// ---------------
|
||||
// | ... |
|
||||
// --------------- y + x + 16 + GRXFSIZ
|
||||
// | IN FIFO 2 |
|
||||
// --------------- x + 16 + GRXFSIZ
|
||||
// | IN FIFO 1 |
|
||||
// --------------- 16 + GRXFSIZ
|
||||
// | IN FIFO 0 |
|
||||
// --------------- GRXFSIZ
|
||||
// | OUT FIFO |
|
||||
// | ( Shared ) |
|
||||
// --------------- 0
|
||||
//
|
||||
// Since OUT FIFO = GRXFSIZ, FIFO 0 = 16, for simplicity, we equally allocated for the rest of endpoints
|
||||
// - Size : (FIFO_SIZE/4 - GRXFSIZ - 16) / (EP_FIFO_NUM-1)
|
||||
// - Offset: GRXFSIZ + 16 + Size*(fifo_num-1)
|
||||
|
||||
uint8_t fifo_num = 0;
|
||||
// Special Case for EP5, which is used by CDC but not actually called by the driver
|
||||
// we can give it a fake FIFO
|
||||
if (epnum == 5) {
|
||||
fifo_num = EP_FIFO_NUM;
|
||||
} else {
|
||||
fifo_num = get_free_fifo();
|
||||
}
|
||||
TU_ASSERT(fifo_num != 0);
|
||||
|
||||
in_ep[epnum].diepctl &= ~(USB_D_TXFNUM1_M | USB_D_EPTYPE1_M | USB_DI_SETD0PID1 | USB_D_MPS1_M);
|
||||
in_ep[epnum].diepctl |= USB_D_USBACTEP1_M |
|
||||
fifo_num << USB_D_TXFNUM1_S |
|
||||
desc_edpt->bmAttributes.xfer << USB_D_EPTYPE1_S |
|
||||
(desc_edpt->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS ? (1 << USB_DI_SETD0PID1_S) : 0) |
|
||||
desc_edpt->wMaxPacketSize.size << 0;
|
||||
|
||||
USB0.daintmsk |= (1 << (0 + epnum));
|
||||
|
||||
// Both TXFD and TXSA are in unit of 32-bit words.
|
||||
// IN FIFO 0 was configured during enumeration, hence the "+ 16".
|
||||
uint16_t const allocated_size = (USB0.grxfsiz & 0x0000ffff) + 16;
|
||||
uint16_t const fifo_size = (EP_FIFO_SIZE/4 - allocated_size) / (EP_FIFO_NUM-1);
|
||||
uint32_t const fifo_offset = allocated_size + fifo_size*(fifo_num-1);
|
||||
|
||||
// DIEPTXF starts at FIFO #1.
|
||||
USB0.dieptxf[epnum - 1] = (fifo_size << USB_NPTXFDEP_S) | fifo_offset;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes)
|
||||
{
|
||||
(void)rhport;
|
||||
|
||||
uint8_t const epnum = tu_edpt_number(ep_addr);
|
||||
uint8_t const dir = tu_edpt_dir(ep_addr);
|
||||
|
||||
xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, dir);
|
||||
xfer->buffer = buffer;
|
||||
xfer->total_len = total_bytes;
|
||||
xfer->queued_len = 0;
|
||||
xfer->short_packet = false;
|
||||
|
||||
uint16_t num_packets = (total_bytes / xfer->max_size);
|
||||
uint8_t short_packet_size = total_bytes % xfer->max_size;
|
||||
|
||||
// Zero-size packet is special case.
|
||||
if (short_packet_size > 0 || (total_bytes == 0)) {
|
||||
num_packets++;
|
||||
}
|
||||
|
||||
ESP_LOGV(TAG, "Transfer <-> EP%i, %s, pkgs: %i, bytes: %i",
|
||||
epnum, ((dir == TUSB_DIR_IN) ? "USB0.HOST (in)" : "HOST->DEV (out)"),
|
||||
num_packets, total_bytes);
|
||||
|
||||
// IN and OUT endpoint xfers are interrupt-driven, we just schedule them
|
||||
// here.
|
||||
if (dir == TUSB_DIR_IN) {
|
||||
// A full IN transfer (multiple packets, possibly) triggers XFRC.
|
||||
USB0.in_ep_reg[epnum].dieptsiz = (num_packets << USB_D_PKTCNT0_S) | total_bytes;
|
||||
USB0.in_ep_reg[epnum].diepctl |= USB_D_EPENA1_M | USB_D_CNAK1_M; // Enable | CNAK
|
||||
|
||||
// Enable fifo empty interrupt only if there are something to put in the fifo.
|
||||
if(total_bytes != 0) {
|
||||
USB0.dtknqr4_fifoemptymsk |= (1 << epnum);
|
||||
}
|
||||
} else {
|
||||
// Each complete packet for OUT xfers triggers XFRC.
|
||||
USB0.out_ep_reg[epnum].doeptsiz |= USB_PKTCNT0_M | ((xfer->max_size & USB_XFERSIZE0_V) << USB_XFERSIZE0_S);
|
||||
USB0.out_ep_reg[epnum].doepctl |= USB_EPENA0_M | USB_CNAK0_M;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr)
|
||||
{
|
||||
(void)rhport;
|
||||
|
||||
usb_out_endpoint_t *out_ep = &(USB0.out_ep_reg[0]);
|
||||
usb_in_endpoint_t *in_ep = &(USB0.in_ep_reg[0]);
|
||||
|
||||
uint8_t const epnum = tu_edpt_number(ep_addr);
|
||||
uint8_t const dir = tu_edpt_dir(ep_addr);
|
||||
|
||||
if (dir == TUSB_DIR_IN) {
|
||||
// Only disable currently enabled non-control endpoint
|
||||
if ((epnum == 0) || !(in_ep[epnum].diepctl & USB_D_EPENA1_M)) {
|
||||
in_ep[epnum].diepctl |= (USB_DI_SNAK1_M | USB_D_STALL1_M);
|
||||
} else {
|
||||
// Stop transmitting packets and NAK IN xfers.
|
||||
in_ep[epnum].diepctl |= USB_DI_SNAK1_M;
|
||||
while ((in_ep[epnum].diepint & USB_DI_SNAK1_M) == 0) ;
|
||||
|
||||
// Disable the endpoint. Note that both SNAK and STALL are set here.
|
||||
in_ep[epnum].diepctl |= (USB_DI_SNAK1_M | USB_D_STALL1_M | USB_D_EPDIS1_M);
|
||||
while ((in_ep[epnum].diepint & USB_D_EPDISBLD0_M) == 0) ;
|
||||
in_ep[epnum].diepint = USB_D_EPDISBLD0_M;
|
||||
}
|
||||
|
||||
// Flush the FIFO, and wait until we have confirmed it cleared.
|
||||
uint8_t const fifo_num = ((in_ep[epnum].diepctl >> USB_D_TXFNUM1_S) & USB_D_TXFNUM1_V);
|
||||
USB0.grstctl |= (fifo_num << USB_TXFNUM_S);
|
||||
USB0.grstctl |= USB_TXFFLSH_M;
|
||||
while ((USB0.grstctl & USB_TXFFLSH_M) != 0) ;
|
||||
} else {
|
||||
// Only disable currently enabled non-control endpoint
|
||||
if ((epnum == 0) || !(out_ep[epnum].doepctl & USB_EPENA0_M)) {
|
||||
out_ep[epnum].doepctl |= USB_STALL0_M;
|
||||
} else {
|
||||
// Asserting GONAK is required to STALL an OUT endpoint.
|
||||
// Simpler to use polling here, we don't use the "B"OUTNAKEFF interrupt
|
||||
// anyway, and it can't be cleared by user code. If this while loop never
|
||||
// finishes, we have bigger problems than just the stack.
|
||||
USB0.dctl |= USB_SGOUTNAK_M;
|
||||
while ((USB0.gintsts & USB_GOUTNAKEFF_M) == 0) ;
|
||||
|
||||
// Ditto here- disable the endpoint. Note that only STALL and not SNAK
|
||||
// is set here.
|
||||
out_ep[epnum].doepctl |= (USB_STALL0_M | USB_EPDIS0_M);
|
||||
while ((out_ep[epnum].doepint & USB_EPDISBLD0_M) == 0) ;
|
||||
out_ep[epnum].doepint = USB_EPDISBLD0_M;
|
||||
|
||||
// Allow other OUT endpoints to keep receiving.
|
||||
USB0.dctl |= USB_CGOUTNAK_M;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr)
|
||||
{
|
||||
(void)rhport;
|
||||
|
||||
usb_out_endpoint_t *out_ep = &(USB0.out_ep_reg[0]);
|
||||
usb_in_endpoint_t *in_ep = &(USB0.in_ep_reg[0]);
|
||||
|
||||
uint8_t const epnum = tu_edpt_number(ep_addr);
|
||||
uint8_t const dir = tu_edpt_dir(ep_addr);
|
||||
|
||||
if (dir == TUSB_DIR_IN) {
|
||||
in_ep[epnum].diepctl &= ~USB_D_STALL1_M;
|
||||
|
||||
uint8_t eptype = (in_ep[epnum].diepctl & USB_D_EPTYPE1_M) >> USB_D_EPTYPE1_S;
|
||||
// Required by USB spec to reset DATA toggle bit to DATA0 on interrupt
|
||||
// and bulk endpoints.
|
||||
if (eptype == 2 || eptype == 3) {
|
||||
in_ep[epnum].diepctl |= USB_DI_SETD0PID1_M;
|
||||
}
|
||||
} else {
|
||||
out_ep[epnum].doepctl &= ~USB_STALL1_M;
|
||||
|
||||
uint8_t eptype = (out_ep[epnum].doepctl & USB_EPTYPE1_M) >> USB_EPTYPE1_S;
|
||||
// Required by USB spec to reset DATA toggle bit to DATA0 on interrupt
|
||||
// and bulk endpoints.
|
||||
if (eptype == 2 || eptype == 3) {
|
||||
out_ep[epnum].doepctl |= USB_DO_SETD0PID1_M;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
|
||||
static void receive_packet(xfer_ctl_t *xfer, /* usb_out_endpoint_t * out_ep, */ uint16_t xfer_size)
|
||||
{
|
||||
ESP_EARLY_LOGV(TAG, "USB - receive_packet");
|
||||
volatile uint32_t *rx_fifo = USB0.fifo[0];
|
||||
|
||||
// See above TODO
|
||||
// uint16_t remaining = (out_ep->DOEPTSIZ & UsbDOEPTSIZ_XFRSIZ_Msk) >> UsbDOEPTSIZ_XFRSIZ_Pos;
|
||||
// xfer->queued_len = xfer->total_len - remaining;
|
||||
|
||||
uint16_t remaining = xfer->total_len - xfer->queued_len;
|
||||
uint16_t to_recv_size;
|
||||
|
||||
if (remaining <= xfer->max_size) {
|
||||
// Avoid buffer overflow.
|
||||
to_recv_size = (xfer_size > remaining) ? remaining : xfer_size;
|
||||
} else {
|
||||
// Room for full packet, choose recv_size based on what the microcontroller
|
||||
// claims.
|
||||
to_recv_size = (xfer_size > xfer->max_size) ? xfer->max_size : xfer_size;
|
||||
}
|
||||
|
||||
uint8_t to_recv_rem = to_recv_size % 4;
|
||||
uint16_t to_recv_size_aligned = to_recv_size - to_recv_rem;
|
||||
|
||||
// Do not assume xfer buffer is aligned.
|
||||
uint8_t *base = (xfer->buffer + xfer->queued_len);
|
||||
|
||||
// This for loop always runs at least once- skip if less than 4 bytes
|
||||
// to collect.
|
||||
if (to_recv_size >= 4) {
|
||||
for (uint16_t i = 0; i < to_recv_size_aligned; i += 4) {
|
||||
uint32_t tmp = (*rx_fifo);
|
||||
base[i] = tmp & 0x000000FF;
|
||||
base[i + 1] = (tmp & 0x0000FF00) >> 8;
|
||||
base[i + 2] = (tmp & 0x00FF0000) >> 16;
|
||||
base[i + 3] = (tmp & 0xFF000000) >> 24;
|
||||
}
|
||||
}
|
||||
|
||||
// Do not read invalid bytes from RX FIFO.
|
||||
if (to_recv_rem != 0) {
|
||||
uint32_t tmp = (*rx_fifo);
|
||||
uint8_t *last_32b_bound = base + to_recv_size_aligned;
|
||||
|
||||
last_32b_bound[0] = tmp & 0x000000FF;
|
||||
if (to_recv_rem > 1) {
|
||||
last_32b_bound[1] = (tmp & 0x0000FF00) >> 8;
|
||||
}
|
||||
if (to_recv_rem > 2) {
|
||||
last_32b_bound[2] = (tmp & 0x00FF0000) >> 16;
|
||||
}
|
||||
}
|
||||
|
||||
xfer->queued_len += xfer_size;
|
||||
|
||||
// Per USB spec, a short OUT packet (including length 0) is always
|
||||
// indicative of the end of a transfer (at least for ctl, bulk, int).
|
||||
xfer->short_packet = (xfer_size < xfer->max_size);
|
||||
}
|
||||
|
||||
static void transmit_packet(xfer_ctl_t *xfer, volatile usb_in_endpoint_t *in_ep, uint8_t fifo_num)
|
||||
{
|
||||
ESP_EARLY_LOGV(TAG, "USB - transmit_packet");
|
||||
volatile uint32_t *tx_fifo = USB0.fifo[fifo_num];
|
||||
|
||||
uint16_t remaining = (in_ep->dieptsiz & 0x7FFFFU) >> USB_D_XFERSIZE0_S;
|
||||
xfer->queued_len = xfer->total_len - remaining;
|
||||
|
||||
uint16_t to_xfer_size = (remaining > xfer->max_size) ? xfer->max_size : remaining;
|
||||
uint8_t to_xfer_rem = to_xfer_size % 4;
|
||||
uint16_t to_xfer_size_aligned = to_xfer_size - to_xfer_rem;
|
||||
|
||||
// Buffer might not be aligned to 32b, so we need to force alignment
|
||||
// by copying to a temp var.
|
||||
uint8_t *base = (xfer->buffer + xfer->queued_len);
|
||||
|
||||
// This for loop always runs at least once- skip if less than 4 bytes
|
||||
// to send off.
|
||||
if (to_xfer_size >= 4) {
|
||||
for (uint16_t i = 0; i < to_xfer_size_aligned; i += 4) {
|
||||
uint32_t tmp = base[i] | (base[i + 1] << 8) |
|
||||
(base[i + 2] << 16) | (base[i + 3] << 24);
|
||||
(*tx_fifo) = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
// Do not read beyond end of buffer if not divisible by 4.
|
||||
if (to_xfer_rem != 0) {
|
||||
uint32_t tmp = 0;
|
||||
uint8_t *last_32b_bound = base + to_xfer_size_aligned;
|
||||
|
||||
tmp |= last_32b_bound[0];
|
||||
if (to_xfer_rem > 1) {
|
||||
tmp |= (last_32b_bound[1] << 8);
|
||||
}
|
||||
if (to_xfer_rem > 2) {
|
||||
tmp |= (last_32b_bound[2] << 16);
|
||||
}
|
||||
|
||||
(*tx_fifo) = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
static void read_rx_fifo(void)
|
||||
{
|
||||
// Pop control word off FIFO (completed xfers will have 2 control words,
|
||||
// we only pop one ctl word each interrupt).
|
||||
uint32_t const ctl_word = USB0.grxstsp;
|
||||
uint8_t const pktsts = (ctl_word & USB_PKTSTS_M) >> USB_PKTSTS_S;
|
||||
uint8_t const epnum = (ctl_word & USB_CHNUM_M ) >> USB_CHNUM_S;
|
||||
uint16_t const bcnt = (ctl_word & USB_BCNT_M ) >> USB_BCNT_S;
|
||||
|
||||
switch (pktsts) {
|
||||
case 0x01: // Global OUT NAK (Interrupt)
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX type : Global OUT NAK");
|
||||
break;
|
||||
|
||||
case 0x02: { // Out packet recvd
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX type : Out packet");
|
||||
xfer_ctl_t *xfer = XFER_CTL_BASE(epnum, TUSB_DIR_OUT);
|
||||
receive_packet(xfer, bcnt);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x03: // Out packet done (Interrupt)
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX type : Out packet done");
|
||||
break;
|
||||
|
||||
case 0x04: // Step 2: Setup transaction completed (Interrupt)
|
||||
// After this event, OEPINT interrupt will occur with SETUP bit set
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX : Setup packet done");
|
||||
USB0.out_ep_reg[epnum].doeptsiz |= USB_SUPCNT0_M;
|
||||
break;
|
||||
|
||||
case 0x06: { // Step1: Setup data packet received
|
||||
volatile uint32_t *rx_fifo = USB0.fifo[0];
|
||||
|
||||
// We can receive up to three setup packets in succession, but
|
||||
// only the last one is valid. Therefore we just overwrite it
|
||||
_setup_packet[0] = (*rx_fifo);
|
||||
_setup_packet[1] = (*rx_fifo);
|
||||
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - RX : Setup packet : 0x%08x 0x%08x", _setup_packet[0], _setup_packet[1]);
|
||||
}
|
||||
break;
|
||||
|
||||
default: // Invalid, do something here, like breakpoint?
|
||||
TU_BREAKPOINT();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_epout_ints(void)
|
||||
{
|
||||
// GINTSTS will be cleared with DAINT == 0
|
||||
// DAINT for a given EP clears when DOEPINTx is cleared.
|
||||
// DOEPINT will be cleared when DAINT's out bits are cleared.
|
||||
for (int n = 0; n < USB_OUT_EP_NUM; n++) {
|
||||
xfer_ctl_t *xfer = XFER_CTL_BASE(n, TUSB_DIR_OUT);
|
||||
|
||||
if (USB0.daint & (1 << (16 + n))) {
|
||||
// SETUP packet Setup Phase done.
|
||||
if ((USB0.out_ep_reg[n].doepint & USB_SETUP0_M)) {
|
||||
USB0.out_ep_reg[n].doepint = USB_STUPPKTRCVD0_M | USB_SETUP0_M; // clear
|
||||
dcd_event_setup_received(0, (uint8_t *)&_setup_packet[0], true);
|
||||
}
|
||||
|
||||
// OUT XFER complete (single packet).q
|
||||
if (USB0.out_ep_reg[n].doepint & USB_XFERCOMPL0_M) {
|
||||
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - EP OUT - XFER complete (single packet)");
|
||||
USB0.out_ep_reg[n].doepint = USB_XFERCOMPL0_M;
|
||||
|
||||
// Transfer complete if short packet or total len is transferred
|
||||
if (xfer->short_packet || (xfer->queued_len == xfer->total_len)) {
|
||||
xfer->short_packet = false;
|
||||
dcd_event_xfer_complete(0, n, xfer->queued_len, XFER_RESULT_SUCCESS, true);
|
||||
} else {
|
||||
// Schedule another packet to be received.
|
||||
USB0.out_ep_reg[n].doeptsiz |= USB_PKTCNT0_M | ((xfer->max_size & USB_XFERSIZE0_V) << USB_XFERSIZE0_S);
|
||||
USB0.out_ep_reg[n].doepctl |= USB_EPENA0_M | USB_CNAK0_M;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_epin_ints(void)
|
||||
{
|
||||
// GINTSTS will be cleared with DAINT == 0
|
||||
// DAINT for a given EP clears when DIEPINTx is cleared.
|
||||
// IEPINT will be cleared when DAINT's out bits are cleared.
|
||||
for (uint32_t n = 0; n < USB_IN_EP_NUM; n++) {
|
||||
xfer_ctl_t *xfer = &xfer_status[n][TUSB_DIR_IN];
|
||||
|
||||
if (USB0.daint & (1 << (0 + n))) {
|
||||
uint32_t const in_status = USB0.in_ep_reg[n].diepint;
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - EP IN %u", n);
|
||||
|
||||
if (in_status & BIT(15)) {
|
||||
USB0.in_ep_reg[n].diepint = BIT(15);
|
||||
ESP_EARLY_LOGE(TAG, "Unknown Condition");//todo:
|
||||
bus_reset();
|
||||
}
|
||||
|
||||
// IN XFER complete (entire xfer).
|
||||
if (in_status & USB_D_XFERCOMPL0_M) {
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - IN XFER complete!");
|
||||
USB0.in_ep_reg[n].diepint = USB_D_XFERCOMPL0_M;
|
||||
dcd_event_xfer_complete(0, n | TUSB_DIR_IN_MASK, xfer->total_len, XFER_RESULT_SUCCESS, true);
|
||||
if (!(in_status & USB_D_TXFEMP0_M)) {
|
||||
ESP_EARLY_LOGE(TAG, "Complete but not empty: %u/%u", xfer->queued_len, xfer->total_len);//todo:
|
||||
}
|
||||
}
|
||||
|
||||
// XFER FIFO empty
|
||||
if (in_status & USB_D_TXFEMP0_M) {
|
||||
ESP_EARLY_LOGV(TAG, "TUSB IRQ - IN XFER FIFO empty!");
|
||||
USB0.in_ep_reg[n].diepint = USB_D_TXFEMP0_M;
|
||||
transmit_packet(xfer, &USB0.in_ep_reg[n], n);
|
||||
|
||||
// Turn off TXFE if all bytes are written.
|
||||
if (xfer->queued_len == xfer->total_len)
|
||||
{
|
||||
USB0.dtknqr4_fifoemptymsk &= ~(1 << n);
|
||||
}
|
||||
}
|
||||
|
||||
// Timeout sending the last packet
|
||||
if (in_status & USB_D_TIMEOUT0_M) {
|
||||
USB0.in_ep_reg[n].diepint = USB_D_TIMEOUT0_M;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void _dcd_int_handler(void* arg)
|
||||
{
|
||||
(void) arg;
|
||||
uint8_t const rhport = 0;
|
||||
|
||||
const uint32_t int_status = USB0.gintsts;
|
||||
//const uint32_t int_msk = USB0.gintmsk;
|
||||
|
||||
if (int_status & USB_USBRST_M) {
|
||||
// start of reset
|
||||
ESP_EARLY_LOGV(TAG, "dcd_int_handler - reset");
|
||||
USB0.gintsts = USB_USBRST_M;
|
||||
// FIFOs will be reassigned when the endpoints are reopen
|
||||
_allocated_fifos = 1;
|
||||
bus_reset();
|
||||
}
|
||||
|
||||
if (int_status & USB_RESETDET_M) {
|
||||
ESP_EARLY_LOGV(TAG, "dcd_int_handler - reset while suspend");
|
||||
USB0.gintsts = USB_RESETDET_M;
|
||||
if ((int_status & USB_USBRST_M) == 0) {
|
||||
// no need to double reset
|
||||
_allocated_fifos = 1;
|
||||
bus_reset();
|
||||
}
|
||||
}
|
||||
|
||||
if (int_status & USB_ENUMDONE_M) {
|
||||
// ENUMDNE detects speed of the link. For full-speed, we
|
||||
// always expect the same value. This interrupt is considered
|
||||
// the end of reset.
|
||||
USB0.gintsts = USB_ENUMDONE_M;
|
||||
enum_done_processing();
|
||||
dcd_event_bus_reset(rhport, TUSB_SPEED_FULL, true);
|
||||
}
|
||||
|
||||
if (int_status & USB_USBSUSP_M) {
|
||||
// start of reset
|
||||
ESP_EARLY_LOGV(TAG, "dcd_int_handler - suspended");
|
||||
USB0.gintsts = USB_USBSUSP_M;
|
||||
//dcd_event_bus_signal(rhport, DCD_EVENT_SUSPEND, true);
|
||||
dcd_event_bus_signal(rhport, DCD_EVENT_UNPLUGGED, true);
|
||||
_allocated_fifos = 1;
|
||||
}
|
||||
|
||||
if(int_status & USB_WKUPINT_M)
|
||||
{
|
||||
USB0.gintsts = USB_WKUPINT_M;
|
||||
dcd_event_bus_signal(rhport, DCD_EVENT_RESUME, true);
|
||||
}
|
||||
|
||||
if (int_status & USB_OTGINT_M)
|
||||
{
|
||||
// OTG INT bit is read-only
|
||||
ESP_EARLY_LOGV(TAG, "dcd_int_handler - disconnected");
|
||||
|
||||
uint32_t const otg_int = USB0.gotgint;
|
||||
|
||||
if (otg_int & USB_SESENDDET_M)
|
||||
{
|
||||
dcd_event_bus_signal(rhport, DCD_EVENT_UNPLUGGED, true);
|
||||
_allocated_fifos = 1;
|
||||
}
|
||||
|
||||
USB0.gotgint = otg_int;
|
||||
}
|
||||
|
||||
#if USE_SOF
|
||||
if (int_status & USB_SOF_M) {
|
||||
USB0.gintsts = USB_SOF_M;
|
||||
dcd_event_bus_signal(rhport, DCD_EVENT_SOF, true); // do nothing actually
|
||||
}
|
||||
#endif
|
||||
|
||||
if (int_status & USB_RXFLVI_M) {
|
||||
// RXFLVL bit is read-only
|
||||
ESP_EARLY_LOGV(TAG, "dcd_int_handler - rx!");
|
||||
|
||||
// Mask out RXFLVL while reading data from FIFO
|
||||
USB0.gintmsk &= ~USB_RXFLVIMSK_M;
|
||||
read_rx_fifo();
|
||||
USB0.gintmsk |= USB_RXFLVIMSK_M;
|
||||
}
|
||||
|
||||
// OUT endpoint interrupt handling.
|
||||
if (int_status & USB_OEPINT_M) {
|
||||
// OEPINT is read-only
|
||||
ESP_EARLY_LOGV(TAG, "dcd_int_handler - OUT endpoint!");
|
||||
handle_epout_ints();
|
||||
}
|
||||
|
||||
// IN endpoint interrupt handling.
|
||||
if (int_status & USB_IEPINT_M) {
|
||||
// IEPINT bit read-only
|
||||
ESP_EARLY_LOGV(TAG, "dcd_int_handler - IN endpoint!");
|
||||
handle_epin_ints();
|
||||
}
|
||||
|
||||
// Without handling
|
||||
USB0.gintsts |= USB_CURMOD_INT_M |
|
||||
USB_MODEMIS_M |
|
||||
USB_OTGINT_M |
|
||||
USB_NPTXFEMP_M |
|
||||
USB_GINNAKEFF_M |
|
||||
USB_GOUTNAKEFF |
|
||||
USB_ERLYSUSP_M |
|
||||
USB_USBSUSP_M |
|
||||
USB_ISOOUTDROP_M |
|
||||
USB_EOPF_M |
|
||||
USB_EPMIS_M |
|
||||
USB_INCOMPISOIN_M |
|
||||
USB_INCOMPIP_M |
|
||||
USB_FETSUSP_M |
|
||||
USB_PTXFEMP_M;
|
||||
}
|
||||
|
||||
void dcd_int_enable (uint8_t rhport)
|
||||
{
|
||||
(void) rhport;
|
||||
esp_intr_alloc(ETS_USB_INTR_SOURCE, ESP_INTR_FLAG_LOWMED, (intr_handler_t) _dcd_int_handler, NULL, &usb_ih);
|
||||
}
|
||||
|
||||
void dcd_int_disable (uint8_t rhport)
|
||||
{
|
||||
(void) rhport;
|
||||
esp_intr_free(usb_ih);
|
||||
}
|
||||
|
||||
#endif // OPT_MCU_ESP32S2
|
||||
|
||||
1
main/CMakeLists.txt
Normal file
1
main/CMakeLists.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
idf_component_register(SRCS "sketch.cpp" "arduino-lib-builder-gcc.c" "arduino-lib-builder-cpp.cpp" "arduino-lib-builder-as.S" INCLUDE_DIRS ".")
|
||||
0
main/arduino-lib-builder-as.S
Normal file
0
main/arduino-lib-builder-as.S
Normal file
0
main/arduino-lib-builder-cpp.cpp
Normal file
0
main/arduino-lib-builder-cpp.cpp
Normal file
0
main/arduino-lib-builder-gcc.c
Normal file
0
main/arduino-lib-builder-gcc.c
Normal file
|
|
@ -1,9 +1,10 @@
|
|||
#include "Arduino.h"
|
||||
|
||||
void setup(){
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
}
|
||||
|
||||
void loop(){
|
||||
|
||||
void loop() {
|
||||
Serial.println("Hello World!");
|
||||
delay(1000);
|
||||
}
|
||||
|
|
|
|||
962
sdkconfig
962
sdkconfig
|
|
@ -1,962 +0,0 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Espressif IoT Development Framework Configuration
|
||||
#
|
||||
CONFIG_IDF_TARGET="esp32"
|
||||
CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000
|
||||
|
||||
#
|
||||
# SDK tool configuration
|
||||
#
|
||||
CONFIG_TOOLPREFIX="xtensa-esp32-elf-"
|
||||
CONFIG_PYTHON="python"
|
||||
CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y
|
||||
|
||||
#
|
||||
# Application manager
|
||||
#
|
||||
CONFIG_APP_COMPILE_TIME_DATE=y
|
||||
CONFIG_APP_EXCLUDE_PROJECT_VER_VAR=
|
||||
CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=
|
||||
CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16
|
||||
|
||||
#
|
||||
# Arduino Configuration
|
||||
#
|
||||
CONFIG_ENABLE_ARDUINO_DEPENDS=y
|
||||
CONFIG_AUTOSTART_ARDUINO=y
|
||||
CONFIG_ARDUINO_RUN_CORE0=
|
||||
CONFIG_ARDUINO_RUN_CORE1=y
|
||||
CONFIG_ARDUINO_RUN_NO_AFFINITY=
|
||||
CONFIG_ARDUINO_RUNNING_CORE=1
|
||||
CONFIG_ARDUINO_LOOP_STACK_SIZE=8192
|
||||
CONFIG_ARDUINO_EVENT_RUN_CORE0=
|
||||
CONFIG_ARDUINO_EVENT_RUN_CORE1=y
|
||||
CONFIG_ARDUINO_EVENT_RUN_NO_AFFINITY=
|
||||
CONFIG_ARDUINO_EVENT_RUNNING_CORE=1
|
||||
CONFIG_ARDUINO_UDP_RUN_CORE0=
|
||||
CONFIG_ARDUINO_UDP_RUN_CORE1=y
|
||||
CONFIG_ARDUINO_UDP_RUN_NO_AFFINITY=
|
||||
CONFIG_ARDUINO_UDP_TASK_PRIORITY=3
|
||||
CONFIG_ARDUINO_UDP_RUNNING_CORE=1
|
||||
CONFIG_DISABLE_HAL_LOCKS=
|
||||
|
||||
#
|
||||
# Debug Log Configuration
|
||||
#
|
||||
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_NONE=
|
||||
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR=y
|
||||
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN=
|
||||
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO=
|
||||
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG=
|
||||
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_VERBOSE=
|
||||
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=1
|
||||
CONFIG_ARDUHAL_LOG_COLORS=
|
||||
CONFIG_ARDUHAL_ESP_LOG=y
|
||||
CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y
|
||||
CONFIG_ARDUHAL_PARTITION_SCHEME_MINIMAL=
|
||||
CONFIG_ARDUHAL_PARTITION_SCHEME_NO_OTA=
|
||||
CONFIG_ARDUHAL_PARTITION_SCHEME_HUGE_APP=
|
||||
CONFIG_ARDUHAL_PARTITION_SCHEME_MIN_SPIFFS=
|
||||
CONFIG_ARDUHAL_PARTITION_SCHEME="default"
|
||||
CONFIG_AUTOCONNECT_WIFI=
|
||||
CONFIG_ARDUINO_SELECTIVE_COMPILATION=
|
||||
|
||||
#
|
||||
# Bootloader config
|
||||
#
|
||||
CONFIG_LOG_BOOTLOADER_LEVEL_NONE=y
|
||||
CONFIG_LOG_BOOTLOADER_LEVEL_ERROR=
|
||||
CONFIG_LOG_BOOTLOADER_LEVEL_WARN=
|
||||
CONFIG_LOG_BOOTLOADER_LEVEL_INFO=
|
||||
CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG=
|
||||
CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE=
|
||||
CONFIG_LOG_BOOTLOADER_LEVEL=0
|
||||
CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V=
|
||||
CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y
|
||||
CONFIG_BOOTLOADER_FACTORY_RESET=
|
||||
CONFIG_BOOTLOADER_APP_TEST=
|
||||
CONFIG_BOOTLOADER_WDT_ENABLE=y
|
||||
CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE=
|
||||
CONFIG_BOOTLOADER_WDT_TIME_MS=9000
|
||||
CONFIG_APP_ROLLBACK_ENABLE=
|
||||
|
||||
#
|
||||
# Security features
|
||||
#
|
||||
CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT=
|
||||
CONFIG_SECURE_BOOT_ENABLED=
|
||||
CONFIG_FLASH_ENCRYPTION_ENABLED=
|
||||
|
||||
#
|
||||
# Serial flasher config
|
||||
#
|
||||
CONFIG_ESPTOOLPY_PORT="/dev/cu.usbserial-DO00EAB0"
|
||||
CONFIG_ESPTOOLPY_BAUD_115200B=
|
||||
CONFIG_ESPTOOLPY_BAUD_230400B=
|
||||
CONFIG_ESPTOOLPY_BAUD_921600B=y
|
||||
CONFIG_ESPTOOLPY_BAUD_2MB=
|
||||
CONFIG_ESPTOOLPY_BAUD_OTHER=
|
||||
CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200
|
||||
CONFIG_ESPTOOLPY_BAUD=921600
|
||||
CONFIG_ESPTOOLPY_COMPRESSED=y
|
||||
CONFIG_FLASHMODE_QIO=
|
||||
CONFIG_FLASHMODE_QOUT=
|
||||
CONFIG_FLASHMODE_DIO=
|
||||
CONFIG_FLASHMODE_DOUT=y
|
||||
CONFIG_ESPTOOLPY_FLASHMODE="dout"
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ_80M=
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ_26M=
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ_20M=
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ="40m"
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_1MB=
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_2MB=
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y
|
||||
CONFIG_ESPTOOLPY_BEFORE_RESET=y
|
||||
CONFIG_ESPTOOLPY_BEFORE_NORESET=
|
||||
CONFIG_ESPTOOLPY_BEFORE="default_reset"
|
||||
CONFIG_ESPTOOLPY_AFTER_RESET=y
|
||||
CONFIG_ESPTOOLPY_AFTER_NORESET=
|
||||
CONFIG_ESPTOOLPY_AFTER="hard_reset"
|
||||
CONFIG_MONITOR_BAUD_9600B=
|
||||
CONFIG_MONITOR_BAUD_57600B=
|
||||
CONFIG_MONITOR_BAUD_115200B=y
|
||||
CONFIG_MONITOR_BAUD_230400B=
|
||||
CONFIG_MONITOR_BAUD_921600B=
|
||||
CONFIG_MONITOR_BAUD_2MB=
|
||||
CONFIG_MONITOR_BAUD_OTHER=
|
||||
CONFIG_MONITOR_BAUD_OTHER_VAL=115200
|
||||
CONFIG_MONITOR_BAUD=115200
|
||||
|
||||
#
|
||||
# Partition Table
|
||||
#
|
||||
CONFIG_PARTITION_TABLE_SINGLE_APP=y
|
||||
CONFIG_PARTITION_TABLE_TWO_OTA=
|
||||
CONFIG_PARTITION_TABLE_CUSTOM=
|
||||
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
|
||||
CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv"
|
||||
CONFIG_PARTITION_TABLE_OFFSET=0x8000
|
||||
CONFIG_PARTITION_TABLE_MD5=y
|
||||
|
||||
#
|
||||
# Compiler options
|
||||
#
|
||||
CONFIG_OPTIMIZATION_LEVEL_DEBUG=y
|
||||
CONFIG_OPTIMIZATION_LEVEL_RELEASE=
|
||||
CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
|
||||
CONFIG_OPTIMIZATION_ASSERTIONS_SILENT=
|
||||
CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED=
|
||||
CONFIG_CXX_EXCEPTIONS=y
|
||||
CONFIG_CXX_EXCEPTIONS_EMG_POOL_SIZE=0
|
||||
CONFIG_STACK_CHECK_NONE=
|
||||
CONFIG_STACK_CHECK_NORM=y
|
||||
CONFIG_STACK_CHECK_STRONG=
|
||||
CONFIG_STACK_CHECK_ALL=
|
||||
CONFIG_STACK_CHECK=y
|
||||
CONFIG_WARN_WRITE_STRINGS=y
|
||||
CONFIG_DISABLE_GCC8_WARNINGS=
|
||||
|
||||
#
|
||||
# Component config
|
||||
#
|
||||
|
||||
#
|
||||
# Application Level Tracing
|
||||
#
|
||||
CONFIG_ESP32_APPTRACE_DEST_TRAX=
|
||||
CONFIG_ESP32_APPTRACE_DEST_NONE=y
|
||||
CONFIG_ESP32_APPTRACE_ENABLE=
|
||||
CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
|
||||
CONFIG_AWS_IOT_SDK=
|
||||
|
||||
#
|
||||
# Bluetooth
|
||||
#
|
||||
CONFIG_BT_ENABLED=y
|
||||
|
||||
#
|
||||
# Bluetooth controller
|
||||
#
|
||||
CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY=
|
||||
CONFIG_BTDM_CONTROLLER_MODE_BR_EDR_ONLY=
|
||||
CONFIG_BTDM_CONTROLLER_MODE_BTDM=y
|
||||
CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN=3
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN=2
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN=0
|
||||
CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0
|
||||
CONFIG_BTDM_CTRL_AUTO_LATENCY=
|
||||
CONFIG_BTDM_CTRL_AUTO_LATENCY_EFF=
|
||||
CONFIG_BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT=y
|
||||
CONFIG_BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT_EFF=y
|
||||
CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=3
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=2
|
||||
CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0
|
||||
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE_0=y
|
||||
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE_1=
|
||||
CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0
|
||||
CONFIG_BTDM_CONTROLLER_HCI_MODE_VHCI=y
|
||||
CONFIG_BTDM_CONTROLLER_HCI_MODE_UART_H4=
|
||||
|
||||
#
|
||||
# MODEM SLEEP Options
|
||||
#
|
||||
CONFIG_BTDM_CONTROLLER_MODEM_SLEEP=y
|
||||
CONFIG_BTDM_MODEM_SLEEP_MODE_ORIG=y
|
||||
CONFIG_BTDM_MODEM_SLEEP_MODE_EVED=
|
||||
CONFIG_BTDM_LPCLK_SEL_MAIN_XTAL=y
|
||||
CONFIG_BLE_SCAN_DUPLICATE=y
|
||||
CONFIG_SCAN_DUPLICATE_BY_DEVICE_ADDR=y
|
||||
CONFIG_SCAN_DUPLICATE_BY_ADV_DATA=
|
||||
CONFIG_SCAN_DUPLICATE_BY_ADV_DATA_AND_DEVICE_ADDR=
|
||||
CONFIG_SCAN_DUPLICATE_TYPE=0
|
||||
CONFIG_DUPLICATE_SCAN_CACHE_SIZE=20
|
||||
CONFIG_BLE_MESH_SCAN_DUPLICATE_EN=
|
||||
CONFIG_BTDM_CONTROLLER_FULL_SCAN_SUPPORTED=y
|
||||
CONFIG_BLE_ADV_REPORT_FLOW_CONTROL_SUPPORTED=y
|
||||
CONFIG_BLE_ADV_REPORT_FLOW_CONTROL_NUM=100
|
||||
CONFIG_BLE_ADV_REPORT_DISCARD_THRSHOLD=20
|
||||
CONFIG_BTDM_COEX_BT_OPTIONS=
|
||||
CONFIG_BLUEDROID_ENABLED=y
|
||||
CONFIG_BLUEDROID_PINNED_TO_CORE_0=y
|
||||
CONFIG_BLUEDROID_PINNED_TO_CORE_1=
|
||||
CONFIG_BLUEDROID_PINNED_TO_CORE=0
|
||||
CONFIG_BTC_TASK_STACK_SIZE=8192
|
||||
CONFIG_BTU_TASK_STACK_SIZE=4096
|
||||
CONFIG_BLUEDROID_MEM_DEBUG=
|
||||
CONFIG_CLASSIC_BT_ENABLED=y
|
||||
CONFIG_A2DP_ENABLE=y
|
||||
CONFIG_A2DP_SINK_TASK_STACK_SIZE=2048
|
||||
CONFIG_A2DP_SOURCE_TASK_STACK_SIZE=2048
|
||||
CONFIG_BT_SPP_ENABLED=y
|
||||
CONFIG_HFP_ENABLE=y
|
||||
CONFIG_HFP_CLIENT_ENABLE=y
|
||||
CONFIG_HFP_AUDIO_DATA_PATH_PCM=y
|
||||
CONFIG_HFP_AUDIO_DATA_PATH_HCI=
|
||||
CONFIG_BT_SSP_ENABLED=y
|
||||
CONFIG_GATTS_ENABLE=y
|
||||
CONFIG_GATTS_BLUFI_ENABLE=y
|
||||
CONFIG_GATTS_SEND_SERVICE_CHANGE_MANUAL=
|
||||
CONFIG_GATTS_SEND_SERVICE_CHANGE_AUTO=y
|
||||
CONFIG_GATTS_SEND_SERVICE_CHANGE_MODE=0
|
||||
CONFIG_GATTC_ENABLE=y
|
||||
CONFIG_GATTC_CACHE_NVS_FLASH=
|
||||
CONFIG_BLE_SMP_ENABLE=y
|
||||
CONFIG_SMP_SLAVE_CON_PARAMS_UPD_ENABLE=
|
||||
CONFIG_BT_STACK_NO_LOG=y
|
||||
CONFIG_BT_ACL_CONNECTIONS=4
|
||||
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
|
||||
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y
|
||||
CONFIG_BLE_HOST_QUEUE_CONGESTION_CHECK=
|
||||
CONFIG_SMP_ENABLE=y
|
||||
CONFIG_BLE_ACTIVE_SCAN_REPORT_ADV_SCAN_RSP_INDIVIDUALLY=
|
||||
CONFIG_BLE_ESTABLISH_LINK_CONNECTION_TIMEOUT=30
|
||||
CONFIG_BT_RESERVE_DRAM=0xdb5c
|
||||
CONFIG_BLE_MESH=
|
||||
|
||||
#
|
||||
# Driver configurations
|
||||
#
|
||||
|
||||
#
|
||||
# ADC configuration
|
||||
#
|
||||
CONFIG_ADC_FORCE_XPD_FSM=
|
||||
CONFIG_ADC2_DISABLE_DAC=y
|
||||
|
||||
#
|
||||
# SPI configuration
|
||||
#
|
||||
CONFIG_SPI_MASTER_IN_IRAM=
|
||||
CONFIG_SPI_MASTER_ISR_IN_IRAM=y
|
||||
CONFIG_SPI_SLAVE_IN_IRAM=
|
||||
CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
|
||||
|
||||
#
|
||||
# CAN Configuration
|
||||
#
|
||||
CONFIG_CAN_ISR_IN_IRAM=
|
||||
|
||||
#
|
||||
# eFuse Bit Manager
|
||||
#
|
||||
CONFIG_EFUSE_CUSTOM_TABLE=
|
||||
CONFIG_EFUSE_VIRTUAL=
|
||||
CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=
|
||||
CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y
|
||||
CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT=
|
||||
CONFIG_EFUSE_MAX_BLK_LEN=192
|
||||
CONFIG_C_IMPL=
|
||||
CONFIG_XTENSA_IMPL=y
|
||||
|
||||
#
|
||||
# ESP-FACE Configuration
|
||||
#
|
||||
CONFIG_MTMN_LITE_QUANT=y
|
||||
CONFIG_MTMN_LITE_FLOAT=
|
||||
CONFIG_MTMN_HEAVY_QUANT=
|
||||
CONFIG_FRMN=
|
||||
CONFIG_MFN56_1X=y
|
||||
CONFIG_MFN56_2X=
|
||||
CONFIG_MFN56_3X=
|
||||
CONFIG_MFN56_4X=
|
||||
|
||||
#
|
||||
# Object Detection
|
||||
#
|
||||
CONFIG_DETECT_WITH_LANDMARK=
|
||||
|
||||
#
|
||||
# Pose Estimation
|
||||
#
|
||||
CONFIG_HD_NANO1=y
|
||||
CONFIG_HD_LITE1=
|
||||
CONFIG_HP_NANO1=y
|
||||
CONFIG_HP_LITE1=
|
||||
|
||||
#
|
||||
# ESP32-specific
|
||||
#
|
||||
CONFIG_IDF_TARGET_ESP32=y
|
||||
CONFIG_ESP32_ECO3_CACHE_LOCK_FIX=y
|
||||
CONFIG_ESP32_REV_MIN_0=y
|
||||
CONFIG_ESP32_REV_MIN_1=
|
||||
CONFIG_ESP32_REV_MIN_2=
|
||||
CONFIG_ESP32_REV_MIN_3=
|
||||
CONFIG_ESP32_REV_MIN=0
|
||||
CONFIG_ESP32_DPORT_WORKAROUND=y
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_80=
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160
|
||||
CONFIG_SPIRAM_SUPPORT=y
|
||||
|
||||
#
|
||||
# SPI RAM config
|
||||
#
|
||||
CONFIG_SPIRAM_BOOT_INIT=
|
||||
CONFIG_SPIRAM_USE_MEMMAP=
|
||||
CONFIG_SPIRAM_USE_CAPS_ALLOC=y
|
||||
CONFIG_SPIRAM_USE_MALLOC=
|
||||
CONFIG_SPIRAM_TYPE_AUTO=y
|
||||
CONFIG_SPIRAM_TYPE_ESPPSRAM32=
|
||||
CONFIG_SPIRAM_TYPE_ESPPSRAM64=
|
||||
CONFIG_SPIRAM_SIZE=-1
|
||||
CONFIG_SPIRAM_SPEED_40M=y
|
||||
CONFIG_SPIRAM_CACHE_WORKAROUND=y
|
||||
CONFIG_SPIRAM_BANKSWITCH_ENABLE=y
|
||||
CONFIG_SPIRAM_BANKSWITCH_RESERVE=8
|
||||
CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST=
|
||||
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=
|
||||
|
||||
#
|
||||
# PSRAM clock and cs IO for ESP32-DOWD
|
||||
#
|
||||
CONFIG_D0WD_PSRAM_CLK_IO=17
|
||||
CONFIG_D0WD_PSRAM_CS_IO=16
|
||||
|
||||
#
|
||||
# PSRAM clock and cs IO for ESP32-D2WD
|
||||
#
|
||||
CONFIG_D2WD_PSRAM_CLK_IO=9
|
||||
CONFIG_D2WD_PSRAM_CS_IO=10
|
||||
|
||||
#
|
||||
# PSRAM clock and cs IO for ESP32-PICO
|
||||
#
|
||||
CONFIG_PICO_PSRAM_CS_IO=10
|
||||
CONFIG_SPIRAM_SPIWP_SD3_PIN=7
|
||||
CONFIG_SPIRAM_2T_MODE=
|
||||
CONFIG_MEMMAP_TRACEMEM=
|
||||
CONFIG_MEMMAP_TRACEMEM_TWOBANKS=
|
||||
CONFIG_ESP32_TRAX=
|
||||
CONFIG_TRACEMEM_RESERVE_DRAM=0x0
|
||||
CONFIG_TWO_UNIVERSAL_MAC_ADDRESS=
|
||||
CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y
|
||||
CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4
|
||||
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
|
||||
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2048
|
||||
CONFIG_MAIN_TASK_STACK_SIZE=4096
|
||||
CONFIG_IPC_TASK_STACK_SIZE=1024
|
||||
CONFIG_TIMER_TASK_STACK_SIZE=4096
|
||||
CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y
|
||||
CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=
|
||||
CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR=
|
||||
CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF=
|
||||
CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=
|
||||
CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y
|
||||
CONFIG_NEWLIB_NANO_FORMAT=
|
||||
CONFIG_CONSOLE_UART_DEFAULT=y
|
||||
CONFIG_CONSOLE_UART_CUSTOM=
|
||||
CONFIG_CONSOLE_UART_NONE=
|
||||
CONFIG_CONSOLE_UART_NUM=0
|
||||
CONFIG_CONSOLE_UART_BAUDRATE=115200
|
||||
CONFIG_ULP_COPROC_ENABLED=y
|
||||
CONFIG_ULP_COPROC_RESERVE_MEM=512
|
||||
CONFIG_ESP32_PANIC_PRINT_HALT=
|
||||
CONFIG_ESP32_PANIC_PRINT_REBOOT=y
|
||||
CONFIG_ESP32_PANIC_SILENT_REBOOT=
|
||||
CONFIG_ESP32_PANIC_GDBSTUB=
|
||||
CONFIG_ESP32_DEBUG_OCDAWARE=y
|
||||
CONFIG_ESP32_DEBUG_STUBS_ENABLE=y
|
||||
CONFIG_INT_WDT=y
|
||||
CONFIG_INT_WDT_TIMEOUT_MS=300
|
||||
CONFIG_INT_WDT_CHECK_CPU1=y
|
||||
CONFIG_TASK_WDT=y
|
||||
CONFIG_TASK_WDT_PANIC=y
|
||||
CONFIG_TASK_WDT_TIMEOUT_S=5
|
||||
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
|
||||
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=
|
||||
CONFIG_BROWNOUT_DET=y
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_0=y
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_1=
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_2=
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_3=
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_4=
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_5=
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_6=
|
||||
CONFIG_BROWNOUT_DET_LVL_SEL_7=
|
||||
CONFIG_BROWNOUT_DET_LVL=0
|
||||
CONFIG_REDUCE_PHY_TX_POWER=y
|
||||
CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y
|
||||
CONFIG_ESP32_TIME_SYSCALL_USE_RTC=
|
||||
CONFIG_ESP32_TIME_SYSCALL_USE_FRC1=
|
||||
CONFIG_ESP32_TIME_SYSCALL_USE_NONE=
|
||||
CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y
|
||||
CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL=
|
||||
CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC=
|
||||
CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256=
|
||||
CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024
|
||||
CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000
|
||||
CONFIG_ESP32_XTAL_FREQ_40=
|
||||
CONFIG_ESP32_XTAL_FREQ_26=
|
||||
CONFIG_ESP32_XTAL_FREQ_AUTO=y
|
||||
CONFIG_ESP32_XTAL_FREQ=0
|
||||
CONFIG_DISABLE_BASIC_ROM_CONSOLE=
|
||||
CONFIG_ESP_TIMER_PROFILING=
|
||||
CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS=
|
||||
CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
|
||||
CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5
|
||||
|
||||
#
|
||||
# Wi-Fi
|
||||
#
|
||||
CONFIG_SW_COEXIST_ENABLE=y
|
||||
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=16
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
|
||||
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
|
||||
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
|
||||
CONFIG_ESP32_WIFI_CSI_ENABLED=
|
||||
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_TX_BA_WIN=6
|
||||
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_RX_BA_WIN=16
|
||||
CONFIG_ESP32_WIFI_NVS_ENABLED=y
|
||||
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
|
||||
CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1=
|
||||
CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752
|
||||
CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
|
||||
CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE=
|
||||
CONFIG_ESP32_WIFI_IRAM_OPT=
|
||||
CONFIG_ESP32_WIFI_RX_IRAM_OPT=
|
||||
|
||||
#
|
||||
# PHY
|
||||
#
|
||||
CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y
|
||||
CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION=
|
||||
CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20
|
||||
CONFIG_ESP32_PHY_MAX_TX_POWER=20
|
||||
|
||||
#
|
||||
# Power Management
|
||||
#
|
||||
CONFIG_PM_ENABLE=
|
||||
|
||||
#
|
||||
# Camera configuration
|
||||
#
|
||||
CONFIG_OV7670_SUPPORT=y
|
||||
CONFIG_OV7725_SUPPORT=y
|
||||
CONFIG_NT99141_SUPPORT=y
|
||||
CONFIG_OV2640_SUPPORT=y
|
||||
CONFIG_OV3660_SUPPORT=y
|
||||
CONFIG_OV5640_SUPPORT=y
|
||||
CONFIG_SCCB_HARDWARE_I2C_PORT0=
|
||||
CONFIG_SCCB_HARDWARE_I2C_PORT1=y
|
||||
CONFIG_CAMERA_CORE0=
|
||||
CONFIG_CAMERA_CORE1=y
|
||||
CONFIG_CAMERA_NO_AFFINITY=
|
||||
|
||||
#
|
||||
# ADC-Calibration
|
||||
#
|
||||
CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y
|
||||
CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y
|
||||
CONFIG_ADC_CAL_LUT_ENABLE=y
|
||||
|
||||
#
|
||||
# Event Loop Library
|
||||
#
|
||||
CONFIG_EVENT_LOOP_PROFILING=
|
||||
|
||||
#
|
||||
# ESP HTTP client
|
||||
#
|
||||
CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y
|
||||
CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH=
|
||||
|
||||
#
|
||||
# HTTP Server
|
||||
#
|
||||
CONFIG_HTTPD_MAX_REQ_HDR_LEN=512
|
||||
CONFIG_HTTPD_MAX_URI_LEN=512
|
||||
CONFIG_HTTPD_ERR_RESP_NO_DELAY=y
|
||||
CONFIG_HTTPD_PURGE_BUF_LEN=32
|
||||
CONFIG_HTTPD_LOG_PURGE_DATA=
|
||||
|
||||
#
|
||||
# ESP HTTPS OTA
|
||||
#
|
||||
CONFIG_OTA_ALLOW_HTTP=
|
||||
|
||||
#
|
||||
# Core dump
|
||||
#
|
||||
CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH=
|
||||
CONFIG_ESP32_ENABLE_COREDUMP_TO_UART=
|
||||
CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y
|
||||
CONFIG_ESP32_ENABLE_COREDUMP=
|
||||
|
||||
#
|
||||
# Ethernet
|
||||
#
|
||||
CONFIG_DMA_RX_BUF_NUM=10
|
||||
CONFIG_DMA_TX_BUF_NUM=10
|
||||
CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE=y
|
||||
CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000
|
||||
CONFIG_EMAC_TASK_PRIORITY=20
|
||||
CONFIG_EMAC_TASK_STACK_SIZE=3072
|
||||
|
||||
#
|
||||
# FAT Filesystem support
|
||||
#
|
||||
CONFIG_FATFS_CODEPAGE_DYNAMIC=
|
||||
CONFIG_FATFS_CODEPAGE_437=
|
||||
CONFIG_FATFS_CODEPAGE_720=
|
||||
CONFIG_FATFS_CODEPAGE_737=
|
||||
CONFIG_FATFS_CODEPAGE_771=
|
||||
CONFIG_FATFS_CODEPAGE_775=
|
||||
CONFIG_FATFS_CODEPAGE_850=y
|
||||
CONFIG_FATFS_CODEPAGE_852=
|
||||
CONFIG_FATFS_CODEPAGE_855=
|
||||
CONFIG_FATFS_CODEPAGE_857=
|
||||
CONFIG_FATFS_CODEPAGE_860=
|
||||
CONFIG_FATFS_CODEPAGE_861=
|
||||
CONFIG_FATFS_CODEPAGE_862=
|
||||
CONFIG_FATFS_CODEPAGE_863=
|
||||
CONFIG_FATFS_CODEPAGE_864=
|
||||
CONFIG_FATFS_CODEPAGE_865=
|
||||
CONFIG_FATFS_CODEPAGE_866=
|
||||
CONFIG_FATFS_CODEPAGE_869=
|
||||
CONFIG_FATFS_CODEPAGE_932=
|
||||
CONFIG_FATFS_CODEPAGE_936=
|
||||
CONFIG_FATFS_CODEPAGE_949=
|
||||
CONFIG_FATFS_CODEPAGE_950=
|
||||
CONFIG_FATFS_CODEPAGE=850
|
||||
CONFIG_FATFS_LFN_NONE=
|
||||
CONFIG_FATFS_LFN_HEAP=
|
||||
CONFIG_FATFS_LFN_STACK=y
|
||||
CONFIG_FATFS_MAX_LFN=255
|
||||
CONFIG_FATFS_API_ENCODING_ANSI_OEM=y
|
||||
CONFIG_FATFS_API_ENCODING_UTF_16=
|
||||
CONFIG_FATFS_API_ENCODING_UTF_8=
|
||||
CONFIG_FATFS_FS_LOCK=0
|
||||
CONFIG_FATFS_TIMEOUT_MS=10000
|
||||
CONFIG_FATFS_PER_FILE_CACHE=y
|
||||
CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y
|
||||
|
||||
#
|
||||
# Modbus configuration
|
||||
#
|
||||
CONFIG_MB_QUEUE_LENGTH=20
|
||||
CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048
|
||||
CONFIG_MB_SERIAL_BUF_SIZE=256
|
||||
CONFIG_MB_SERIAL_TASK_PRIO=10
|
||||
CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=
|
||||
CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20
|
||||
CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
|
||||
CONFIG_MB_CONTROLLER_STACK_SIZE=4096
|
||||
CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
|
||||
CONFIG_MB_TIMER_PORT_ENABLED=y
|
||||
CONFIG_MB_TIMER_GROUP=0
|
||||
CONFIG_MB_TIMER_INDEX=0
|
||||
|
||||
#
|
||||
# FreeRTOS
|
||||
#
|
||||
CONFIG_FREERTOS_UNICORE=
|
||||
CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF
|
||||
CONFIG_FREERTOS_CORETIMER_0=y
|
||||
CONFIG_FREERTOS_CORETIMER_1=
|
||||
CONFIG_FREERTOS_HZ=1000
|
||||
CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=
|
||||
CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE=
|
||||
CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL=
|
||||
CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y
|
||||
CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y
|
||||
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
|
||||
CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1
|
||||
CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y
|
||||
CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE=
|
||||
CONFIG_FREERTOS_ASSERT_DISABLE=
|
||||
CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024
|
||||
CONFIG_FREERTOS_ISR_STACKSIZE=1536
|
||||
CONFIG_FREERTOS_LEGACY_HOOKS=
|
||||
CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
|
||||
CONFIG_SUPPORT_STATIC_ALLOCATION=y
|
||||
CONFIG_TIMER_TASK_PRIORITY=1
|
||||
CONFIG_TIMER_TASK_STACK_DEPTH=2048
|
||||
CONFIG_TIMER_QUEUE_LENGTH=10
|
||||
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
|
||||
CONFIG_FREERTOS_USE_TRACE_FACILITY=
|
||||
CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=
|
||||
CONFIG_FREERTOS_DEBUG_INTERNALS=
|
||||
CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
|
||||
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
|
||||
CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE=
|
||||
|
||||
#
|
||||
# Heap memory debugging
|
||||
#
|
||||
CONFIG_HEAP_POISONING_DISABLED=
|
||||
CONFIG_HEAP_POISONING_LIGHT=y
|
||||
CONFIG_HEAP_POISONING_COMPREHENSIVE=
|
||||
CONFIG_HEAP_TRACING=
|
||||
CONFIG_HEAP_TASK_TRACKING=
|
||||
|
||||
#
|
||||
# libsodium
|
||||
#
|
||||
CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y
|
||||
|
||||
#
|
||||
# Log output
|
||||
#
|
||||
CONFIG_LOG_DEFAULT_LEVEL_NONE=
|
||||
CONFIG_LOG_DEFAULT_LEVEL_ERROR=y
|
||||
CONFIG_LOG_DEFAULT_LEVEL_WARN=
|
||||
CONFIG_LOG_DEFAULT_LEVEL_INFO=
|
||||
CONFIG_LOG_DEFAULT_LEVEL_DEBUG=
|
||||
CONFIG_LOG_DEFAULT_LEVEL_VERBOSE=
|
||||
CONFIG_LOG_DEFAULT_LEVEL=1
|
||||
CONFIG_LOG_COLORS=
|
||||
|
||||
#
|
||||
# LWIP
|
||||
#
|
||||
CONFIG_L2_TO_L3_COPY=
|
||||
CONFIG_ETHARP_SUPPORT_VLAN=
|
||||
CONFIG_LWIP_IRAM_OPTIMIZATION=
|
||||
CONFIG_LWIP_MAX_SOCKETS=10
|
||||
CONFIG_LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS=y
|
||||
CONFIG_USE_ONLY_LWIP_SELECT=
|
||||
CONFIG_LWIP_SO_LINGER=
|
||||
CONFIG_LWIP_SO_REUSE=y
|
||||
CONFIG_LWIP_SO_REUSE_RXTOALL=y
|
||||
CONFIG_LWIP_SO_RCVBUF=y
|
||||
CONFIG_LWIP_IP4_FRAG=y
|
||||
CONFIG_LWIP_IP6_FRAG=y
|
||||
CONFIG_LWIP_IP4_REASSEMBLY=
|
||||
CONFIG_LWIP_IP6_REASSEMBLY=
|
||||
CONFIG_LWIP_STATS=
|
||||
CONFIG_LWIP_ETHARP_TRUST_IP_MAC=y
|
||||
CONFIG_ESP_GRATUITOUS_ARP=y
|
||||
CONFIG_GARP_TMR_INTERVAL=60
|
||||
CONFIG_TCPIP_RECVMBOX_SIZE=32
|
||||
CONFIG_LWIP_DHCP_DOES_ARP_CHECK=
|
||||
CONFIG_LWIP_DHCP_RESTORE_LAST_IP=y
|
||||
|
||||
#
|
||||
# DHCP server
|
||||
#
|
||||
CONFIG_LWIP_DHCPS_LEASE_UNIT=60
|
||||
CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8
|
||||
CONFIG_LWIP_AUTOIP=
|
||||
CONFIG_LWIP_IPV6_AUTOCONFIG=
|
||||
CONFIG_LWIP_NETIF_LOOPBACK=y
|
||||
CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
|
||||
|
||||
#
|
||||
# TCP
|
||||
#
|
||||
CONFIG_LWIP_TCP_ISN_HOOK=y
|
||||
CONFIG_LWIP_MAX_ACTIVE_TCP=16
|
||||
CONFIG_LWIP_MAX_LISTENING_TCP=16
|
||||
CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
|
||||
CONFIG_TCP_MAXRTX=12
|
||||
CONFIG_TCP_SYNMAXRTX=6
|
||||
CONFIG_TCP_MSS=1436
|
||||
CONFIG_TCP_MSL=60000
|
||||
CONFIG_TCP_SND_BUF_DEFAULT=5744
|
||||
CONFIG_TCP_WND_DEFAULT=5744
|
||||
CONFIG_TCP_RECVMBOX_SIZE=6
|
||||
CONFIG_TCP_QUEUE_OOSEQ=y
|
||||
CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES=
|
||||
CONFIG_TCP_OVERSIZE_MSS=y
|
||||
CONFIG_TCP_OVERSIZE_QUARTER_MSS=
|
||||
CONFIG_TCP_OVERSIZE_DISABLE=
|
||||
CONFIG_LWIP_TCP_RTO_TIME=3000
|
||||
|
||||
#
|
||||
# UDP
|
||||
#
|
||||
CONFIG_LWIP_MAX_UDP_PCBS=16
|
||||
CONFIG_UDP_RECVMBOX_SIZE=6
|
||||
CONFIG_TCPIP_TASK_STACK_SIZE=2560
|
||||
CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=
|
||||
CONFIG_TCPIP_TASK_AFFINITY_CPU0=y
|
||||
CONFIG_TCPIP_TASK_AFFINITY_CPU1=
|
||||
CONFIG_TCPIP_TASK_AFFINITY=0x0
|
||||
CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
|
||||
CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
|
||||
CONFIG_PPP_SUPPORT=y
|
||||
CONFIG_PPP_NOTIFY_PHASE_SUPPORT=
|
||||
CONFIG_PPP_PAP_SUPPORT=y
|
||||
CONFIG_PPP_CHAP_SUPPORT=y
|
||||
CONFIG_PPP_MSCHAP_SUPPORT=y
|
||||
CONFIG_PPP_MPPE_SUPPORT=y
|
||||
CONFIG_PPP_DEBUG_ON=
|
||||
|
||||
#
|
||||
# ICMP
|
||||
#
|
||||
CONFIG_LWIP_MULTICAST_PING=
|
||||
CONFIG_LWIP_BROADCAST_PING=
|
||||
|
||||
#
|
||||
# LWIP RAW API
|
||||
#
|
||||
CONFIG_LWIP_MAX_RAW_PCBS=16
|
||||
|
||||
#
|
||||
# SNTP
|
||||
#
|
||||
CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1
|
||||
CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
|
||||
CONFIG_LWIP_ESP_LWIP_ASSERT=y
|
||||
|
||||
#
|
||||
# mbedTLS
|
||||
#
|
||||
CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y
|
||||
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=
|
||||
CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC=
|
||||
CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC=
|
||||
CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384
|
||||
CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=
|
||||
CONFIG_MBEDTLS_DEBUG=
|
||||
CONFIG_MBEDTLS_ECP_RESTARTABLE=
|
||||
CONFIG_MBEDTLS_CMAC_C=
|
||||
CONFIG_MBEDTLS_HARDWARE_AES=y
|
||||
CONFIG_MBEDTLS_HARDWARE_MPI=
|
||||
CONFIG_MBEDTLS_HARDWARE_SHA=
|
||||
CONFIG_MBEDTLS_HAVE_TIME=y
|
||||
CONFIG_MBEDTLS_HAVE_TIME_DATE=
|
||||
CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y
|
||||
CONFIG_MBEDTLS_TLS_SERVER_ONLY=
|
||||
CONFIG_MBEDTLS_TLS_CLIENT_ONLY=
|
||||
CONFIG_MBEDTLS_TLS_DISABLED=
|
||||
CONFIG_MBEDTLS_TLS_SERVER=y
|
||||
CONFIG_MBEDTLS_TLS_CLIENT=y
|
||||
CONFIG_MBEDTLS_TLS_ENABLED=y
|
||||
|
||||
#
|
||||
# TLS Key Exchange Methods
|
||||
#
|
||||
CONFIG_MBEDTLS_PSK_MODES=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_PSK=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y
|
||||
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y
|
||||
CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
|
||||
CONFIG_MBEDTLS_SSL_PROTO_SSL3=
|
||||
CONFIG_MBEDTLS_SSL_PROTO_TLS1=y
|
||||
CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y
|
||||
CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
|
||||
CONFIG_MBEDTLS_SSL_PROTO_DTLS=
|
||||
CONFIG_MBEDTLS_SSL_ALPN=y
|
||||
CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y
|
||||
|
||||
#
|
||||
# Symmetric Ciphers
|
||||
#
|
||||
CONFIG_MBEDTLS_AES_C=y
|
||||
CONFIG_MBEDTLS_CAMELLIA_C=
|
||||
CONFIG_MBEDTLS_DES_C=
|
||||
CONFIG_MBEDTLS_RC4_DISABLED=y
|
||||
CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT=
|
||||
CONFIG_MBEDTLS_RC4_ENABLED=
|
||||
CONFIG_MBEDTLS_BLOWFISH_C=
|
||||
CONFIG_MBEDTLS_XTEA_C=
|
||||
CONFIG_MBEDTLS_CCM_C=y
|
||||
CONFIG_MBEDTLS_GCM_C=y
|
||||
CONFIG_MBEDTLS_RIPEMD160_C=
|
||||
|
||||
#
|
||||
# Certificates
|
||||
#
|
||||
CONFIG_MBEDTLS_PEM_PARSE_C=y
|
||||
CONFIG_MBEDTLS_PEM_WRITE_C=y
|
||||
CONFIG_MBEDTLS_X509_CRL_PARSE_C=y
|
||||
CONFIG_MBEDTLS_X509_CSR_PARSE_C=y
|
||||
CONFIG_MBEDTLS_ECP_C=y
|
||||
CONFIG_MBEDTLS_ECDH_C=y
|
||||
CONFIG_MBEDTLS_ECDSA_C=y
|
||||
CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
|
||||
CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
|
||||
|
||||
#
|
||||
# mDNS
|
||||
#
|
||||
CONFIG_MDNS_MAX_SERVICES=10
|
||||
|
||||
#
|
||||
# ESP-MQTT Configurations
|
||||
#
|
||||
CONFIG_MQTT_PROTOCOL_311=y
|
||||
CONFIG_MQTT_TRANSPORT_SSL=y
|
||||
CONFIG_MQTT_TRANSPORT_WEBSOCKET=y
|
||||
CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y
|
||||
CONFIG_MQTT_USE_CUSTOM_CONFIG=
|
||||
CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED=
|
||||
CONFIG_MQTT_CUSTOM_OUTBOX=
|
||||
|
||||
#
|
||||
# NVS
|
||||
#
|
||||
|
||||
#
|
||||
# OpenSSL
|
||||
#
|
||||
CONFIG_OPENSSL_DEBUG=
|
||||
CONFIG_OPENSSL_ASSERT_DO_NOTHING=y
|
||||
CONFIG_OPENSSL_ASSERT_EXIT=
|
||||
|
||||
#
|
||||
# PThreads
|
||||
#
|
||||
CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
|
||||
CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=2048
|
||||
CONFIG_PTHREAD_STACK_MIN=768
|
||||
CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
|
||||
CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0=
|
||||
CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1=
|
||||
CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
|
||||
CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
|
||||
|
||||
#
|
||||
# SPI Flash driver
|
||||
#
|
||||
CONFIG_SPI_FLASH_VERIFY_WRITE=
|
||||
CONFIG_SPI_FLASH_ENABLE_COUNTERS=
|
||||
CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
|
||||
CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
|
||||
CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS=
|
||||
CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED=
|
||||
CONFIG_SPI_FLASH_YIELD_DURING_ERASE=
|
||||
|
||||
#
|
||||
# SPIFFS Configuration
|
||||
#
|
||||
CONFIG_SPIFFS_MAX_PARTITIONS=3
|
||||
|
||||
#
|
||||
# SPIFFS Cache Configuration
|
||||
#
|
||||
CONFIG_SPIFFS_CACHE=y
|
||||
CONFIG_SPIFFS_CACHE_WR=y
|
||||
CONFIG_SPIFFS_CACHE_STATS=
|
||||
CONFIG_SPIFFS_PAGE_CHECK=y
|
||||
CONFIG_SPIFFS_GC_MAX_RUNS=10
|
||||
CONFIG_SPIFFS_GC_STATS=
|
||||
CONFIG_SPIFFS_PAGE_SIZE=256
|
||||
CONFIG_SPIFFS_OBJ_NAME_LEN=32
|
||||
CONFIG_SPIFFS_USE_MAGIC=y
|
||||
CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
|
||||
CONFIG_SPIFFS_META_LENGTH=4
|
||||
CONFIG_SPIFFS_USE_MTIME=y
|
||||
|
||||
#
|
||||
# Debug Configuration
|
||||
#
|
||||
CONFIG_SPIFFS_DBG=
|
||||
CONFIG_SPIFFS_API_DBG=
|
||||
CONFIG_SPIFFS_GC_DBG=
|
||||
CONFIG_SPIFFS_CACHE_DBG=
|
||||
CONFIG_SPIFFS_CHECK_DBG=
|
||||
CONFIG_SPIFFS_TEST_VISUALISATION=
|
||||
|
||||
#
|
||||
# TCP/IP Adapter
|
||||
#
|
||||
CONFIG_IP_LOST_TIMER_INTERVAL=120
|
||||
CONFIG_TCPIP_LWIP=y
|
||||
|
||||
#
|
||||
# Unity unit testing library
|
||||
#
|
||||
CONFIG_UNITY_ENABLE_FLOAT=y
|
||||
CONFIG_UNITY_ENABLE_DOUBLE=y
|
||||
CONFIG_UNITY_ENABLE_COLOR=
|
||||
CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
|
||||
CONFIG_UNITY_ENABLE_FIXTURE=
|
||||
|
||||
#
|
||||
# Virtual file system
|
||||
#
|
||||
CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
|
||||
CONFIG_SUPPORT_TERMIOS=y
|
||||
|
||||
#
|
||||
# Wear Levelling
|
||||
#
|
||||
CONFIG_WL_SECTOR_SIZE_512=
|
||||
CONFIG_WL_SECTOR_SIZE_4096=y
|
||||
CONFIG_WL_SECTOR_SIZE=4096
|
||||
|
||||
#
|
||||
# Wi-Fi Provisioning Manager
|
||||
#
|
||||
CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
|
||||
|
||||
#
|
||||
# Supplicant
|
||||
#
|
||||
CONFIG_WPA_WPS_WARS=
|
||||
CONFIG_WPA_DEBUG_PRINT=
|
||||
1727
sdkconfig.esp32
Normal file
1727
sdkconfig.esp32
Normal file
File diff suppressed because it is too large
Load diff
1481
sdkconfig.esp32s2
Normal file
1481
sdkconfig.esp32s2
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -3,92 +3,107 @@ source ./tools/config.sh
|
|||
TARGET_PATH=$AR_SDK/bin
|
||||
mkdir -p $TARGET_PATH || exit 1
|
||||
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_80/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_80=' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_160/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_240/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_240=' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160' ./sdkconfig
|
||||
if [ "$IDF_TARGET" = "esp32" ]; then
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_80/c\# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_160/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_240/c\# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160' ./sdkconfig
|
||||
|
||||
echo "CONFIG_BOOTLOADER_SPI_WP_PIN=7" >> ./sdkconfig
|
||||
echo "CONFIG_SPIRAM_OCCUPY_HSPI_HOST=y" >> ./sdkconfig
|
||||
echo "# CONFIG_SPIRAM_OCCUPY_VSPI_HOST is not set" >> ./sdkconfig
|
||||
echo "# CONFIG_SPIRAM_OCCUPY_NO_HOST is not set" >> ./sdkconfig
|
||||
elif [ "$IDF_TARGET" = "esp32s2" ]; then
|
||||
$SED -i '/CONFIG_ESP32S2_DEFAULT_CPU_FREQ_80/c\# CONFIG_ESP32S2_DEFAULT_CPU_FREQ_80 is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32S2_DEFAULT_CPU_FREQ_160/c\CONFIG_ESP32S2_DEFAULT_CPU_FREQ_160 is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32S2_DEFAULT_CPU_FREQ_240/c\# CONFIG_ESP32S2_DEFAULT_CPU_FREQ_240=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ/c\CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ=240' ./sdkconfig
|
||||
fi
|
||||
|
||||
$SED -i '/CONFIG_SPIRAM_SPEED_40M/c\# CONFIG_SPIRAM_SPEED_40M is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_SPIRAM_SPEED_80M/c\CONFIG_SPIRAM_SPEED_80M=y' ./sdkconfig
|
||||
echo "CONFIG_SPIRAM_SPEED_80M=y" >> ./sdkconfig
|
||||
|
||||
$SED -i '/CONFIG_ESPTOOLPY_FLASHFREQ_80M/c\CONFIG_ESPTOOLPY_FLASHFREQ_80M=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESPTOOLPY_FLASHFREQ_40M/c\CONFIG_ESPTOOLPY_FLASHFREQ_40M=' ./sdkconfig
|
||||
|
||||
$SED -i '/CONFIG_SPIRAM_SPEED_40M/c\CONFIG_SPIRAM_SPEED_40M=' ./sdkconfig
|
||||
echo "CONFIG_SPIRAM_SPEED_80M=y" >> ./sdkconfig
|
||||
echo "CONFIG_BOOTLOADER_SPI_WP_PIN=7" >> ./sdkconfig
|
||||
echo "CONFIG_SPIRAM_OCCUPY_HSPI_HOST=y" >> ./sdkconfig
|
||||
echo "CONFIG_SPIRAM_OCCUPY_VSPI_HOST=" >> ./sdkconfig
|
||||
echo "CONFIG_SPIRAM_OCCUPY_NO_HOST=" >> ./sdkconfig
|
||||
$SED -i '/CONFIG_ESPTOOLPY_FLASHFREQ_40M/c\# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set' ./sdkconfig
|
||||
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\# CONFIG_FLASHMODE_QOUT is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\# CONFIG_FLASHMODE_DIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\# CONFIG_FLASHMODE_DOUT is not set' ./sdkconfig
|
||||
echo "******** BUILDING BOOTLOADER QIO 80MHz *******"
|
||||
make -j8 bootloader || exit 1
|
||||
idf.py bootloader || exit 1
|
||||
cp build/bootloader/bootloader.bin $TARGET_PATH/bootloader_qio_80m.bin
|
||||
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\# CONFIG_FLASHMODE_QIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\# CONFIG_FLASHMODE_DIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\# CONFIG_FLASHMODE_DOUT is not set' ./sdkconfig
|
||||
echo "******** BUILDING BOOTLOADER QOUT 80MHz *******"
|
||||
make -j8 bootloader || exit 1
|
||||
idf.py bootloader || exit 1
|
||||
cp build/bootloader/bootloader.bin $TARGET_PATH/bootloader_qout_80m.bin
|
||||
|
||||
echo "CONFIG_SPIRAM_SPIWP_SD3_PIN=7" >> ./sdkconfig
|
||||
if [ "$IDF_TARGET" = "esp32" ]; then
|
||||
echo "CONFIG_SPIRAM_SPIWP_SD3_PIN=7" >> ./sdkconfig
|
||||
fi
|
||||
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\# CONFIG_FLASHMODE_QIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\# CONFIG_FLASHMODE_QOUT is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\# CONFIG_FLASHMODE_DOUT is not set' ./sdkconfig
|
||||
echo "******** BUILDING BOOTLOADER DIO 80MHz *******"
|
||||
make -j8 bootloader || exit 1
|
||||
idf.py bootloader || exit 1
|
||||
cp build/bootloader/bootloader.bin $TARGET_PATH/bootloader_dio_80m.bin
|
||||
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\# CONFIG_FLASHMODE_QIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\# CONFIG_FLASHMODE_QOUT is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\# CONFIG_FLASHMODE_DIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=y' ./sdkconfig
|
||||
echo "******** BUILDING BOOTLOADER DOUT 80MHz *******"
|
||||
make -j8 bootloader || exit 1
|
||||
idf.py bootloader || exit 1
|
||||
cp build/bootloader/bootloader.bin $TARGET_PATH/bootloader_dout_80m.bin
|
||||
|
||||
$SED -i '/CONFIG_ESPTOOLPY_FLASHFREQ_80M/c\CONFIG_ESPTOOLPY_FLASHFREQ_80M=' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESPTOOLPY_FLASHFREQ_80M/c\# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESPTOOLPY_FLASHFREQ_40M/c\CONFIG_ESPTOOLPY_FLASHFREQ_40M=y' ./sdkconfig
|
||||
|
||||
echo "CONFIG_BOOTLOADER_SPI_WP_PIN=7" >> ./sdkconfig
|
||||
echo "CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V=" >> ./sdkconfig
|
||||
if [ "$IDF_TARGET" = "esp32" ]; then
|
||||
echo "CONFIG_BOOTLOADER_SPI_WP_PIN=7" >> ./sdkconfig
|
||||
echo "# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set" >> ./sdkconfig
|
||||
fi
|
||||
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\# CONFIG_FLASHMODE_QOUT is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\# CONFIG_FLASHMODE_DIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\# CONFIG_FLASHMODE_DOUT is not set' ./sdkconfig
|
||||
echo "******** BUILDING BOOTLOADER QIO 40MHz *******"
|
||||
make -j8 bootloader || exit 1
|
||||
idf.py bootloader || exit 1
|
||||
cp build/bootloader/bootloader.bin $TARGET_PATH/bootloader_qio_40m.bin
|
||||
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\# CONFIG_FLASHMODE_QIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\# CONFIG_FLASHMODE_DIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\# CONFIG_FLASHMODE_DOUT is not set' ./sdkconfig
|
||||
echo "******** BUILDING BOOTLOADER QOUT 40MHz *******"
|
||||
make -j8 bootloader || exit 1
|
||||
idf.py bootloader || exit 1
|
||||
cp build/bootloader/bootloader.bin $TARGET_PATH/bootloader_qout_40m.bin
|
||||
|
||||
echo "CONFIG_SPIRAM_SPIWP_SD3_PIN=7" >> ./sdkconfig
|
||||
if [ "$IDF_TARGET" = "esp32" ]; then
|
||||
echo "CONFIG_SPIRAM_SPIWP_SD3_PIN=7" >> ./sdkconfig
|
||||
fi
|
||||
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\# CONFIG_FLASHMODE_QIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\# CONFIG_FLASHMODE_QOUT is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\# CONFIG_FLASHMODE_DOUT is not set' ./sdkconfig
|
||||
echo "******** BUILDING BOOTLOADER DIO 40MHz *******"
|
||||
make -j8 bootloader || exit 1
|
||||
idf.py bootloader || exit 1
|
||||
cp build/bootloader/bootloader.bin $TARGET_PATH/bootloader_dio_40m.bin
|
||||
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\# CONFIG_FLASHMODE_QIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\# CONFIG_FLASHMODE_QOUT is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\# CONFIG_FLASHMODE_DIO is not set' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=y' ./sdkconfig
|
||||
echo "******** BUILDING BOOTLOADER DOUT 40MHz *******"
|
||||
make -j8 bootloader || exit 1
|
||||
idf.py bootloader || exit 1
|
||||
cp build/bootloader/bootloader.bin $TARGET_PATH/bootloader_dout_40m.bin
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#remove previous build
|
||||
rm -rf ./out ./build
|
||||
|
||||
# ensure proper settings
|
||||
$SED -i '/CONFIG_FLASHMODE_QIO/c\CONFIG_FLASHMODE_QIO=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_QOUT/c\CONFIG_FLASHMODE_QOUT=' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DIO/c\CONFIG_FLASHMODE_DIO=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_FLASHMODE_DOUT/c\CONFIG_FLASHMODE_DOUT=' ./sdkconfig
|
||||
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_80/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_80=' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_160/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_160=' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_240/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y' ./sdkconfig
|
||||
$SED -i '/CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ/c\CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240' ./sdkconfig
|
||||
|
||||
# make the example
|
||||
make defconfig
|
||||
make -j8 #fixes make issue where build fails in arduino core subfolder
|
||||
make -j8 idf-libs || exit 1
|
||||
|
|
@ -1,32 +1,35 @@
|
|||
#!/bin/bash
|
||||
|
||||
IDF_COMPS="$IDF_PATH/components"
|
||||
IDF_TOOLCHAIN="xtensa-esp32-elf"
|
||||
IDF_TOOLCHAIN_LINUX_ARMEL="https://dl.espressif.com/dl/xtensa-esp32-elf-linux-armel-1.22.0-96-g2852398-5.2.0.tar.gz"
|
||||
IDF_TOOLCHAIN_LINUX32="https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-96-g2852398-5.2.0.tar.gz"
|
||||
IDF_TOOLCHAIN_LINUX64="https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-96-g2852398-5.2.0.tar.gz"
|
||||
IDF_TOOLCHAIN_WIN32="https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-96-g2852398-5.2.0.zip"
|
||||
IDF_TOOLCHAIN_MACOS="https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-96-g2852398-5.2.0.tar.gz"
|
||||
|
||||
if [ -z $IDF_BRANCH ]; then
|
||||
IDF_BRANCH="release/v3.3"
|
||||
IDF_BRANCH="master"
|
||||
fi
|
||||
|
||||
if [ -z $AR_PR_TARGET_BRANCH ]; then
|
||||
AR_PR_TARGET_BRANCH="release/v1.0"
|
||||
AR_PR_TARGET_BRANCH="master"
|
||||
fi
|
||||
|
||||
if [ -z $IDF_TARGET ]; then
|
||||
if [ -f sdkconfig ]; then
|
||||
IDF_TARGET=`cat sdkconfig | grep CONFIG_IDF_TARGET= | cut -d'"' -f2`
|
||||
if [ "$IDF_TARGET" = "" ]; then
|
||||
IDF_TARGET="esp32"
|
||||
fi
|
||||
else
|
||||
IDF_TARGET="esp32"
|
||||
fi
|
||||
fi
|
||||
|
||||
IDF_TOOLCHAIN="xtensa-$IDF_TARGET-elf"
|
||||
|
||||
# Owner of the target ESP32 Arduino repository
|
||||
AR_USER="espressif"
|
||||
|
||||
# The full name of the repository
|
||||
AR_REPO="$AR_USER/arduino-esp32"
|
||||
|
||||
IDF_REPO_URL="https://github.com/espressif/esp-idf.git"
|
||||
CAMERA_REPO_URL="https://github.com/espressif/esp32-camera.git"
|
||||
FACE_REPO_URL="https://github.com/espressif/esp-face.git"
|
||||
AR_REPO_URL="https://github.com/$AR_REPO.git"
|
||||
|
||||
if [ -n $GITHUB_TOKEN ]; then
|
||||
AR_REPO_URL="https://$GITHUB_TOKEN@github.com/$AR_REPO.git"
|
||||
fi
|
||||
|
|
@ -36,13 +39,12 @@ AR_COMPS="$AR_ROOT/components"
|
|||
AR_OUT="$AR_ROOT/out"
|
||||
AR_TOOLS="$AR_OUT/tools"
|
||||
AR_PLATFORM_TXT="$AR_OUT/platform.txt"
|
||||
AR_PLATFORMIO_PY="$AR_TOOLS/platformio-build.py"
|
||||
AR_ESPTOOL_PY="$AR_TOOLS/esptool.py"
|
||||
AR_GEN_PART_PY="$AR_TOOLS/gen_esp32part.py"
|
||||
AR_SDK="$AR_TOOLS/sdk"
|
||||
OSBITS=`uname -m`
|
||||
AR_SDK="$AR_TOOLS/sdk/$IDF_TARGET"
|
||||
|
||||
function get_os(){
|
||||
OSBITS=`arch`
|
||||
if [[ "$OSTYPE" == "linux"* ]]; then
|
||||
if [[ "$OSBITS" == "i686" ]]; then
|
||||
echo "linux32"
|
||||
|
|
@ -66,16 +68,13 @@ function get_os(){
|
|||
}
|
||||
|
||||
AR_OS=`get_os`
|
||||
echo "OSTYPE: $OSTYPE, OSBITS: $OSBITS, OS: $AR_OS"
|
||||
|
||||
export AWK="awk"
|
||||
export SED="sed"
|
||||
export SSTAT="stat -c %s"
|
||||
|
||||
if [[ "$AR_OS" == "macos" ]]; then
|
||||
export SED="gsed"
|
||||
export SSTAT="stat -f %z"
|
||||
export AWK="gawk"
|
||||
fi
|
||||
|
||||
function git_commit_exists(){ #git_commit_exists <repo-path> <commit-message>
|
||||
|
|
|
|||
|
|
@ -14,9 +14,12 @@ if ! [ -d "$ESP32_ARDUINO" ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf $ESP32_ARDUINO/tools/sdk
|
||||
cp -Rf $AR_SDK $ESP32_ARDUINO/tools/sdk
|
||||
cp -f $AR_ESPTOOL_PY $ESP32_ARDUINO/tools/esptool.py
|
||||
cp -f $AR_GEN_PART_PY $ESP32_ARDUINO/tools/gen_esp32part.py
|
||||
cp -f $AR_PLATFORMIO_PY $ESP32_ARDUINO/tools/platformio-build.py
|
||||
cp -f $AR_PLATFORM_TXT $ESP32_ARDUINO/platform.txt
|
||||
echo "Installing new libraries to $ESP32_ARDUINO"
|
||||
|
||||
rm -rf $ESP32_ARDUINO/tools/sdk $ESP32_ARDUINO/tools/esptool.py $ESP32_ARDUINO/tools/gen_esp32part.py $ESP32_ARDUINO/tools/platformio-build-*.py $ESP32_ARDUINO/platform.txt
|
||||
|
||||
cp -f $AR_OUT/platform.txt $ESP32_ARDUINO/
|
||||
cp -Rf $AR_TOOLS/sdk $ESP32_ARDUINO/tools/
|
||||
cp -f $AR_TOOLS/esptool.py $ESP32_ARDUINO/tools/
|
||||
cp -f $AR_TOOLS/gen_esp32part.py $ESP32_ARDUINO/tools/
|
||||
cp -f $AR_TOOLS/platformio-build-*.py $ESP32_ARDUINO/tools/
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/bash
|
||||
#/bin/bash
|
||||
|
||||
source ./tools/config.sh
|
||||
|
||||
|
|
@ -11,6 +11,7 @@ fi
|
|||
# CLONE ESP-IDF
|
||||
#
|
||||
|
||||
IDF_REPO_URL="https://github.com/espressif/esp-idf.git"
|
||||
if [ -z "$IDF_PATH" ]; then
|
||||
echo "ESP-IDF is not installed! Installing local copy"
|
||||
idf_was_installed="1"
|
||||
|
|
@ -93,49 +94,10 @@ fi
|
|||
#
|
||||
|
||||
if [ -x $idf_was_installed ]; then
|
||||
git -C $IDF_PATH fetch origin && git -C $IDF_PATH pull origin $IDF_BRANCH
|
||||
git -C $IDF_PATH submodule update --init --recursive
|
||||
echo "ESP-IDF is already installed at: $IDF_PATH"
|
||||
else
|
||||
git -C $IDF_PATH submodule update --init --recursive
|
||||
cd $IDF_PATH && python -m pip install -r requirements.txt && cd "$AR_ROOT"
|
||||
fi
|
||||
|
||||
#
|
||||
# INSTALL TOOLCHAIN
|
||||
#
|
||||
|
||||
if ! [ -x "$(command -v $IDF_TOOLCHAIN-gcc)" ]; then
|
||||
echo "GCC toolchain is not installed! Installing local copy"
|
||||
|
||||
if ! [ -d "$IDF_TOOLCHAIN" ]; then
|
||||
TC_EXT="tar.gz"
|
||||
if [[ "$AR_OS" == "win32" ]]; then
|
||||
TC_EXT="zip"
|
||||
fi
|
||||
if ! [ -f $IDF_TOOLCHAIN.$TC_EXT ]; then
|
||||
if [[ "$AR_OS" == "linux32" ]]; then
|
||||
TC_LINK="$IDF_TOOLCHAIN_LINUX32"
|
||||
elif [[ "$AR_OS" == "linux64" ]]; then
|
||||
TC_LINK="$IDF_TOOLCHAIN_LINUX64"
|
||||
elif [[ "$AR_OS" == "linux-armel" ]]; then
|
||||
TC_LINK="$IDF_TOOLCHAIN_LINUX_ARMEL"
|
||||
elif [[ "$AR_OS" == "macos" ]]; then
|
||||
TC_LINK="$IDF_TOOLCHAIN_MACOS"
|
||||
elif [[ "$AR_OS" == "win32" ]]; then
|
||||
TC_LINK="$IDF_TOOLCHAIN_WIN32"
|
||||
else
|
||||
echo "Unsupported OS $OSTYPE"
|
||||
exit 1
|
||||
fi
|
||||
echo "Downloading $TC_LINK"
|
||||
curl -k -o $IDF_TOOLCHAIN.$TC_EXT $TC_LINK || exit 1
|
||||
fi
|
||||
if [[ "$AR_OS" == "win32" ]]; then
|
||||
unzip $IDF_TOOLCHAIN.$TC_EXT || exit 1
|
||||
else
|
||||
tar zxf $IDF_TOOLCHAIN.$TC_EXT || exit 1
|
||||
fi
|
||||
rm -rf $IDF_TOOLCHAIN.$TC_EXT
|
||||
fi
|
||||
export PATH="$AR_ROOT/$IDF_TOOLCHAIN/bin:$PATH"
|
||||
fi
|
||||
$IDF_PATH/install.sh
|
||||
source $IDF_PATH/export.sh
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
sudo apt-get install -y git wget curl libssl-dev libncurses-dev flex bison gperf python3 cmake ninja-build ccache
|
||||
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3 get-pip.py && \
|
||||
pip3 install setuptools pyserial click future wheel cryptography pyparsing pyelftools
|
||||
|
|
@ -1,122 +1,350 @@
|
|||
#!/bin/bash
|
||||
# config
|
||||
|
||||
IDF_TARGET=$1
|
||||
|
||||
source ./tools/config.sh
|
||||
|
||||
echo "IDF_TARGET: $IDF_TARGET, PWD: $PWD, OUT: $AR_SDK"
|
||||
|
||||
# clean previous
|
||||
if [ -e "$AR_TOOLS" ]; then
|
||||
rm -rf "$AR_TOOLS"
|
||||
if [ -e "$AR_SDK/sdkconfig" ]; then
|
||||
rm -rf "$AR_SDK/sdkconfig"
|
||||
fi
|
||||
if [ -e "$AR_SDK/lib" ]; then
|
||||
rm -rf "$AR_SDK/lib"
|
||||
fi
|
||||
if [ -e "$AR_SDK/ld" ]; then
|
||||
rm -rf "$AR_SDK/ld"
|
||||
fi
|
||||
if [ -e "$AR_SDK/include" ]; then
|
||||
rm -rf "$AR_SDK/include"
|
||||
fi
|
||||
mkdir -p "$AR_SDK"
|
||||
|
||||
# start generation of platformio-build.py
|
||||
$AWK "/CPPPATH\=\[/{n++}{print>n\"pio_start.txt\"}" $AR_COMPS/arduino/tools/platformio-build.py
|
||||
$AWK "/LIBSOURCE_DIRS\=\[/{n++}{print>n\"pio_end.txt\"}" 1pio_start.txt
|
||||
cat 2pio_start.txt >> 1pio_end.txt
|
||||
cat pio_start.txt > "$AR_PLATFORMIO_PY"
|
||||
rm pio_end.txt 1pio_start.txt 2pio_start.txt pio_start.txt
|
||||
function get_actual_path(){
|
||||
p="$PWD"; cd "$1"; r="$PWD"; cd "$p"; echo "$r";
|
||||
}
|
||||
|
||||
# include dirs
|
||||
AR_INC="-DESP_PLATFORM -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX \"-I{compiler.sdk.path}/include/config\""
|
||||
echo " CPPPATH=[" >> "$AR_PLATFORMIO_PY" && echo " join(FRAMEWORK_DIR, \"tools\", \"sdk\", \"include\", \"config\")," >> "$AR_PLATFORMIO_PY"
|
||||
while [ "$1" != "" ]; do
|
||||
cpath=$1
|
||||
cname=$(echo $cpath| cut -d'/' -f 1)
|
||||
if [ "$cname" != "nimble" ]; then
|
||||
if [ -d "$AR_COMPS/$cpath" ]; then
|
||||
full_cpath="$AR_COMPS/$cpath"
|
||||
#
|
||||
# START OF DATA EXTRACTION FROM CMAKE
|
||||
#
|
||||
|
||||
C_FLAGS=""
|
||||
CPP_FLAGS=""
|
||||
AS_FLAGS=""
|
||||
|
||||
INCLUDES=""
|
||||
DEFINES=""
|
||||
|
||||
LD_FLAGS=""
|
||||
LD_LIBS=""
|
||||
LD_LIB_FILES=""
|
||||
LD_LIBS_SEARCH=""
|
||||
LD_SCRIPTS=""
|
||||
LD_SCRIPT_DIRS=""
|
||||
|
||||
PIO_CC_FLAGS=""
|
||||
PIO_C_FLAGS=""
|
||||
PIO_CXX_FLAGS=""
|
||||
PIO_AS_FLAGS=""
|
||||
PIO_LD_FLAGS=""
|
||||
PIO_LD_FUNCS=""
|
||||
PIO_LD_SCRIPTS=""
|
||||
|
||||
#collect includes, defines and c-flags
|
||||
str=`cat build/compile_commands.json | grep arduino-lib-builder-gcc.c | grep command | cut -d':' -f2 | cut -d',' -f1`
|
||||
str="${str:2:${#str}-1}" #remove leading space and quotes
|
||||
str=`printf '%b' "$str"` #unescape the string
|
||||
set -- $str
|
||||
for item in "${@:2:${#@}-5}"; do
|
||||
prefix="${item:0:2}"
|
||||
if [ "$prefix" = "-I" ]; then
|
||||
item="${item:2}"
|
||||
if [ "${item:0:1}" = "/" ]; then
|
||||
item=`get_actual_path $item`
|
||||
INCLUDES+="$item "
|
||||
elif [ "${item:0:2}" = ".." ]; then
|
||||
if [[ "${item:0:14}" = "../components/" && "${item:0:22}" != "../components/arduino/" ]]; then
|
||||
item="$PWD${item:2}"
|
||||
item=`get_actual_path $item`
|
||||
INCLUDES+="$item "
|
||||
fi
|
||||
else
|
||||
full_cpath="$IDF_COMPS/$cpath"
|
||||
item="$PWD/build/$item"
|
||||
item=`get_actual_path $item`
|
||||
INCLUDES+="$item "
|
||||
fi
|
||||
out_cpath="$AR_SDK/include/$cname"
|
||||
if [ ! -d $out_cpath ]; then
|
||||
#first encounter of this component
|
||||
AR_INC+=" \"-I{compiler.sdk.path}/include/$cname\""
|
||||
echo " join(FRAMEWORK_DIR, \"tools\", \"sdk\", \"include\", \"$cname\")," >> "$AR_PLATFORMIO_PY"
|
||||
elif [ "$prefix" = "-D" ]; then
|
||||
if [[ "${item:2:7}" != "ARDUINO" ]] && [[ "$item" != "-DESP32" ]]; then #skip ARDUINO defines
|
||||
DEFINES+="$item "
|
||||
fi
|
||||
for f in `find $full_cpath -name '*.h'`; do
|
||||
rel_f=${f#*$cpath/}
|
||||
full_f=/$rel_f
|
||||
rel_p=${full_f%/*}
|
||||
mkdir -p "$out_cpath$rel_p"
|
||||
cp -f $f "$out_cpath$rel_p/"
|
||||
elif [[ "$item" != "-Wall" && "$item" != "-Werror=all" && "$item" != "-Wextra" ]]; then
|
||||
if [[ "${item:0:23}" != "-mfix-esp32-psram-cache" && "${item:0:18}" != "-fmacro-prefix-map" ]]; then
|
||||
C_FLAGS+="$item "
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
#collect asm-flags
|
||||
str=`cat build/compile_commands.json | grep arduino-lib-builder-as.S | grep command | cut -d':' -f2 | cut -d',' -f1`
|
||||
str="${str:2:${#str}-1}" #remove leading space and quotes
|
||||
str=`printf '%b' "$str"` #unescape the string
|
||||
set -- $str
|
||||
for item in "${@:2:${#@}-5}"; do
|
||||
prefix="${item:0:2}"
|
||||
if [[ "$prefix" != "-I" && "$prefix" != "-D" && "$item" != "-Wall" && "$item" != "-Werror=all" && "$item" != "-Wextra" ]]; then
|
||||
if [[ "${item:0:23}" != "-mfix-esp32-psram-cache" && "${item:0:18}" != "-fmacro-prefix-map" ]]; then
|
||||
AS_FLAGS+="$item "
|
||||
if [[ $C_FLAGS == *"$item"* ]]; then
|
||||
PIO_CC_FLAGS+="$item "
|
||||
else
|
||||
PIO_AS_FLAGS+="$item "
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
#collect cpp-flags
|
||||
str=`cat build/compile_commands.json | grep arduino-lib-builder-cpp.cpp | grep command | cut -d':' -f2 | cut -d',' -f1`
|
||||
str="${str:2:${#str}-1}" #remove leading space and quotes
|
||||
str=`printf '%b' "$str"` #unescape the string
|
||||
set -- $str
|
||||
for item in "${@:2:${#@}-5}"; do
|
||||
prefix="${item:0:2}"
|
||||
if [[ "$prefix" != "-I" && "$prefix" != "-D" && "$item" != "-Wall" && "$item" != "-Werror=all" && "$item" != "-Wextra" ]]; then
|
||||
if [[ "${item:0:23}" != "-mfix-esp32-psram-cache" && "${item:0:18}" != "-fmacro-prefix-map" ]]; then
|
||||
CPP_FLAGS+="$item "
|
||||
if [[ $PIO_CC_FLAGS != *"$item"* ]]; then
|
||||
PIO_CXX_FLAGS+="$item "
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
set -- $C_FLAGS
|
||||
for item; do
|
||||
if [[ $PIO_CC_FLAGS != *"$item"* ]]; then
|
||||
PIO_C_FLAGS+="$item "
|
||||
fi
|
||||
done
|
||||
|
||||
#parse link command to extract libs and flags
|
||||
add_next=0
|
||||
is_dir=0
|
||||
is_script=0
|
||||
str=`cat build/CMakeFiles/arduino-lib-builder.elf.dir/link.txt`
|
||||
set -- $str
|
||||
for item; do
|
||||
prefix="${item:0:1}"
|
||||
if [ "$prefix" = "-" ]; then
|
||||
if [ "${item:0:10}" != "-Wl,--Map=" ]; then
|
||||
if [ "$item" = "-L" ]; then # -L /path
|
||||
add_next=1
|
||||
is_dir=1
|
||||
elif [ "${item:0:2}" = "-L" ]; then # -L/path
|
||||
LD_SCRIPT_DIRS+="${item:2} "
|
||||
elif [ "$item" = "-T" ]; then # -T script.ld
|
||||
add_next=1
|
||||
is_script=1
|
||||
LD_SCRIPTS+="$item "
|
||||
elif [ "$item" = "-u" ]; then # -u function_name
|
||||
add_next=1
|
||||
LD_FLAGS+="$item "
|
||||
elif [ "${item:0:2}" = "-l" ]; then # -l[lib_name]
|
||||
LD_LIBS+="$item "
|
||||
exclude_libs=";m;c;gcc;stdc++;"
|
||||
short_name="${item:2}"
|
||||
if [[ $exclude_libs != *";$short_name;"* && $LD_LIBS_SEARCH != *"lib$short_name.a"* ]]; then
|
||||
LD_LIBS_SEARCH+="lib$short_name.a "
|
||||
fi
|
||||
elif [ "$item" = "-o" ]; then
|
||||
add_next=0
|
||||
is_script=0
|
||||
is_dir=0
|
||||
elif [[ "${item:0:23}" != "-mfix-esp32-psram-cache" && "${item:0:18}" != "-fmacro-prefix-map" ]]; then
|
||||
LD_FLAGS+="$item "
|
||||
PIO_LD_FLAGS+="$item "
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if [ "$add_next" = "1" ]; then
|
||||
add_next=0
|
||||
if [ "$is_dir" = "1" ]; then
|
||||
is_dir=0
|
||||
LD_SCRIPT_DIRS+="$item "
|
||||
elif [ "$is_script" = "1" ]; then
|
||||
is_script=0
|
||||
LD_SCRIPTS+="$item "
|
||||
PIO_LD_SCRIPTS+="$item "
|
||||
else
|
||||
LD_FLAGS+="$item "
|
||||
PIO_LD_FUNCS+="$item "
|
||||
fi
|
||||
else
|
||||
if [ "${item:${#item}-2:2}" = ".a" ]; then
|
||||
if [ "${item:0:1}" != "/" ]; then
|
||||
item="$PWD/build/$item"
|
||||
fi
|
||||
lname=$(basename $item)
|
||||
lname="${lname:3:${#lname}-5}"
|
||||
if [[ "$lname" != "main" && "$lname" != "arduino" ]]; then
|
||||
lsize=$($SSTAT "$item")
|
||||
if (( lsize > 8 )); then
|
||||
LD_LIBS+="-l$lname "
|
||||
LD_LIB_FILES+="$item "
|
||||
else
|
||||
echo "*** Skipping $(basename $item): size too small $lsize"
|
||||
fi
|
||||
fi
|
||||
elif [[ "${item:${#item}-4:4}" = ".obj" || "${item:${#item}-4:4}" = ".elf" || "${item:${#item}-4:4}" = "-g++" ]]; then
|
||||
item="$item"
|
||||
else
|
||||
echo "*** BAD LD ITEM: $item ${item:${#item}-2:2}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
#
|
||||
# END OF DATA EXTRACTION FROM CMAKE
|
||||
#
|
||||
|
||||
AR_PLATFORMIO_PY="$AR_TOOLS/platformio-build-$IDF_TARGET.py"
|
||||
|
||||
# start generation of platformio-build.py
|
||||
awk "/ASFLAGS=\[/{n++}{print>n\"pio_start.txt\"}" $AR_COMPS/arduino/tools/platformio-build-$IDF_TARGET.py
|
||||
awk "/\"ARDUINO_ARCH_ESP32\"/{n++}{print>n\"pio_end.txt\"}" 1pio_start.txt
|
||||
cat pio_start.txt > "$AR_PLATFORMIO_PY"
|
||||
rm pio_end.txt 1pio_start.txt pio_start.txt
|
||||
|
||||
echo " ASFLAGS=[" >> "$AR_PLATFORMIO_PY"
|
||||
set -- $PIO_AS_FLAGS
|
||||
for item; do
|
||||
echo " \"$item\"," >> "$AR_PLATFORMIO_PY"
|
||||
done
|
||||
echo " \"-x\", \"assembler-with-cpp\"" >> "$AR_PLATFORMIO_PY"
|
||||
echo " ]," >> "$AR_PLATFORMIO_PY"
|
||||
echo "" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
echo " CFLAGS=[" >> "$AR_PLATFORMIO_PY"
|
||||
set -- $PIO_C_FLAGS
|
||||
last_item="${@: -1}"
|
||||
for item in "${@:0:${#@}}"; do
|
||||
echo " \"$item\"," >> "$AR_PLATFORMIO_PY"
|
||||
done
|
||||
echo " \"$last_item\"" >> "$AR_PLATFORMIO_PY"
|
||||
echo " ]," >> "$AR_PLATFORMIO_PY"
|
||||
echo "" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
echo " CXXFLAGS=[" >> "$AR_PLATFORMIO_PY"
|
||||
set -- $PIO_CXX_FLAGS
|
||||
last_item="${@: -1}"
|
||||
for item in "${@:0:${#@}}"; do
|
||||
echo " \"$item\"," >> "$AR_PLATFORMIO_PY"
|
||||
done
|
||||
echo " \"$last_item\"" >> "$AR_PLATFORMIO_PY"
|
||||
echo " ]," >> "$AR_PLATFORMIO_PY"
|
||||
echo "" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
echo " CCFLAGS=[" >> "$AR_PLATFORMIO_PY"
|
||||
set -- $PIO_CC_FLAGS
|
||||
for item; do
|
||||
echo " \"$item\"," >> "$AR_PLATFORMIO_PY"
|
||||
done
|
||||
echo " \"-MMD\"" >> "$AR_PLATFORMIO_PY"
|
||||
echo " ]," >> "$AR_PLATFORMIO_PY"
|
||||
echo "" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
echo " LINKFLAGS=[" >> "$AR_PLATFORMIO_PY"
|
||||
set -- $PIO_LD_FLAGS
|
||||
for item; do
|
||||
echo " \"$item\"," >> "$AR_PLATFORMIO_PY"
|
||||
done
|
||||
set -- $PIO_LD_SCRIPTS
|
||||
for item; do
|
||||
echo " \"-T\", \"$item\"," >> "$AR_PLATFORMIO_PY"
|
||||
done
|
||||
set -- $PIO_LD_FUNCS
|
||||
for item; do
|
||||
echo " \"-u\", \"$item\"," >> "$AR_PLATFORMIO_PY"
|
||||
done
|
||||
echo " '-Wl,-Map=\"%s\"' % join(\"\$BUILD_DIR\", basename(env.subst(\"\${PROJECT_DIR}.map\")))" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
echo " ]," >> "$AR_PLATFORMIO_PY"
|
||||
echo "" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
# # include dirs
|
||||
AR_INC=""
|
||||
echo " CPPPATH=[" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
set -- $INCLUDES
|
||||
|
||||
for item; do
|
||||
if [[ "$item" != $PWD ]]; then
|
||||
ipath="$item"
|
||||
fname=`basename "$ipath"`
|
||||
dname=`basename $(dirname "$ipath")`
|
||||
if [[ "$fname" == "main" && "$dname" == "esp32-arduino-lib-builder" ]]; then
|
||||
continue
|
||||
fi
|
||||
while [[ "$dname" != "components" && "$dname" != "build" ]]; do
|
||||
ipath=`dirname "$ipath"`
|
||||
fname=`basename "$ipath"`
|
||||
dname=`basename $(dirname "$ipath")`
|
||||
done
|
||||
for f in `find $full_cpath -name '*.hpp'`; do
|
||||
rel_f=${f#*$cpath/}
|
||||
full_f=/$rel_f
|
||||
rel_p=${full_f%/*}
|
||||
if [[ "$fname" == "arduino" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
out_sub="${item#*$ipath}"
|
||||
out_cpath="$AR_SDK/include/$fname$out_sub"
|
||||
AR_INC+=" \"-I{compiler.sdk.path}/include/$fname$out_sub\""
|
||||
if [ "$out_sub" = "" ]; then
|
||||
echo " join(FRAMEWORK_DIR, \"tools\", \"sdk\", \"$IDF_TARGET\", \"include\", \"$fname\")," >> "$AR_PLATFORMIO_PY"
|
||||
else
|
||||
pio_sub="${out_sub:1}"
|
||||
pio_sub=`echo $pio_sub | sed 's/\//\\", \\"/g'`
|
||||
echo " join(FRAMEWORK_DIR, \"tools\", \"sdk\", \"$IDF_TARGET\", \"include\", \"$fname\", \"$pio_sub\")," >> "$AR_PLATFORMIO_PY"
|
||||
fi
|
||||
for f in `find "$item" -name '*.h'`; do
|
||||
rel_f=${f#*$item}
|
||||
rel_p=${rel_f%/*}
|
||||
mkdir -p "$out_cpath$rel_p"
|
||||
cp -f $f "$out_cpath$rel_p/"
|
||||
cp -n $f "$out_cpath$rel_p/"
|
||||
done
|
||||
for f in `find "$item" -name '*.hpp'`; do
|
||||
rel_f=${f#*$item}
|
||||
rel_p=${rel_f%/*}
|
||||
mkdir -p "$out_cpath$rel_p"
|
||||
cp -n $f "$out_cpath$rel_p/"
|
||||
done
|
||||
fi
|
||||
shift
|
||||
done
|
||||
echo " join(FRAMEWORK_DIR, \"cores\", env.BoardConfig().get(\"build.core\"))" >> "$AR_PLATFORMIO_PY"
|
||||
echo " ]," >> "$AR_PLATFORMIO_PY"
|
||||
echo "" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
minlsize=8
|
||||
mkdir -p "$AR_SDK/lib"
|
||||
|
||||
# idf libs
|
||||
mkdir -p $AR_SDK/lib && \
|
||||
for lib in `find $IDF_COMPS -name '*.a' | grep -v libg | grep -v libc_rom | grep -v workaround | grep -v libc-minusrom`; do
|
||||
lsize=$($SSTAT "$lib")
|
||||
if (( lsize > minlsize )); then
|
||||
cp -f $lib $AR_SDK/lib/
|
||||
else
|
||||
echo "skipping $lib: size too small $lsize"
|
||||
fi
|
||||
AR_LIBS="$LD_LIBS"
|
||||
PIO_LIBS=""
|
||||
set -- $LD_LIBS
|
||||
for item; do
|
||||
if [ "$PIO_LIBS" != "" ]; then
|
||||
PIO_LIBS+=", "
|
||||
fi
|
||||
PIO_LIBS+="\"$item\""
|
||||
done
|
||||
|
||||
# component libs
|
||||
for lib in `find components -name '*.a' | grep -v arduino`; do
|
||||
lsize=$($SSTAT "$lib")
|
||||
if (( lsize > minlsize )); then
|
||||
cp -f $lib $AR_SDK/lib/
|
||||
else
|
||||
echo "skipping $lib: size too small $lsize"
|
||||
fi
|
||||
set -- $LD_LIB_FILES
|
||||
for item; do
|
||||
cp "$item" "$AR_SDK/lib/"
|
||||
done
|
||||
|
||||
# compiled libs
|
||||
for lib in `find build -name '*.a' | grep -v bootloader | grep -v libmain | grep -v idf_test | grep -v aws_iot | grep -v libmicro | grep -v libarduino`; do
|
||||
lsize=$($SSTAT "$lib")
|
||||
if (( lsize > minlsize )); then
|
||||
cp -f $lib $AR_SDK/lib/
|
||||
else
|
||||
echo "skipping $lib: size too small $lsize"
|
||||
fi
|
||||
done
|
||||
cp build/bootloader_support/libbootloader_support.a $AR_SDK/lib/
|
||||
cp build/micro-ecc/libmicro-ecc.a $AR_SDK/lib/
|
||||
|
||||
# remove liblib.a from esp-face (empty and causing issues on Windows)
|
||||
rm -rf $AR_SDK/lib/liblib.a
|
||||
|
||||
# generate Arduino and PIO configs
|
||||
AR_LIBS=""
|
||||
PIO_LIBS="\"-lgcc\""
|
||||
cd "$AR_SDK/lib/"
|
||||
for lib in `find . -name '*.a'`; do
|
||||
AR_LIBS+="-l"$(basename ${lib:5} .a)" "
|
||||
PIO_LIBS+=", \"-l"$(basename ${lib:5} .a)"\""
|
||||
done
|
||||
PIO_LIBS+=", \"-lstdc++\""
|
||||
|
||||
# copy libs for psram workaround
|
||||
for lib in `find $IDF_COMPS/newlib/lib -name '*-psram-workaround.a'`; do
|
||||
lsize=$($SSTAT "$lib")
|
||||
if (( lsize > minlsize )); then
|
||||
cp -f $lib $AR_SDK/lib/
|
||||
else
|
||||
echo "skipping $lib: size too small $lsize"
|
||||
fi
|
||||
done
|
||||
|
||||
cd "$AR_ROOT"
|
||||
|
||||
echo " LIBPATH=[" >> "$AR_PLATFORMIO_PY"
|
||||
echo " join(FRAMEWORK_DIR, \"tools\", \"sdk\", \"lib\")," >> "$AR_PLATFORMIO_PY"
|
||||
echo " join(FRAMEWORK_DIR, \"tools\", \"sdk\", \"ld\")" >> "$AR_PLATFORMIO_PY"
|
||||
echo " join(FRAMEWORK_DIR, \"tools\", \"sdk\", \"$IDF_TARGET\", \"lib\")," >> "$AR_PLATFORMIO_PY"
|
||||
echo " join(FRAMEWORK_DIR, \"tools\", \"sdk\", \"$IDF_TARGET\", \"ld\")" >> "$AR_PLATFORMIO_PY"
|
||||
echo " ]," >> "$AR_PLATFORMIO_PY"
|
||||
echo "" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
|
|
@ -125,39 +353,80 @@ echo " $PIO_LIBS" >> "$AR_PLATFORMIO_PY"
|
|||
echo " ]," >> "$AR_PLATFORMIO_PY"
|
||||
echo "" >> "$AR_PLATFORMIO_PY"
|
||||
|
||||
echo " CPPDEFINES=[" >> "$AR_PLATFORMIO_PY"
|
||||
set -- $DEFINES
|
||||
for item; do
|
||||
item="${item:2}" #remove -D
|
||||
if [[ $item == *"="* ]]; then
|
||||
item=(${item//=/ })
|
||||
re='^[+-]?[0-9]+([.][0-9]+)?$'
|
||||
if [[ ${item[1]} =~ $re ]]; then
|
||||
echo " (\"${item[0]}\", ${item[1]})," >> "$AR_PLATFORMIO_PY"
|
||||
else
|
||||
echo " (\"${item[0]}\", '${item[1]}')," >> "$AR_PLATFORMIO_PY"
|
||||
fi
|
||||
else
|
||||
echo " \"$item\"," >> "$AR_PLATFORMIO_PY"
|
||||
fi
|
||||
done
|
||||
|
||||
# remove backslashes for Arduino
|
||||
DEFINES=`echo "$DEFINES" | tr -d '\\'`
|
||||
|
||||
|
||||
# end generation of platformio-build.py
|
||||
cat 1pio_end.txt >> "$AR_PLATFORMIO_PY"
|
||||
rm 1pio_end.txt
|
||||
|
||||
# arduino platform.txt
|
||||
$AWK "/compiler.cpreprocessor.flags\=/{n++}{print>n\"platform_start.txt\"}" $AR_COMPS/arduino/platform.txt
|
||||
$SED -i '/compiler.cpreprocessor.flags\=/d' 1platform_start.txt
|
||||
$AWK "/compiler.c.elf.libs\=/{n++}{print>n\"platform_mid.txt\"}" 1platform_start.txt
|
||||
$SED -i '/compiler.c.elf.libs\=/d' 1platform_mid.txt
|
||||
rm 1platform_start.txt
|
||||
platform_file="$AR_COMPS/arduino/platform.txt"
|
||||
if [ -f "$AR_PLATFORM_TXT" ]; then
|
||||
# use the file we have already compiled for other chips
|
||||
platform_file="$AR_PLATFORM_TXT"
|
||||
fi
|
||||
awk "/compiler.cpreprocessor.flags.$IDF_TARGET=/{n++}{print>n\"platform_start.txt\"}" "$platform_file"
|
||||
$SED -i "/compiler.cpreprocessor.flags.$IDF_TARGET\=/d" 1platform_start.txt
|
||||
awk "/compiler.ar.flags.$IDF_TARGET=/{n++}{print>n\"platform_mid.txt\"}" 1platform_start.txt
|
||||
rm -rf 1platform_start.txt
|
||||
|
||||
cat platform_start.txt > "$AR_PLATFORM_TXT"
|
||||
echo "compiler.cpreprocessor.flags=$AR_INC" >> "$AR_PLATFORM_TXT"
|
||||
cat platform_mid.txt >> "$AR_PLATFORM_TXT"
|
||||
echo "compiler.c.elf.libs=-lgcc $AR_LIBS -lstdc++" >> "$AR_PLATFORM_TXT"
|
||||
echo "compiler.cpreprocessor.flags.$IDF_TARGET=$DEFINES $AR_INC" >> "$AR_PLATFORM_TXT"
|
||||
echo "compiler.c.elf.libs.$IDF_TARGET=$AR_LIBS" >> "$AR_PLATFORM_TXT"
|
||||
echo "compiler.c.flags.$IDF_TARGET=$C_FLAGS -MMD -c" >> "$AR_PLATFORM_TXT"
|
||||
echo "compiler.cpp.flags.$IDF_TARGET=$CPP_FLAGS -MMD -c" >> "$AR_PLATFORM_TXT"
|
||||
echo "compiler.S.flags.$IDF_TARGET=$AS_FLAGS -x assembler-with-cpp -MMD -c" >> "$AR_PLATFORM_TXT"
|
||||
echo "compiler.c.elf.flags.$IDF_TARGET=$LD_SCRIPTS $LD_FLAGS" >> "$AR_PLATFORM_TXT"
|
||||
cat 1platform_mid.txt >> "$AR_PLATFORM_TXT"
|
||||
rm platform_start.txt platform_mid.txt 1platform_mid.txt
|
||||
rm -rf platform_start.txt platform_mid.txt 1platform_mid.txt
|
||||
|
||||
# sdkconfig
|
||||
mkdir -p $AR_SDK/include/config && cp -f build/include/sdkconfig.h $AR_SDK/include/config/sdkconfig.h
|
||||
cp -f sdkconfig $AR_SDK/sdkconfig
|
||||
cp -f "sdkconfig" "$AR_SDK/sdkconfig"
|
||||
|
||||
# esptool.py
|
||||
cp $IDF_COMPS/esptool_py/esptool/esptool.py $AR_ESPTOOL_PY
|
||||
cp "$IDF_COMPS/esptool_py/esptool/esptool.py" "$AR_ESPTOOL_PY"
|
||||
|
||||
# gen_esp32part.py
|
||||
cp $IDF_COMPS/partition_table/gen_esp32part.py $AR_GEN_PART_PY
|
||||
cp "$IDF_COMPS/partition_table/gen_esp32part.py" "$AR_GEN_PART_PY"
|
||||
|
||||
# copy precompiled libs (if we need them)
|
||||
function copy_precompiled_lib(){
|
||||
lib_file="$1"
|
||||
lib_name="$(basename $lib_file)"
|
||||
if [[ $LD_LIBS_SEARCH == *"$lib_name"* ]]; then
|
||||
cp "$lib_file" "$AR_SDK/ld/"
|
||||
fi
|
||||
}
|
||||
|
||||
# idf ld scripts
|
||||
mkdir -p $AR_SDK/ld && find $IDF_COMPS/esp32/ld -name '*.ld' -exec cp -f {} $AR_SDK/ld/ \;
|
||||
|
||||
# ld script
|
||||
cp -f build/esp32/*.ld $AR_SDK/ld/
|
||||
mkdir -p "$AR_SDK/ld"
|
||||
set -- $LD_SCRIPT_DIRS
|
||||
for item; do
|
||||
find "$item" -name '*.ld' -exec cp -f {} "$AR_SDK/ld/" \;
|
||||
for lib in `find "$item" -name '*.a'`; do
|
||||
copy_precompiled_lib "$lib"
|
||||
done
|
||||
done
|
||||
|
||||
# Add IDF versions to sdkconfig
|
||||
echo "#define CONFIG_ARDUINO_IDF_COMMIT \"$IDF_COMMIT\"" >> $AR_SDK/include/config/sdkconfig.h
|
||||
echo "#define CONFIG_ARDUINO_IDF_BRANCH \"$IDF_BRANCH\"" >> $AR_SDK/include/config/sdkconfig.h
|
||||
echo "#define CONFIG_ARDUINO_IDF_COMMIT \"$IDF_COMMIT\"" >> "$AR_SDK/include/config/sdkconfig.h"
|
||||
echo "#define CONFIG_ARDUINO_IDF_BRANCH \"$IDF_BRANCH\"" >> "$AR_SDK/include/config/sdkconfig.h"
|
||||
|
|
|
|||
|
|
@ -20,12 +20,7 @@ if [ $AR_HAS_COMMIT == "0" ]; then
|
|||
|
||||
# make changes to the files
|
||||
echo "Patching files in branch '$AR_NEW_BRANCH_NAME'..."
|
||||
rm -rf $AR_COMPS/arduino/tools/sdk
|
||||
cp -Rf $AR_SDK $AR_COMPS/arduino/tools/sdk
|
||||
cp -f $AR_ESPTOOL_PY $AR_COMPS/arduino/tools/esptool.py
|
||||
cp -f $AR_GEN_PART_PY $AR_COMPS/arduino/tools/gen_esp32part.py
|
||||
cp -f $AR_PLATFORMIO_PY $AR_COMPS/arduino/tools/platformio-build.py
|
||||
cp -f $AR_PLATFORM_TXT $AR_COMPS/arduino/platform.txt
|
||||
ESP32_ARDUINO="$AR_COMPS/arduino" ./tools/copy-to-arduino.sh
|
||||
|
||||
# did any of the files change?
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ payload=`echo "$EVENT_JSON" | jq -r '.client_payload'`
|
|||
branch=`echo "$payload" | jq -r '.branch'`
|
||||
commit=`echo "$payload" | jq -r '.commit'`
|
||||
builder=`echo "$payload" | jq -r '.builder'`
|
||||
arduino=`echo "$payload" | jq -r '.arduino'`
|
||||
|
||||
echo "Action: $action, Branch: $branch, Commit: $commit, Builder: $builder"
|
||||
|
||||
|
|
@ -34,6 +35,10 @@ if [ ! "$builder" == "" ] && [ ! "$builder" == "null" ]; then
|
|||
git checkout "$builder"
|
||||
fi
|
||||
|
||||
if [ ! "$arduino" == "" ] && [ ! "$arduino" == "null" ]; then
|
||||
export AR_BRANCH="$arduino"
|
||||
fi
|
||||
|
||||
source ./build.sh
|
||||
|
||||
if [ "$action" == "deploy" ]; then
|
||||
|
|
|
|||
|
|
@ -1,25 +1,32 @@
|
|||
#!/bin/bash
|
||||
#/bin/bash
|
||||
|
||||
source ./tools/config.sh
|
||||
|
||||
CAMERA_REPO_URL="https://github.com/espressif/esp32-camera.git"
|
||||
FACE_REPO_URL="https://github.com/espressif/esp-face.git"
|
||||
RMAKER_REPO_URL="https://github.com/espressif/esp-rainmaker.git"
|
||||
DSP_REPO_URL="https://github.com/espressif/esp-dsp.git"
|
||||
LITTLEFS_REPO_URL="https://github.com/joltwallet/esp_littlefs.git"
|
||||
TINYUSB_REPO_URL="https://github.com/hathach/tinyusb.git"
|
||||
|
||||
#
|
||||
# CLONE/UPDATE ARDUINO
|
||||
#
|
||||
ARDUINO_BRANCH="master"
|
||||
ARDUINO_HAS_BRANCH=`git_branch_exists "$AR_COMPS/arduino" "idf-$IDF_BRANCH"`
|
||||
if [ "$ARDUINO_HAS_BRANCH" == "1" ]; then
|
||||
ARDUINO_BRANCH="idf-$IDF_BRANCH"
|
||||
|
||||
if [ -z $AR_BRANCH ]; then
|
||||
has_ar_branch=`git_branch_exists "$AR_COMPS/arduino" "idf-$IDF_BRANCH"`
|
||||
if [ "$has_ar_branch" == "1" ]; then
|
||||
export AR_BRANCH="idf-$IDF_BRANCH"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d "$AR_COMPS/arduino" ]; then
|
||||
git clone $AR_REPO_URL "$AR_COMPS/arduino" -b $ARDUINO_BRANCH
|
||||
else
|
||||
git -C "$AR_COMPS/arduino" checkout $ARDUINO_BRANCH && \
|
||||
git -C "$AR_COMPS/arduino" fetch origin && \
|
||||
git -C "$AR_COMPS/arduino" pull origin $ARDUINO_BRANCH
|
||||
git clone $AR_REPO_URL "$AR_COMPS/arduino"
|
||||
if [ "$AR_BRANCH" ]; then
|
||||
git -C "$AR_COMPS/arduino" checkout "$AR_BRANCH"
|
||||
fi
|
||||
fi
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
git -C "$AR_COMPS/arduino" submodule update --init --recursive
|
||||
|
||||
#
|
||||
# CLONE/UPDATE ESP32-CAMERA
|
||||
|
|
@ -28,8 +35,12 @@ git -C "$AR_COMPS/arduino" submodule update --init --recursive
|
|||
if [ ! -d "$AR_COMPS/esp32-camera" ]; then
|
||||
git clone $CAMERA_REPO_URL "$AR_COMPS/esp32-camera"
|
||||
else
|
||||
git -C "$AR_COMPS/esp32-camera" fetch origin && \
|
||||
git -C "$AR_COMPS/esp32-camera" pull origin master
|
||||
git -C "$AR_COMPS/esp32-camera" fetch && \
|
||||
git -C "$AR_COMPS/esp32-camera" pull --ff-only
|
||||
fi
|
||||
#this is a temp measure to fix build issue in recent IDF master
|
||||
if [ -f "$AR_COMPS/esp32-camera/idf_component.yml" ]; then
|
||||
rm -rf "$AR_COMPS/esp32-camera/idf_component.yml"
|
||||
fi
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
|
||||
|
|
@ -40,7 +51,56 @@ if [ $? -ne 0 ]; then exit 1; fi
|
|||
if [ ! -d "$AR_COMPS/esp-face" ]; then
|
||||
git clone $FACE_REPO_URL "$AR_COMPS/esp-face"
|
||||
else
|
||||
git -C "$AR_COMPS/esp-face" fetch origin && \
|
||||
git -C "$AR_COMPS/esp-face" pull origin master
|
||||
git -C "$AR_COMPS/esp-face" fetch && \
|
||||
git -C "$AR_COMPS/esp-face" pull --ff-only
|
||||
fi
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
|
||||
#
|
||||
# CLONE/UPDATE ESP-LITTLEFS
|
||||
#
|
||||
|
||||
if [ ! -d "$AR_COMPS/esp_littlefs" ]; then
|
||||
git clone $LITTLEFS_REPO_URL "$AR_COMPS/esp_littlefs" && \
|
||||
git -C "$AR_COMPS/esp_littlefs" submodule update --init --recursive
|
||||
else
|
||||
git -C "$AR_COMPS/esp_littlefs" fetch && \
|
||||
git -C "$AR_COMPS/esp_littlefs" pull --ff-only && \
|
||||
git -C "$AR_COMPS/esp_littlefs" submodule update --init --recursive
|
||||
fi
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
|
||||
#
|
||||
# CLONE/UPDATE ESP-RAINMAKER
|
||||
#
|
||||
|
||||
if [ ! -d "$AR_COMPS/esp-rainmaker" ]; then
|
||||
git clone $RMAKER_REPO_URL "$AR_COMPS/esp-rainmaker"
|
||||
git -C "$AR_COMPS/esp-rainmaker" checkout f1b82c71c4536ab816d17df016d8afe106bd60e3
|
||||
fi
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
|
||||
#
|
||||
# CLONE/UPDATE ESP-DSP
|
||||
#
|
||||
|
||||
if [ ! -d "$AR_COMPS/esp-dsp" ]; then
|
||||
git clone $DSP_REPO_URL "$AR_COMPS/esp-dsp"
|
||||
else
|
||||
git -C "$AR_COMPS/esp-dsp" fetch && \
|
||||
git -C "$AR_COMPS/esp-dsp" pull --ff-only
|
||||
fi
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
|
||||
#
|
||||
# CLONE/UPDATE TINYUSB
|
||||
#
|
||||
|
||||
if [ ! -d "$AR_COMPS/arduino_tinyusb/tinyusb" ]; then
|
||||
git clone $TINYUSB_REPO_URL "$AR_COMPS/arduino_tinyusb/tinyusb"
|
||||
else
|
||||
git -C "$AR_COMPS/arduino_tinyusb/tinyusb" fetch && \
|
||||
git -C "$AR_COMPS/arduino_tinyusb/tinyusb" pull --ff-only
|
||||
fi
|
||||
if [ $? -ne 0 ]; then exit 1; fi
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue