mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-25 06:23:53 +01:00
Merge #19078
19078: cpu/esp32: define FLASHFILE_POS r=benpicco a=gschorcht ### Contribution description Instead of using a fixed position of the image file in the flash, the variable `FLASHFILE_POS` is used which allows to override the default position of the image in the flash at 0x10000. This PR is a prerequisite for the `periph_flashpage` implementation PR #19079. ### Testing procedure Flashing a ESP32x SoC should work with `FLASHFILE_POS=0x20000`, for example: ``` USEMODULE=esp_log_startup FLASHFILE_POS=0x20000 BOARD=esp32-wroom-32 make -j8 -C tests/shell flash ``` The bootloader output should give `00020000` as offset for the `factory` partition ``` I (75) boot: Partition Table: I (78) boot: ## Label Usage Type ST Offset Length I (84) boot: 0 nvs WiFi data 01 02 00009000 00006000 I (91) boot: 1 phy_init RF data 01 01 0000f000 00001000 I (97) boot: 2 factory factory app 00 00 00020000 000199b0 I (104) boot: End of partition table ``` and ``` I (125) esp_image: segment 0: paddr=00020020 vaddr=3f400020 size=02140h ( 8512) map ``` during the load of the image. ### Issues/PRs references Prerequisite for PR #19079 Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
This commit is contained in:
commit
6b4b7542eb
@ -23,6 +23,7 @@ else ifneq (,$(filter esp32s2,$(CPU_FAM)))
|
||||
else
|
||||
$(error Unkwnown ESP32x SoC variant (family))
|
||||
endif
|
||||
FLASHFILE_POS ?= 0x10000
|
||||
|
||||
ESPTOOL ?= $(RIOTTOOLS)/esptools/esptool_v3.2.py
|
||||
|
||||
@ -151,6 +152,19 @@ else ifeq (120m,$(FLASH_FREQ))
|
||||
CFLAGS += -DCONFIG_ESPTOOLPY_FLASHFREQ_120M
|
||||
endif
|
||||
|
||||
#extend CFLAGS by the corresponding FLASH_SIZE
|
||||
ifeq (1,$(FLASH_SIZE))
|
||||
CFLAGS += -DCONFIG_ESPTOOLPY_FLASHSIZE_1MB
|
||||
else ifeq (2,$(FLASH_SIZE))
|
||||
CFLAGS += -DCONFIG_ESPTOOLPY_FLASHSIZE_2MB
|
||||
else ifeq (4,$(FLASH_SIZE))
|
||||
CFLAGS += -DCONFIG_ESPTOOLPY_FLASHSIZE_4MB
|
||||
else ifeq (8,$(FLASH_SIZE))
|
||||
CFLAGS += -DCONFIG_ESPTOOLPY_FLASHSIZE_8MB
|
||||
else ifeq (16,$(FLASH_SIZE))
|
||||
CFLAGS += -DCONFIG_ESPTOOLPY_FLASHSIZE_16MB
|
||||
endif
|
||||
|
||||
# shortcuts used by ESP-IDF
|
||||
CFLAGS += -Dasm=__asm
|
||||
CFLAGS += -Dtypeof=__typeof__
|
||||
@ -240,7 +254,7 @@ ifneq (,$(filter esp_jtag,$(USEMODULE)))
|
||||
-c 'flash write_image erase "$(BOOTLOADER_BIN)" $(BOOTLOADER_POS) bin' \
|
||||
-c 'echo "Installing partition table at $(PARTITION_POS)"' \
|
||||
-c 'flash write_image erase "$(BINDIR)/partitions.bin" $(PARTITION_POS) bin'
|
||||
IMAGE_OFFSET = 0x10000
|
||||
IMAGE_OFFSET = $(FLASHFILE_POS)
|
||||
# Flash checksumming not supported on xtensa
|
||||
OPENOCD_SKIP_VERIFY = yes
|
||||
# Without resets debug target fails with 'Target not examined yet'
|
||||
|
||||
@ -11,6 +11,7 @@ FLASH_MODE = dout
|
||||
FLASH_FREQ = 26m
|
||||
FLASH_SIZE ?= 1
|
||||
BOOTLOADER_POS = 0x0000
|
||||
FLASHFILE_POS = 0x10000
|
||||
|
||||
include $(RIOTCPU)/esp_common/Makefile.include
|
||||
|
||||
|
||||
@ -140,7 +140,6 @@ $(ELFFILE).bin: $(ELFFILE)
|
||||
--flash_size $(FLASH_SIZE)MB --flash_freq $(FLASH_FREQ) $(FLASH_OPTS) \
|
||||
-o $@ $<
|
||||
|
||||
|
||||
# Convert .elf and .csv to .bin files at build time, but make them available for
|
||||
# tests at flash time. These can't be added to FLASHDEPS because they depend on
|
||||
# on ELFFILE and would trigger a rebuild with "flash-only".
|
||||
@ -155,7 +154,7 @@ $(BINDIR)/partitions.csv: $(FLASHFILE)
|
||||
$(Q)printf "\n" > $(BINDIR)/partitions.csv
|
||||
$(Q)printf "nvs, data, nvs, 0x9000, 0x6000\n" >> $@
|
||||
$(Q)printf "phy_init, data, phy, 0xf000, 0x1000\n" >> $@
|
||||
$(Q)printf "factory, app, factory, 0x10000, " >> $@
|
||||
$(Q)printf "factory, app, factory, $(FLASHFILE_POS), " >> $@
|
||||
$(Q)ls -l $< | awk '{ print $$5 }' >> $@
|
||||
|
||||
$(BINDIR)/partitions.bin: $(PARTITION_TABLE_CSV)
|
||||
|
||||
@ -32,19 +32,19 @@ else
|
||||
FFLAGS += --flash_size detect
|
||||
FFLAGS += $(BOOTLOADER_POS) $(BOOTLOADER_BIN)
|
||||
FFLAGS += 0x8000 $(BINDIR)/partitions.bin
|
||||
FFLAGS += 0x10000 $(FLASHFILE)
|
||||
FFLAGS += $(FLASHFILE_POS) $(FLASHFILE)
|
||||
endif
|
||||
|
||||
.PHONY: esp-qemu
|
||||
|
||||
esp-qemu:
|
||||
esp-qemu: $(FLASHFILE)
|
||||
ifeq (esp32,$(CPU))
|
||||
$(Q)echo \
|
||||
"--flash_mode $(FLASH_MODE) --flash_freq $(FLASH_FREQ) " \
|
||||
"--flash_size $(FLASH_SIZE)MB" \
|
||||
"$(BOOTLOADER_POS) $(BOOTLOADER_BIN)" \
|
||||
"0x8000 $(BINDIR)/partitions.bin" \
|
||||
"0x10000 $(FLASHFILE)" > $(BINDIR)/qemu_flash_args
|
||||
"$(FLASHFILE_POS) $(FLASHFILE)" > $(BINDIR)/qemu_flash_args
|
||||
$(Q)$(ESPTOOL) \
|
||||
--chip $(CPU_FAM) merge_bin \
|
||||
--fill-flash-size 4MB \
|
||||
@ -58,7 +58,7 @@ else
|
||||
cat - $(BOOTLOADER_BIN) tmp.bin | \
|
||||
head -c $$((0x8000)) | \
|
||||
cat - $(BINDIR)/partitions.bin tmp.bin | \
|
||||
head -c $$((0x10000)) | \
|
||||
head -c $$(($(FLASHFILE_POS))) | \
|
||||
cat - $(FLASHFILE) tmp.bin | \
|
||||
head -c $(FLASH_SIZE)MB > $(BINDIR)/$(CPU)flash.bin && rm tmp.bin
|
||||
endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user