From a53d41f1c1d2543306f22bb54a6440aaa168073a Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Fri, 24 Nov 2017 19:51:48 +0100 Subject: [PATCH] Fix bootloaders for different flash configs fixes: https://github.com/espressif/arduino-esp32/issues/867 --- boards.txt | 81 ++++++++++-------- platform.txt | 2 +- ...{bootloader.bin => bootloader_dio_40m.bin} | Bin tools/sdk/bin/bootloader_dio_80m.bin | Bin 0 -> 12304 bytes tools/sdk/bin/bootloader_dout_40m.bin | Bin 0 -> 12320 bytes tools/sdk/bin/bootloader_dout_80m.bin | Bin 0 -> 12304 bytes ...tloader_qio.bin => bootloader_qio_40m.bin} | Bin tools/sdk/bin/bootloader_qio_80m.bin | Bin 0 -> 14128 bytes tools/sdk/bin/bootloader_qout_40m.bin | Bin 0 -> 14144 bytes tools/sdk/bin/bootloader_qout_80m.bin | Bin 0 -> 14128 bytes 10 files changed, 45 insertions(+), 38 deletions(-) rename tools/sdk/bin/{bootloader.bin => bootloader_dio_40m.bin} (100%) create mode 100644 tools/sdk/bin/bootloader_dio_80m.bin create mode 100644 tools/sdk/bin/bootloader_dout_40m.bin create mode 100644 tools/sdk/bin/bootloader_dout_80m.bin rename tools/sdk/bin/{bootloader_qio.bin => bootloader_qio_40m.bin} (100%) create mode 100644 tools/sdk/bin/bootloader_qio_80m.bin create mode 100644 tools/sdk/bin/bootloader_qout_40m.bin create mode 100644 tools/sdk/bin/bootloader_qout_80m.bin diff --git a/boards.txt b/boards.txt index d461ad0ea..c127c4a62 100644 --- a/boards.txt +++ b/boards.txt @@ -23,20 +23,23 @@ esp32.build.board=ESP32_DEV esp32.build.f_cpu=240000000L esp32.build.flash_size=4MB +esp32.build.flash_freq=40m esp32.build.flash_mode=dio -esp32.build.boot=bootloader +esp32.build.boot=dio esp32.build.partitions=default esp32.menu.FlashMode.qio=QIO esp32.menu.FlashMode.qio.build.flash_mode=dio -esp32.menu.FlashMode.qio.build.boot=bootloader_qio +esp32.menu.FlashMode.qio.build.boot=qio esp32.menu.FlashMode.dio=DIO esp32.menu.FlashMode.dio.build.flash_mode=dio +esp32.menu.FlashMode.dio.build.boot=dio esp32.menu.FlashMode.qout=QOUT esp32.menu.FlashMode.qout.build.flash_mode=dout -esp32.menu.FlashMode.qout.build.boot=bootloader_qio +esp32.menu.FlashMode.qout.build.boot=qout esp32.menu.FlashMode.dout=DOUT esp32.menu.FlashMode.dout.build.flash_mode=dout +esp32.menu.FlashMode.dout.build.boot=dout esp32.menu.FlashFreq.80=80MHz esp32.menu.FlashFreq.80.build.flash_freq=80m @@ -97,7 +100,7 @@ esp32thing.build.board=ESP32_THING esp32thing.build.f_cpu=240000000L esp32thing.build.flash_mode=dio esp32thing.build.flash_size=4MB -esp32thing.build.boot=bootloader +esp32thing.build.boot=dio esp32thing.build.partitions=default esp32thing.menu.FlashFreq.80=80MHz @@ -137,7 +140,7 @@ nina_w10.build.core=esp32 nina_w10.build.variant=nina_w10 nina_w10.build.board=UBLOX_NINA_W10 nina_w10.build.f_cpu=240000000L -nina_w10.build.boot=bootloader +nina_w10.build.boot=dio nina_w10.build.partitions=minimal nina_w10.build.flash_mode=dio nina_w10.build.flash_size=2MB @@ -178,7 +181,7 @@ widora-air.build.board=WIDORA_AIR widora-air.build.f_cpu=240000000L widora-air.build.flash_mode=dio widora-air.build.flash_size=16MB -widora-air.build.boot=bootloader +widora-air.build.boot=dio widora-air.build.partitions=default widora-air.menu.FlashFreq.80=80MHz @@ -221,7 +224,7 @@ esp320.build.board=ESP320 esp320.build.f_cpu=240000000L esp320.build.flash_mode=qio esp320.build.flash_size=4MB -esp320.build.boot=bootloader +esp320.build.boot=dio esp320.build.partitions=default esp320.menu.FlashFreq.80=80MHz @@ -264,7 +267,7 @@ nano32.build.board=NANO32 nano32.build.f_cpu=240000000L nano32.build.flash_mode=dio nano32.build.flash_size=4MB -nano32.build.boot=bootloader +nano32.build.boot=dio nano32.build.partitions=default nano32.menu.FlashFreq.80=80MHz @@ -307,7 +310,7 @@ lolin32.build.board=LOLIN32 lolin32.build.f_cpu=240000000L lolin32.build.flash_mode=dio lolin32.build.flash_size=4MB -lolin32.build.boot=bootloader +lolin32.build.boot=dio lolin32.build.partitions=default lolin32.menu.FlashFreq.80=80MHz @@ -350,7 +353,7 @@ pocket_32.build.board=Pocket32 pocket_32.build.f_cpu=240000000L pocket_32.build.flash_mode=dio pocket_32.build.flash_size=4MB -pocket_32.build.boot=bootloader +pocket_32.build.boot=dio pocket_32.build.partitions=default pocket_32.menu.FlashFreq.80=80MHz @@ -393,7 +396,7 @@ WeMosBat.build.board=Pocket32 WeMosBat.build.f_cpu=240000000L WeMosBat.build.flash_mode=dio WeMosBat.build.flash_size=4MB -WeMosBat.build.boot=bootloader +WeMosBat.build.boot=dio WeMosBat.build.partitions=default WeMosBat.menu.FlashFreq.80=80MHz @@ -436,7 +439,7 @@ espea32.build.board=ESPea32 espea32.build.f_cpu=240000000L espea32.build.flash_mode=dio espea32.build.flash_size=4MB -espea32.build.boot=bootloader +espea32.build.boot=dio espea32.build.partitions=default espea32.menu.FlashFreq.80=80MHz @@ -479,7 +482,7 @@ quantum.build.board=QUANTUM quantum.build.f_cpu=240000000L quantum.build.flash_mode=qio quantum.build.flash_size=16MB -quantum.build.boot=bootloader +quantum.build.boot=dio quantum.build.partitions=default quantum.menu.FlashFreq.80=80MHz @@ -522,7 +525,7 @@ node32s.build.board=Node32s node32s.build.f_cpu=240000000L node32s.build.flash_mode=dio node32s.build.flash_size=4MB -node32s.build.boot=bootloader +node32s.build.boot=dio node32s.build.partitions=default node32s.menu.FlashFreq.80=80MHz @@ -565,7 +568,7 @@ hornbill32dev.build.board=HORNBILL_ESP32_DEV hornbill32dev.build.f_cpu=240000000L hornbill32dev.build.flash_mode=dio hornbill32dev.build.flash_size=4MB -hornbill32dev.build.boot=bootloader +hornbill32dev.build.boot=dio hornbill32dev.build.partitions=default hornbill32dev.menu.FlashFreq.80=80MHz @@ -607,7 +610,7 @@ hornbill32minima.build.board=HORNBILL_ESP32_MINIMA hornbill32minima.build.f_cpu=240000000L hornbill32minima.build.flash_mode=dio hornbill32minima.build.flash_size=4MB -hornbill32minima.build.boot=bootloader +hornbill32minima.build.boot=dio hornbill32minima.build.partitions=default hornbill32minima.menu.FlashFreq.80=80MHz @@ -650,7 +653,7 @@ firebeetle32.build.board=ESP32_DEV firebeetle32.build.f_cpu=240000000L firebeetle32.build.flash_mode=dio firebeetle32.build.flash_size=4MB -firebeetle32.build.boot=bootloader +firebeetle32.build.boot=dio firebeetle32.build.partitions=default firebeetle32.menu.FlashFreq.80=80MHz @@ -693,7 +696,7 @@ intorobot-fig.build.board=INTOROBOT_ESP32_DEV intorobot-fig.build.f_cpu=240000000L intorobot-fig.build.flash_mode=dio intorobot-fig.build.flash_size=4MB -intorobot-fig.build.boot=bootloader +intorobot-fig.build.boot=dio intorobot-fig.build.partitions=default intorobot-fig.menu.FlashFreq.80=80MHz @@ -736,7 +739,7 @@ onehorse32dev.build.board=ONEHORSE_ESP32_DEV onehorse32dev.build.f_cpu=240000000L onehorse32dev.build.flash_mode=dout onehorse32dev.build.flash_size=4MB -onehorse32dev.build.boot=bootloader +onehorse32dev.build.boot=dio onehorse32dev.build.partitions=default onehorse32dev.menu.FlashFreq.80=80MHz @@ -779,7 +782,7 @@ featheresp32.build.board=FEATHER_ESP32 featheresp32.build.f_cpu=240000000L featheresp32.build.flash_mode=dio featheresp32.build.flash_size=4MB -featheresp32.build.boot=bootloader +featheresp32.build.boot=dio featheresp32.build.partitions=default featheresp32.menu.FlashFreq.80=80MHz @@ -835,7 +838,7 @@ nodemcu-32s.build.board=NodeMCU_32S nodemcu-32s.build.f_cpu=240000000L nodemcu-32s.build.flash_mode=dio nodemcu-32s.build.flash_size=4MB -nodemcu-32s.build.boot=bootloader +nodemcu-32s.build.boot=dio nodemcu-32s.build.partitions=default nodemcu-32s.menu.FlashFreq.80=80MHz @@ -878,7 +881,7 @@ mhetesp32devkit.build.board=MH_ET_LIVE_ESP32DEVKIT mhetesp32devkit.build.f_cpu=240000000L mhetesp32devkit.build.flash_mode=dio mhetesp32devkit.build.flash_size=4MB -mhetesp32devkit.build.boot=bootloader +mhetesp32devkit.build.boot=dio mhetesp32devkit.build.partitions=default mhetesp32devkit.menu.FlashFreq.80=80MHz @@ -921,7 +924,7 @@ mhetesp32minikit.build.board=MH_ET_LIVE_ESP32MINIKIT mhetesp32minikit.build.f_cpu=240000000L mhetesp32minikit.build.flash_mode=dio mhetesp32minikit.build.flash_size=4MB -mhetesp32minikit.build.boot=bootloader +mhetesp32minikit.build.boot=dio mhetesp32minikit.build.partitions=default mhetesp32minikit.menu.FlashFreq.80=80MHz @@ -964,7 +967,7 @@ esp32vn-iot-uno.build.board=esp32vn-iot-uno esp32vn-iot-uno.build.f_cpu=240000000L esp32vn-iot-uno.build.flash_mode=dio esp32vn-iot-uno.build.flash_size=4MB -esp32vn-iot-uno.build.boot=bootloader +esp32vn-iot-uno.build.boot=dio esp32vn-iot-uno.build.partitions=default esp32vn-iot-uno.menu.FlashFreq.80=80MHz @@ -1007,7 +1010,7 @@ esp32doit-devkit-v1.build.board=ESP32_DEV esp32doit-devkit-v1.build.f_cpu=240000000L esp32doit-devkit-v1.build.flash_mode=dio esp32doit-devkit-v1.build.flash_size=4MB -esp32doit-devkit-v1.build.boot=bootloader +esp32doit-devkit-v1.build.boot=dio esp32doit-devkit-v1.build.partitions=default esp32doit-devkit-v1.menu.FlashFreq.80=80MHz @@ -1061,7 +1064,7 @@ esp32-evb.build.board=ESP32-EVB esp32-evb.build.f_cpu=240000000L esp32-evb.build.flash_mode=dio esp32-evb.build.flash_size=4MB -esp32-evb.build.boot=bootloader +esp32-evb.build.boot=dio esp32-evb.build.partitions=default esp32-evb.menu.FlashFreq.80=80MHz @@ -1093,7 +1096,7 @@ esp32-gateway.build.board=ESP32-GATEWAY esp32-gateway.build.f_cpu=240000000L esp32-gateway.build.flash_mode=dio esp32-gateway.build.flash_size=4MB -esp32-gateway.build.boot=bootloader +esp32-gateway.build.boot=dio esp32-gateway.build.partitions=default esp32-gateway.menu.FlashFreq.80=80MHz @@ -1125,7 +1128,7 @@ espino32.build.board=ESPino32 espino32.build.f_cpu=240000000L espino32.build.flash_mode=dio espino32.build.flash_size=4MB -espino32.build.boot=bootloader +espino32.build.boot=dio espino32.build.partitions=default espino32.menu.FlashFreq.80=80MHz @@ -1168,19 +1171,21 @@ m5stack-core-esp32.build.board=M5Stack-Core-ESP32 m5stack-core-esp32.build.f_cpu=240000000L m5stack-core-esp32.build.flash_size=4MB m5stack-core-esp32.build.flash_mode=dio -m5stack-core-esp32.build.boot=bootloader +m5stack-core-esp32.build.boot=dio m5stack-core-esp32.build.partitions=default m5stack-core-esp32.menu.FlashMode.qio=QIO m5stack-core-esp32.menu.FlashMode.qio.build.flash_mode=dio -m5stack-core-esp32.menu.FlashMode.qio.build.boot=bootloader_qio +m5stack-core-esp32.menu.FlashMode.qio.build.boot=qio m5stack-core-esp32.menu.FlashMode.dio=DIO m5stack-core-esp32.menu.FlashMode.dio.build.flash_mode=dio +m5stack-core-esp32.menu.FlashMode.dio.build.boot=dio m5stack-core-esp32.menu.FlashMode.qout=QOUT m5stack-core-esp32.menu.FlashMode.qout.build.flash_mode=dout -m5stack-core-esp32.menu.FlashMode.qout.build.boot=bootloader_qio +m5stack-core-esp32.menu.FlashMode.qout.build.boot=qout m5stack-core-esp32.menu.FlashMode.dout=DOUT m5stack-core-esp32.menu.FlashMode.dout.build.flash_mode=dout +m5stack-core-esp32.menu.FlashMode.dout.build.boot=dout m5stack-core-esp32.menu.FlashFreq.80=80MHz m5stack-core-esp32.menu.FlashFreq.80.build.flash_freq=80m @@ -1235,7 +1240,7 @@ heltec_wifi_kit_32.build.board=Heltec_WIFI_Kit_32 heltec_wifi_kit_32.build.f_cpu=240000000L heltec_wifi_kit_32.build.flash_mode=dio heltec_wifi_kit_32.build.flash_size=4MB -heltec_wifi_kit_32.build.boot=bootloader +heltec_wifi_kit_32.build.boot=dio heltec_wifi_kit_32.build.partitions=default heltec_wifi_kit_32.menu.FlashFreq.80=80MHz @@ -1278,7 +1283,7 @@ heltec_wifi_lora_32.build.board=Heltec_WIFI_LoRa_32 heltec_wifi_lora_32.build.f_cpu=240000000L heltec_wifi_lora_32.build.flash_mode=dio heltec_wifi_lora_32.build.flash_size=4MB -heltec_wifi_lora_32.build.boot=bootloader +heltec_wifi_lora_32.build.boot=dio heltec_wifi_lora_32.build.partitions=default heltec_wifi_lora_32.menu.FlashFreq.80=80MHz @@ -1321,19 +1326,21 @@ espectro32.build.board=ESPECTRO32 espectro32.build.f_cpu=240000000L espectro32.build.flash_size=4MB espectro32.build.flash_mode=dio -espectro32.build.boot=bootloader +espectro32.build.boot=dio espectro32.build.partitions=default espectro32.menu.FlashMode.qio=QIO espectro32.menu.FlashMode.qio.build.flash_mode=dio -espectro32.menu.FlashMode.qio.build.boot=bootloader_qio +espectro32.menu.FlashMode.qio.build.boot=qio espectro32.menu.FlashMode.dio=DIO espectro32.menu.FlashMode.dio.build.flash_mode=dio +espectro32.menu.FlashMode.dio.build.boot=dio espectro32.menu.FlashMode.qout=QOUT espectro32.menu.FlashMode.qout.build.flash_mode=dout -espectro32.menu.FlashMode.qout.build.boot=bootloader_qio +espectro32.menu.FlashMode.qout.build.boot=qout espectro32.menu.FlashMode.dout=DOUT espectro32.menu.FlashMode.dout.build.flash_mode=dout +espectro32.menu.FlashMode.dout.build.boot=dout espectro32.menu.FlashFreq.80=80MHz espectro32.menu.FlashFreq.80.build.flash_freq=80m @@ -1394,7 +1401,7 @@ CoreESP32.build.board=CoreESP32 CoreESP32.build.f_cpu=240000000L CoreESP32.build.flash_mode=dio CoreESP32.build.flash_size=4MB -CoreESP32.build.boot=bootloader +CoreESP32.build.boot=dio CoreESP32.build.partitions=default CoreESP32.menu.FlashFreq.80=80MHz diff --git a/platform.txt b/platform.txt index 9cf69321e..829c236ee 100644 --- a/platform.txt +++ b/platform.txt @@ -96,6 +96,6 @@ recipe.size.regex.data=^(?:\.dram0\.data|\.dram0\.bss)\s+([0-9]+).* tools.esptool.upload.protocol=esp32 tools.esptool.upload.params.verbose= tools.esptool.upload.params.quiet= -tools.esptool.upload.pattern="{path}/{cmd}" --chip esp32 --port "{serial.port}" --baud {upload.speed} --before default_reset --after hard_reset write_flash -z --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size detect 0xe000 "{runtime.platform.path}/tools/partitions/boot_app0.bin" 0x1000 "{runtime.platform.path}/tools/sdk/bin/{build.boot}.bin" 0x10000 "{build.path}/{build.project_name}.bin" 0x8000 "{build.path}/{build.project_name}.partitions.bin" +tools.esptool.upload.pattern="{path}/{cmd}" --chip esp32 --port "{serial.port}" --baud {upload.speed} --before default_reset --after hard_reset write_flash -z --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size detect 0xe000 "{runtime.platform.path}/tools/partitions/boot_app0.bin" 0x1000 "{runtime.platform.path}/tools/sdk/bin/bootloader_{build.boot}_{build.flash_freq}.bin" 0x10000 "{build.path}/{build.project_name}.bin" 0x8000 "{build.path}/{build.project_name}.partitions.bin" tools.esptool.upload.pattern.linux=python "{path}/{cmd}" --chip esp32 --port "{serial.port}" --baud {upload.speed} --before default_reset --after hard_reset write_flash -z --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size detect 0xe000 "{runtime.platform.path}/tools/partitions/boot_app0.bin" 0x1000 "{runtime.platform.path}/tools/sdk/bin/{build.boot}.bin" 0x10000 "{build.path}/{build.project_name}.bin" 0x8000 "{build.path}/{build.project_name}.partitions.bin" tools.esptool.upload.network_pattern={network_cmd} -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin" diff --git a/tools/sdk/bin/bootloader.bin b/tools/sdk/bin/bootloader_dio_40m.bin similarity index 100% rename from tools/sdk/bin/bootloader.bin rename to tools/sdk/bin/bootloader_dio_40m.bin diff --git a/tools/sdk/bin/bootloader_dio_80m.bin b/tools/sdk/bin/bootloader_dio_80m.bin new file mode 100644 index 0000000000000000000000000000000000000000..7e4e663c41666c7d1c32f8044860aaa1b42cd6d3 GIT binary patch literal 12304 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 NccePpJHOIp{vQ^6Kf3?` literal 0 HcmV?d00001 diff --git a/tools/sdk/bin/bootloader_dout_40m.bin b/tools/sdk/bin/bootloader_dout_40m.bin new file mode 100644 index 0000000000000000000000000000000000000000..bf8c83b96e9e203d550b6e7e2f36093db90f69f1 GIT binary patch literal 12320 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 PqtDRi_8#66TWb10uDd`y literal 0 HcmV?d00001 diff --git a/tools/sdk/bin/bootloader_qio.bin b/tools/sdk/bin/bootloader_qio_40m.bin similarity index 100% rename from tools/sdk/bin/bootloader_qio.bin rename to tools/sdk/bin/bootloader_qio_40m.bin diff --git a/tools/sdk/bin/bootloader_qio_80m.bin b/tools/sdk/bin/bootloader_qio_80m.bin new file mode 100644 index 0000000000000000000000000000000000000000..12180e8031e306a597342e4a9d25f7acbe6df7cd GIT binary patch literal 14128 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 literal 0 HcmV?d00001 diff --git a/tools/sdk/bin/bootloader_qout_40m.bin b/tools/sdk/bin/bootloader_qout_40m.bin new file mode 100644 index 0000000000000000000000000000000000000000..67f8ab51974899e2aed1dab3c3a2336e04b21468 GIT binary patch literal 14144 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 N;R}~Ot?+c8{(ou?((eEO literal 0 HcmV?d00001 diff --git a/tools/sdk/bin/bootloader_qout_80m.bin b/tools/sdk/bin/bootloader_qout_80m.bin new file mode 100644 index 0000000000000000000000000000000000000000..12180e8031e306a597342e4a9d25f7acbe6df7cd GIT binary patch literal 14128 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 literal 0 HcmV?d00001