diff --git a/boards/xtensa/esp32/common/Kconfig b/boards/xtensa/esp32/common/Kconfig index 88ae2f03c65..4a93fca4a28 100644 --- a/boards/xtensa/esp32/common/Kconfig +++ b/boards/xtensa/esp32/common/Kconfig @@ -14,6 +14,7 @@ config ESP32_MERGE_BINS config ESP32_QEMU_IMAGE bool "ESP32 binary image for QEMU" default n + select ESP32_MERGE_BINS ---help--- Create a binary flash image used for QEMU. diff --git a/boards/xtensa/esp32/esp32-devkitc/src/Make.defs b/boards/xtensa/esp32/esp32-devkitc/src/Make.defs index 658aa43f5ba..9da0238315f 100644 --- a/boards/xtensa/esp32/esp32-devkitc/src/Make.defs +++ b/boards/xtensa/esp32/esp32-devkitc/src/Make.defs @@ -62,7 +62,6 @@ context:: $(SCRIPTOUT) distclean:: $(call DELFILE, $(SCRIPTOUT)) - $(call DELFILE, $(TOPDIR)/esp32_qemu_img.bin) DEPPATH += --dep-path board VPATH += :board diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/src/Make.defs b/boards/xtensa/esp32/esp32-ethernet-kit/src/Make.defs index 112b8431587..1a8fe0c5425 100644 --- a/boards/xtensa/esp32/esp32-ethernet-kit/src/Make.defs +++ b/boards/xtensa/esp32/esp32-ethernet-kit/src/Make.defs @@ -54,7 +54,6 @@ context:: $(SCRIPTOUT) distclean:: $(call DELFILE, $(SCRIPTOUT)) - $(call DELFILE, $(TOPDIR)/esp32_qemu_img.bin) DEPPATH += --dep-path board VPATH += :board diff --git a/boards/xtensa/esp32/esp32-wrover-kit/src/Make.defs b/boards/xtensa/esp32/esp32-wrover-kit/src/Make.defs index 2c5d68946b0..d40703e83a7 100644 --- a/boards/xtensa/esp32/esp32-wrover-kit/src/Make.defs +++ b/boards/xtensa/esp32/esp32-wrover-kit/src/Make.defs @@ -64,7 +64,6 @@ context:: $(SCRIPTOUT) distclean:: $(call DELFILE, $(SCRIPTOUT)) - $(call DELFILE, $(TOPDIR)/esp32_qemu_img.bin) DEPPATH += --dep-path board VPATH += :board diff --git a/boards/xtensa/esp32/ttgo_lora_esp32/src/Make.defs b/boards/xtensa/esp32/ttgo_lora_esp32/src/Make.defs index ee2742db50d..8f92d4cb990 100644 --- a/boards/xtensa/esp32/ttgo_lora_esp32/src/Make.defs +++ b/boards/xtensa/esp32/ttgo_lora_esp32/src/Make.defs @@ -62,7 +62,6 @@ context:: $(SCRIPTOUT) distclean:: $(call DELFILE, $(SCRIPTOUT)) - $(call DELFILE, $(TOPDIR)/esp32_qemu_img.bin) DEPPATH += --dep-path board VPATH += :board diff --git a/tools/esp32/Config.mk b/tools/esp32/Config.mk index d8c4cf5cff7..fe242b46596 100644 --- a/tools/esp32/Config.mk +++ b/tools/esp32/Config.mk @@ -98,15 +98,8 @@ endif ESPTOOL_BINS += $(FLASH_APP) -ifeq ($(CONFIG_ESP32_QEMU_IMAGE),y) - MK_QEMU_IMG=$(TOPDIR)/tools/esp32/mk_qemu_img.sh -b $(BOOTLOADER) -p $(PARTITION_TABLE) -else - MK_QEMU_IMG= -endif - # MERGEBIN -- Merge raw binary files into a single file -ifeq ($(CONFIG_ESP32_MERGE_BINS),y) define MERGEBIN $(Q) if [ -z $(ESPTOOL_BINDIR) ]; then \ echo "MERGEBIN error: Missing argument for binary files directory."; \ @@ -117,15 +110,21 @@ define MERGEBIN echo "Missing Flash memory size configuration for the ESP32 chip."; \ exit 1; \ fi - esptool.py -c esp32 merge_bin --output nuttx.merged.bin $(ESPTOOL_FLASH_OPTS) $(ESPTOOL_BINS) + $(eval ESPTOOL_MERGEBIN_OPTS := \ + $(if $(CONFIG_ESP32_QEMU_IMAGE), \ + --fill-flash-size $(FLASH_SIZE) -fm $(FLASH_MODE) -ff $(FLASH_FREQ), \ + $(ESPTOOL_FLASH_OPTS) \ + ) \ + ) + esptool.py -c esp32 merge_bin --output nuttx.merged.bin $(ESPTOOL_MERGEBIN_OPTS) $(ESPTOOL_BINS) $(Q) echo nuttx.merged.bin >> nuttx.manifest - $(Q) echo "Generated: nuttx.merged.bin" -endef -else -define MERGEBIN + $(Q) if [ "$(CONFIG_ESP32_QEMU_IMAGE)" = "y" ]; then \ + echo "Generated: nuttx.merged.bin (QEMU compatible)"; \ + else \ + echo "Generated: nuttx.merged.bin"; \ + fi endef -endif # SIGNBIN -- Sign the binary image file @@ -174,13 +173,12 @@ endif ifeq ($(CONFIG_ESP32_APP_FORMAT_MCUBOOT),y) define POSTBUILD $(call SIGNBIN) - $(call MERGEBIN) + $(if $(CONFIG_ESP32_MERGE_BINS), $(call MERGEBIN), ) endef else ifeq ($(CONFIG_ESP32_APP_FORMAT_LEGACY),y) define POSTBUILD $(call ELF2IMAGE) - $(call MERGEBIN) - $(Q) $(MK_QEMU_IMG) + $(if $(CONFIG_ESP32_MERGE_BINS), $(call MERGEBIN), ) endef endif diff --git a/tools/esp32/mk_qemu_img.sh b/tools/esp32/mk_qemu_img.sh deleted file mode 100755 index 4dfaeae0112..00000000000 --- a/tools/esp32/mk_qemu_img.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env bash -############################################################################ -# tools/esp32/mk_qemu_img.sh -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. The -# ASF licenses this file to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance with the -# License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# -############################################################################ - -SCRIPT_NAME=$(basename "${0}") - -BOOTLOADER_IMG="" -PARTITION_IMG="" -BOOTLOADER_OFFSET=0x1000 -PARTITION_OFFSET=0x8000 -NUTTX_OFFSET=0x10000 -NUTTX_IMG="nuttx.bin" -FLASH_IMG="esp32_qemu_img.bin" - -usage() { - echo "" - echo "USAGE: ${SCRIPT_NAME} [-h] -b -p [-n ] [-i ]" - echo "" - echo "Where:" - echo " -b path to the bootloader image" - echo " -p path to the partition table image" - echo " -n path to the nuttx image (default nuttx.bin)" - echo " -i name of the resulting image (default esp32_qemu_img.bin)" - echo " -h will show this help and terminate" - echo "" -} - -imgappend() { - dd of="${1}" if="${2}" bs=1 seek="$(printf '%d' ${3})" conv=notrunc status=none -} - -while [ -n "${1}" ]; do - case "${1}" in - -b ) - shift - BOOTLOADER_IMG=${1} - ;; - -p ) - shift - PARTITION_IMG=${1} - ;; - -n ) - shift - NUTTX_IMG=${1} - ;; - -i ) - shift - FLASH_IMG=${1} - ;; - -h ) - usage - exit 0 - ;; - *) - usage - exit 1 - ;; - esac - shift -done - -# Make sure we have the required argument(s) - -if [ -z "${BOOTLOADER_IMG}" ] || [ -z "${PARTITION_IMG}" ] ; then - echo "" - echo "${SCRIPT_NAME}: Missing bootloader and partition table binary images." - usage - exit 1 -fi - -printf "Generating %s...\n" "${FLASH_IMG}" -printf "\tBootloader: %s\n" "${BOOTLOADER_IMG}" -printf "\tPartition Table: %s\n" "${PARTITION_IMG}" - -dd if=/dev/zero bs=1024 count=4096 of="${FLASH_IMG}" status=none -imgappend ${FLASH_IMG} ${BOOTLOADER_IMG} ${BOOTLOADER_OFFSET} -imgappend ${FLASH_IMG} ${PARTITION_IMG} ${PARTITION_OFFSET} -imgappend ${FLASH_IMG} ${NUTTX_IMG} ${NUTTX_OFFSET} - -if [ ${?} -ne 0 ]; then - printf "Failed to generate %s!\n" "${FLASH_IMG}" - exit 1 -fi - -printf "Generated %s successfully!\n" "${FLASH_IMG}" -printf "You can run it with QEMU using:\n" -printf "\tqemu-system-xtensa -nographic -machine esp32 -drive file=%s,if=mtd,format=raw\n" "${FLASH_IMG}" - -echo "${FLASH_IMG}" >> nuttx.manifest