forked from skot/ESP-Miner
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
92 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
#!/bin/bash | ||
|
||
# Binary file paths and addresses | ||
BOOTLOADER_BIN="build/bootloader/bootloader.bin" | ||
BOOTLOADER_BIN_ADDR=0x0 | ||
PARTITION_TABLE="build/partition_table/partition-table.bin" | ||
PARTITION_TABLE_ADDR=0x8000 | ||
CONFIG_BIN_ADDR=0x9000 | ||
MINER_BIN="build/esp-miner.bin" | ||
MINER_BIN_ADDR=0x10000 | ||
WWW_BIN="build/www.bin" | ||
WWW_BIN_ADDR=0x410000 | ||
OTA_BIN="build/ota_data_initial.bin" | ||
OTA_BIN_ADDR=0xf10000 | ||
|
||
BINS_DEFAULT=($BOOTLOADER_BIN $PARTITION_TABLE $MINER_BIN $WWW_BIN $OTA_BIN) | ||
BINS_AND_ADDRS_DEFAULT=($BOOTLOADER_BIN_ADDR $BOOTLOADER_BIN $PARTITION_TABLE_ADDR $PARTITION_TABLE $MINER_BIN_ADDR $MINER_BIN $WWW_BIN_ADDR $WWW_BIN $OTA_BIN_ADDR $OTA_BIN) | ||
|
||
function show_help() { | ||
echo "Creates combined binaries using esptool's merge_bin command for multiple config files" | ||
echo "Usage: $0 [OPTION]" | ||
echo " Options:" | ||
echo " -c: Process all config-*.bin files in the current directory" | ||
echo " -h: Show this help message" | ||
echo | ||
} | ||
|
||
function print_with_error_header() { | ||
echo "ERROR:" $1 | ||
} | ||
|
||
#### MAIN #### | ||
|
||
# Check if esptool.py is installed and accessible | ||
if ! command -v esptool.py &> /dev/null; then | ||
echo "esptool.py is not installed or not in PATH. Please install it first." | ||
echo "pip install esptool" | ||
exit 1 | ||
fi | ||
|
||
OPTIND=1 # Reset in case getops has been used previously | ||
|
||
# default values | ||
process_configs=0 | ||
|
||
while getopts "hc" opt; do | ||
case "$opt" in | ||
h) | ||
show_help | ||
exit 0 | ||
;; | ||
c) process_configs=1 | ||
;; | ||
*) | ||
show_help | ||
exit 1 | ||
esac | ||
done | ||
|
||
shift $((OPTIND-1)) | ||
|
||
if [ "$process_configs" -eq 0 ]; then | ||
print_with_error_header "No option specified. Use -c to process config files." | ||
show_help | ||
exit 2 | ||
fi | ||
|
||
# Process all config-*.bin files | ||
for config_file in config-*.bin; do | ||
if [ -f "$config_file" ]; then | ||
# Extract the number from the config filename | ||
config_number=$(echo $config_file | sed 's/config-\(.*\)\.bin/\1/') | ||
|
||
# Create the output filename | ||
output_file="esp-miner-factory-$config_number.bin" | ||
|
||
# Prepare the bins and addresses array with the current config file | ||
BINS_AND_ADDRS_WITH_CONFIG=(${BINS_AND_ADDRS_DEFAULT[@]} $CONFIG_BIN_ADDR $config_file) | ||
|
||
# Call esptool.py with the specified arguments | ||
esptool.py --chip esp32s3 merge_bin --flash_mode dio --flash_size 16MB --flash_freq 80m "${BINS_AND_ADDRS_WITH_CONFIG[@]}" -o "$output_file" | ||
|
||
# Check if esptool.py command was successful | ||
if [ $? -eq 0 ]; then | ||
echo "Successfully created $output_file" | ||
else | ||
print_with_error_header "Failed to create $output_file" | ||
fi | ||
fi | ||
done | ||
|
||
echo "Processing complete." |