From fb98637d3bb00a1570b26613c862ac6085ca996c Mon Sep 17 00:00:00 2001 From: Umberto Baldi Date: Wed, 21 Jun 2023 17:02:30 +0200 Subject: [PATCH] add combine script to make a monolithic bin that can be flashed at 0x0 it's based on https://github.com/arduino/nina-fw/blob/master/combine.py --- libraries/WiFi/extra/combine.py | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 libraries/WiFi/extra/combine.py diff --git a/libraries/WiFi/extra/combine.py b/libraries/WiFi/extra/combine.py new file mode 100755 index 000000000..f377515ce --- /dev/null +++ b/libraries/WiFi/extra/combine.py @@ -0,0 +1,38 @@ +#!/usr/bin/python3 + +import sys; + +booloaderData = open("bootloader.bin", "rb").read() +partitionData = open("partition-table.bin", "rb").read() +networkData = open("network_adapter.bin", "rb").read() + +# 0x0 bootloader.bin 0x8000 partition-table.bin 0x10000 network_adapter.bin + + +# calculate the output binary size, app offset +outputSize = 0x10000 + len(networkData) +if (outputSize % 1024): + outputSize += 1024 - (outputSize % 1024) + +# allocate and init to 0xff +outputData = bytearray(b'\xff') * outputSize + +# copy data: bootloader, partitions, app +for i in range(0, len(booloaderData)): + outputData[0x0000 + i] = booloaderData[i] + +for i in range(0, len(partitionData)): + outputData[0x8000 + i] = partitionData[i] + +for i in range(0, len(networkData)): + outputData[0x10000 + i] = networkData[i] + + +outputFilename = "ESP32-C3.bin" +if (len(sys.argv) > 1): + outputFilename = sys.argv[1] + +# write out +with open(outputFilename,"w+b") as f: + f.seek(0) + f.write(outputData)