diff --git a/.dev-evb_c2.sh b/.dev-evb_c2.sh new file mode 100755 index 0000000..0066deb --- /dev/null +++ b/.dev-evb_c2.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# 非释放版本 +DEV_VERSION=1 + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(对应 6 个字节的固件类型) +FW_NAME=ESPEVB + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(芯片型号) +CHIP_NAME=esp32c2 + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(产品标识) +ADDITIONAL=_eFly + +# 文件名识别版本号(需要与实际版本严格对应) +FW_VERSION_MAIN=6 +FW_VERSION_MINOR=1 +FW_VERSION_BUILD=0 + +. .sub-release.sh diff --git a/.dev-evb_c3.sh b/.dev-evb_c3.sh new file mode 100755 index 0000000..e13c9dd --- /dev/null +++ b/.dev-evb_c3.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# 非释放版本 +DEV_VERSION=1 + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(对应 6 个字节的固件类型) +FW_NAME=ESPEVB + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(芯片型号) +CHIP_NAME=esp32c3 + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(产品标识) +ADDITIONAL=_ledstrip + +# 文件名识别版本号(需要与实际版本严格对应) +FW_VERSION_MAIN=6 +FW_VERSION_MINOR=1 +FW_VERSION_BUILD=0 + +. .sub-release.sh diff --git a/.dev-evb_s3.sh b/.dev-evb_s3.sh new file mode 100755 index 0000000..e68e1e8 --- /dev/null +++ b/.dev-evb_s3.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# 非释放版本 +DEV_VERSION=1 + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(对应 6 个字节的固件类型) +FW_NAME=ESPEVB + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(芯片型号) +CHIP_NAME=esp32s3 + +# 对应在 sdkconfig_defaults 文件夹中的文件名的字段(产品标识) +ADDITIONAL=_evb + +# 文件名识别版本号(需要与实际版本严格对应) +FW_VERSION_MAIN=6 +FW_VERSION_MINOR=1 +FW_VERSION_BUILD=0 + +. .sub-release.sh diff --git a/.sub-release.sh b/.sub-release.sh new file mode 100755 index 0000000..a53da1a --- /dev/null +++ b/.sub-release.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +if [ -n "$(git status --porcelain)" ]; then + if [ -z ${DEV_VERSION} ] && [ "$1" != "menuconfig" ]; then + echo -e "\033[31m[ERROR]\033[0m ${BASH_SOURCE}:${LINENO}: PLEASE COMMIT YOUR CHANGE FIRST!!!" + exit 1 + fi +fi + +SAVE_FLAG=0 +if [ $# -eq 1 ]; then + if [ "$1" != "save" ] && [ "$1" != "menuconfig" ]; then + echo -e "\033[31m[ERROR]\033[0m ${BASH_SOURCE}:${LINENO}: Input parameter 'save' to save output file or 'menuconfig' to set configuration" + exit 1 + fi + SAVE_FLAG=1 +fi + +# 固定变量 +RELEASE_DIR=release +GIT_TIME=$(git log -1 --format="%at" | xargs -I{} date -d @{} +%Y%m%d_%H%M) +GIT_HASH=$(git -C . log -1 --format="%h") +if [ -z ${DEV_VERSION} ]; then + GIT_RELEASE_CODE=${GIT_TIME}-${GIT_HASH} +else + GIT_RELEASE_CODE="(Development_version)" +fi +RELEASE_NAME=${FW_NAME}-${CHIP_NAME}-${GIT_RELEASE_CODE}-v${FW_VERSION_MAIN}.${FW_VERSION_MINOR}.${FW_VERSION_BUILD} +RELEASE_PRO_FILE=${RELEASE_DIR}/Release-pro-${RELEASE_NAME}.bin +RELEASE_OTA_FILE=${RELEASE_DIR}/Release-ota-${RELEASE_NAME}.bin +SDK_CONFIG_FILE=sdkconfig_defaults/sdkconfig.release_${FW_NAME}_${CHIP_NAME}${ADDITIONAL}.defaults + + +if [ ! -f ${RELEASE_OTA_FILE} ] || [ ! -f ${RELEASE_PRO_FILE} ] || [ "$1" != "save" ]; then + + # 检查配置文件是否存在 + if [ ! -f ${SDK_CONFIG_FILE} ]; then + echo -e "\033[31m[ERROR]\033[0m ${BASH_SOURCE}:${LINENO}: No such sdkconfig file '${SDK_CONFIG_FILE}'" + exit 1 + fi + + # 删除输出目录下旧的临时输出文件 + mkdir -p ${RELEASE_DIR} && rm -f `find ${RELEASE_DIR} -maxdepth 1 -type f -name "*.bin"` + + # 生成的头文件用于在编译阶段检查文件名与版本号的一致性 + echo -e \ + "/* Automatically generated file; DO NOT EDIT. */\r\n\r\n"\ + "#pragma once\r\n\r\n"\ + "#define FW_VERSION_MAIN ${FW_VERSION_MAIN} /* --------------------------------================================ 请检查版本号!! ================================-------------------------------- */\r\n"\ + "#define FW_VERSION_MINOR ${FW_VERSION_MINOR} /* --------------------------------================================ 请检查版本号!! ================================-------------------------------- */\r\n"\ + "#define FW_VERSION_BUILD ${FW_VERSION_BUILD} /* --------------------------------================================ 请检查版本号!! ================================-------------------------------- */\r\n"\ + "#define FW_RELEASE_CODE \"${GIT_RELEASE_CODE}\""\ + > app/config/version_build.h + + # 执行完整编译 + if [ "$1" == "menuconfig" ]; then + idf.py -D SDKCONFIG_DEFAULTS="${SDK_CONFIG_FILE}" set-target ${CHIP_NAME} menuconfig || exit 1 + exit 0 + else + idf.py -D SDKCONFIG_DEFAULTS="${SDK_CONFIG_FILE}" set-target ${CHIP_NAME} build size || exit 1 + fi + + # 复制固件文件到固定位置 + cp build/project.bin ${RELEASE_OTA_FILE} || exit 1 + + # 合并为完整量产包并输出到固定位置 + esptool.py \ + --chip ${CHIP_NAME} merge_bin \ + -o ${RELEASE_PRO_FILE} \ + 0x0 build/bootloader/bootloader.bin \ + 0x8000 build/partition_table/partition-table.bin \ + 0x65000 build/ota_data_initial.bin \ + 0x70000 build/project.bin \ + || exit 1 + +fi + +# 显示执行结果 +echo -e "\n\x1b[33m[COMPLETE]\x1b[0m" +echo -e "Latest copy folder: \x1b[34m$(readlink -e ${RELEASE_DIR}/)/\x1b[0m" +echo -e "Release ota packet: \x1b[34m${RELEASE_OTA_FILE}\x1b[0m" +echo -e "Release production packet: \x1b[34m${RELEASE_PRO_FILE}\x1b[0m" + +RELEASE_DIR=${RELEASE_DIR}/${FW_NAME} +RELEASE_OTA_FILE_SAVE=${RELEASE_DIR}/$(basename ${RELEASE_OTA_FILE}) +RELEASE_PRO_FILE_SAVE=${RELEASE_DIR}/$(basename ${RELEASE_PRO_FILE}) + +if [ "${SAVE_FLAG}" == "0" ]; then + + if [ ! -f ${RELEASE_OTA_FILE_SAVE} ] || [ ! -f ${RELEASE_PRO_FILE_SAVE} ]; then + echo -e "To save these release files, run this command:\r\n${0} save" + fi + +else + + # 将固定位置的 升级包和量产包 保存到对应的固件类型目录中 + mkdir -p ${RELEASE_DIR} || exit 1 + if [ ! -f ${RELEASE_OTA_FILE_SAVE} ] || [ ! -f ${RELEASE_PRO_FILE_SAVE} ]; then + cp ${RELEASE_OTA_FILE} ${RELEASE_OTA_FILE_SAVE} || exit 1 + cp ${RELEASE_PRO_FILE} ${RELEASE_PRO_FILE_SAVE} || exit 1 + fi + echo -e "Release ota packet: \x1b[34m${RELEASE_OTA_FILE_SAVE}\x1b[0m" + echo -e "Release production packet: \x1b[34m${RELEASE_PRO_FILE_SAVE}\x1b[0m" + +fi diff --git a/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32c2_eFly.defaults b/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32c2_eFly.defaults new file mode 100644 index 0000000..3672de9 --- /dev/null +++ b/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32c2_eFly.defaults @@ -0,0 +1,26 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32c2" +CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_BOARD_NAME_DEVKIT_ESP32C2=y +CONFIG_PRODUCT_ID_SBFWC2=y +CONFIG_BT_ENABLED=y +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y +CONFIG_BT_LE_50_FEATURE_SUPPORT=n +CONFIG_BT_LE_HCI_EVT_BUF_SIZE=257 +CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y +CONFIG_XTAL_FREQ_26=y +CONFIG_ESP_IPC_TASK_STACK_SIZE=1536 +CONFIG_ESP_TIMER_TASK_STACK_SIZE=2048 +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=768 +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=24 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=1536 +CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_LOG_DEFAULT_LEVEL_NONE=y diff --git a/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32c3_ledstrip.defaults b/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32c3_ledstrip.defaults new file mode 100644 index 0000000..58a4806 --- /dev/null +++ b/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32c3_ledstrip.defaults @@ -0,0 +1,24 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32c3" +CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PRODUCT_ID_SBLED1=y +CONFIG_CAP_LED_STRIP=y +CONFIG_LED_STRIP_SKIP_PWRUP=y +CONFIG_BT_ENABLED=y +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y +CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y +CONFIG_ESP_IPC_TASK_STACK_SIZE=1536 +CONFIG_ESP_TIMER_TASK_STACK_SIZE=2048 +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=768 +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=24 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=1536 +CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_LOG_DEFAULT_LEVEL_NONE=y diff --git a/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32s3_evb.defaults b/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32s3_evb.defaults new file mode 100644 index 0000000..7171e59 --- /dev/null +++ b/sdkconfig_defaults/sdkconfig.release_ESPEVB_esp32s3_evb.defaults @@ -0,0 +1,29 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_BOARD_NAME_DEVKIT_ESP32S3=y +CONFIG_PRODUCT_ID_SBF7V4=y +CONFIG_CAP_LED_STRIP=y +CONFIG_BUILD_WIFI=y +CONFIG_BT_ENABLED=y +CONFIG_BT_BLUEDROID_PINNED_TO_CORE_1=y +CONFIG_BT_LOG_HCI_TRACE_LEVEL_ERROR=y +CONFIG_BT_LOG_APPL_TRACE_LEVEL_ERROR=y +CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y +CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P21=y +CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y +CONFIG_ESP_IPC_TASK_STACK_SIZE=1536 +CONFIG_ESP_TIMER_TASK_STACK_SIZE=2048 +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=24 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=1536 +CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y +CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y +CONFIG_LOG_DEFAULT_LEVEL_NONE=y