added BASH script for build image to all supported boards via arduino-cli
parent
f6e3de0f6f
commit
65e2cee87b
|
|
@ -0,0 +1,152 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This is a script to build the firmware for the ESP32 PrusaConnectCam project.
|
||||
# Thi script is created by Miroslav Pivovarsky (miroslav.pivovarsky@gmail.com)
|
||||
# The script is provided as-is without any warranty.
|
||||
# The script is free to use and modify.
|
||||
# Version: 1.0
|
||||
#
|
||||
# The script builds the firmware for the following boards:
|
||||
# 1. Ai Thinker ESP32-CAM
|
||||
# 2. ESP32 Wrover Dev
|
||||
# 3. ESP32-S3-EYE 2.2
|
||||
#
|
||||
# The script compiles the firmware for each board and creates a zip file with the compiled firmware.
|
||||
# The zip file contains the firmware binary and other files generated during the compilation.
|
||||
#
|
||||
# The script uses the arduino-cli tool to compile the firmware.
|
||||
# The arduino-cli tool must be installed before running this script.
|
||||
#
|
||||
# The script assumes the following directory structure:
|
||||
# ESP32_PrusaConnectCam/
|
||||
# ├── ESP32_PrusaConnectCam.ino
|
||||
# ├── mcu_cfg.h
|
||||
# ├── ...
|
||||
# ├── libraries/
|
||||
# │ ├── zip/
|
||||
# │ │ ├── AsyncTCP-3.1.4.zip
|
||||
# │ │ └── ESPAsyncWebServer-2.10.8.zip
|
||||
# ├── build/
|
||||
# │ ├── output/
|
||||
# │ ├── esp32-cam/
|
||||
# │ ├── esp32-wrover-dev/
|
||||
# │ └── esp32-s3-eye-22/
|
||||
#
|
||||
# The script creates the following files:
|
||||
# build/
|
||||
# ├── output/
|
||||
# │ ├── ESP32_PrusaConnectCam.ino.bin
|
||||
# │ ├── ESP32_WROVERDEV_PrusaConnectCam.ino.bin
|
||||
# │ ├── ESP32S3_EYE22_PrusaConnectCam.ino.bin
|
||||
# | ├── esp32-cam.zip
|
||||
# | ├── esp32-wrover-dev.zip
|
||||
# | ├── esp32-s3-eye-22.zip
|
||||
#
|
||||
# The script assumes the following libraries are installed:
|
||||
# 1. ArduinoJson
|
||||
# 2. ArduinoUniqueID
|
||||
# 3. AsyncTCP-3.1.4
|
||||
# 4. ESPAsyncWebServer-2.10.8
|
||||
#
|
||||
# The script assumes the ESP32 core is installed:
|
||||
# 1. esp32:esp32
|
||||
|
||||
# ---------------------------------------------
|
||||
# Setup Instructions:
|
||||
# Before running this script, ensure the following steps have been completed:
|
||||
# 1. Download arduino-cli:
|
||||
# wget https://github.com/arduino/arduino-cli/releases/download/v1.0.1/arduino-cli_1.0.1_Linux_64bit.tar.gz
|
||||
# 2. Extract the downloaded archive:
|
||||
# tar -zxvf arduino-cli_1.0.1_Linux_64bit.tar.gz
|
||||
# 3. Install pip3:
|
||||
# sudo apt-get install pip3
|
||||
# 4. Install pyserial using pip3:
|
||||
# pip3 install pyserial
|
||||
#
|
||||
# 5. Initialize arduino-cli configuration:
|
||||
# ./arduino-cli config init
|
||||
# 6. Edit the arduino-cli.yaml configuration file (e.g., using nano):
|
||||
# nano /home/miro/.arduino15/arduino-cli.yaml
|
||||
# Add the following lines:
|
||||
# board_manager:
|
||||
# additional_urls:
|
||||
# - https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
||||
# library:
|
||||
# enable_unsafe_install: true
|
||||
#
|
||||
# 7. Check installed libraries:
|
||||
# ./arduino-cli lib list
|
||||
# 8. Install necessary libraries:
|
||||
# ./arduino-cli lib install ArduinoJson
|
||||
# ./arduino-cli lib install ArduinoUniqueID
|
||||
# ./arduino-cli lib install --zip-path ../libraries/zip/AsyncTCP-3.1.4.zip
|
||||
# ./arduino-cli lib install --zip-path ../libraries/zip/ESPAsyncWebServer-2.10.8.zip
|
||||
# Check installed libraries again:
|
||||
# ./arduino-cli lib list
|
||||
#
|
||||
# 9. Install the ESP32 core:
|
||||
# ./arduino-cli core install esp32:esp32
|
||||
|
||||
# ---------------------------------------------
|
||||
cd ESP32_PrusaConnectCam
|
||||
mkdir -p ../build/output
|
||||
build_start=`date`
|
||||
|
||||
# ----------------- ESP32-CAM -----------------
|
||||
# enable and build Ai Thinker board
|
||||
echo "----------------------------------------------"
|
||||
echo "Building Ai Thinker board"
|
||||
mkdir -p ../build/esp32-cam
|
||||
sed -i 's/#define \(AI_THINKER_ESP32_CAM\|ESP32_WROVER_DEV\|CAMERA_MODEL_ESP32_S3_DEV_CAM\|CAMERA_MODEL_ESP32_S3_EYE_2_2\|CAMERA_MODEL_XIAO_ESP32_S3_CAM\|CAMERA_MODEL_ESP32_S3_CAM\) .*/#define \1 false/' mcu_cfg.h && sed -i 's/#define AI_THINKER_ESP32_CAM false/#define AI_THINKER_ESP32_CAM true/' mcu_cfg.h
|
||||
./arduino-cli compile -v -b esp32:esp32:esp32cam:CPUFreq=240,FlashFreq=80,FlashMode=dio,PartitionScheme=min_spiffs,DebugLevel=none,EraseFlash=none --output-dir ../build/esp32-cam
|
||||
|
||||
rm -f ../build/esp32-cam/ESP32_PrusaConnectCam.ino.elf
|
||||
rm -f ../build/esp32-cam/ESP32_PrusaConnectCam.ino.map
|
||||
rm -f ../build/esp32-cam/ESP32_PrusaConnectCam.ino.merged.bin
|
||||
cp ../build/esp32-cam/ESP32_PrusaConnectCam.ino.bin ../build/output/ESP32_PrusaConnectCam.ino.bin
|
||||
|
||||
cd ../build/esp32-cam && zip -r ../esp32-cam.zip . && cd -
|
||||
mv ../build/esp32-cam.zip ../build/output/
|
||||
|
||||
# ----------------- ESP32-WROVER-DEV -----------------
|
||||
# enable and build ESP32 Wrover Dev board
|
||||
echo "----------------------------------------------"
|
||||
echo "Building ESP32 Wrover Dev board"
|
||||
mkdir ../build/esp32-wrover-dev
|
||||
sed -i 's/#define \(AI_THINKER_ESP32_CAM\|ESP32_WROVER_DEV\|CAMERA_MODEL_ESP32_S3_DEV_CAM\|CAMERA_MODEL_ESP32_S3_EYE_2_2\|CAMERA_MODEL_XIAO_ESP32_S3_CAM\|CAMERA_MODEL_ESP32_S3_CAM\) .*/#define \1 false/' mcu_cfg.h && sed -i 's/#define ESP32_WROVER_DEV false/#define ESP32_WROVER_DEV true/' mcu_cfg.h
|
||||
./arduino-cli compile -v -b esp32:esp32:esp32wrover:FlashFreq=80,FlashMode=dio,PartitionScheme=min_spiffs,DebugLevel=none,EraseFlash=none --output-dir ../build/esp32-wrover-dev
|
||||
|
||||
rm -f ../build/esp32-wrover-dev/ESP32_PrusaConnectCam.ino.elf
|
||||
rm -f ../build/esp32-wrover-dev/ESP32_PrusaConnectCam.ino.map
|
||||
rm -f ../build/esp32-wrover-dev/ESP32_PrusaConnectCam.ino.merged.bin
|
||||
cp ../build/esp32-wrover-dev/ESP32_PrusaConnectCam.ino.bin ../build/output/ESP32_WROVERDEV.bin
|
||||
|
||||
cd ../build/esp32-wrover-dev && zip -r ../esp32-wrover-dev.zip . && cd -
|
||||
mv ../build/esp32-wrover-dev.zip ../build/output/
|
||||
|
||||
# ----------------- ESP32-S3-CAM EYE 2.2 -----------------
|
||||
# build ESP32-S3-EYE 2.2 board
|
||||
echo "----------------------------------------------"
|
||||
echo "Building ESP32-S3-EYE 2.2 board"
|
||||
mkdir ../build/esp32-s3-eye-22
|
||||
sed -i 's/#define \(AI_THINKER_ESP32_CAM\|ESP32_WROVER_DEV\|CAMERA_MODEL_ESP32_S3_DEV_CAM\|CAMERA_MODEL_ESP32_S3_EYE_2_2\|CAMERA_MODEL_XIAO_ESP32_S3_CAM\|CAMERA_MODEL_ESP32_S3_CAM\) .*/#define \1 false/' mcu_cfg.h && sed -i 's/#define CAMERA_MODEL_ESP32_S3_EYE_2_2 false/#define CAMERA_MODEL_ESP32_S3_EYE_2_2 true/' mcu_cfg.h
|
||||
|
||||
./arduino-cli compile -v -b esp32:esp32:esp32s3:USBMode=hwcdc,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=cdc,CPUFreq=240,FlashMode=dio,FlashSize=8M,PartitionScheme=min_spiffs,DebugLevel=none,PSRAM=opi,LoopCore=0,EventsCore=0,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default --output-dir ../build/esp32-s3-eye-22
|
||||
|
||||
rm -f ../build/esp32-s3-eye-22/ESP32_PrusaConnectCam.ino.elf
|
||||
rm -f ../build/esp32-s3-eye-22/ESP32_PrusaConnectCam.ino.map
|
||||
rm -f ../build/esp32-s3-eye-22/ESP32_PrusaConnectCam.ino.merged.bin
|
||||
cp ../build/esp32-s3-eye-22/ESP32_PrusaConnectCam.ino.bin ../build/output/ESP32S3_EYE22.bin
|
||||
|
||||
cd ../build/esp32-s3-eye-22 && zip -r ../esp32-s3-eye-22.zip . && cd -
|
||||
mv ../build/esp32-s3-eye-22.zip ../build/output/
|
||||
|
||||
# --------------------------------------------------------
|
||||
echo "----------------------------------------------"
|
||||
echo "Build completed. Output files are in the output folder."
|
||||
echo "Start build: $build_start"
|
||||
echo "End build: `date`"
|
||||
|
||||
exit 0
|
||||
|
||||
# EOF
|
||||
Loading…
Reference in New Issue