|
7 | 7 | phyData = open("data/phy.bin", "rb").read()
|
8 | 8 | certsData = open("data/roots.pem", "rb").read()
|
9 | 9 | appData = open("build/nina-fw.bin", "rb").read()
|
| 10 | +spiffsData = open("data/spiffs.bin", "rb").read() |
10 | 11 |
|
11 |
| -# calculate the output binary size, app offset |
| 12 | +# Offset Size Name |
| 13 | +# 0x001000 0x007000 bootloader |
| 14 | +# 0x008000 0x001000 partitions |
| 15 | +# 0x009000 0x001000 phy data |
| 16 | +# 0x00A000 0x026000 certs |
| 17 | +# 0x030000 0x180000 app |
| 18 | +# 0x1B0000 0x040000 spiffs |
| 19 | +# 0x1F0000 0x010000 nvs |
| 20 | + |
| 21 | +# calculate the output binary size, app offset |
12 | 22 | outputSize = 0x30000 + len(appData)
|
13 | 23 | if (outputSize % 1024):
|
14 |
| - outputSize += 1024 - (outputSize % 1024) |
| 24 | + outputSize += 1024 - (outputSize % 1024) |
15 | 25 |
|
16 | 26 | # allocate and init to 0xff
|
17 |
| -outputData = bytearray(b'\xff') * outputSize |
| 27 | +outputData = bytearray(b'\xff') * 0x200000 |
18 | 28 |
|
19 |
| -# copy data: bootloader, partitions, app |
| 29 | +# copy data: bootloader, partitions, phy, certs, app |
20 | 30 | for i in range(0, len(booloaderData)):
|
21 |
| - outputData[0x1000 + i] = booloaderData[i] |
| 31 | + outputData[0x1000 + i] = booloaderData[i] |
22 | 32 |
|
23 | 33 | for i in range(0, len(partitionData)):
|
24 |
| - outputData[0x8000 + i] = partitionData[i] |
| 34 | + outputData[0x8000 + i] = partitionData[i] |
25 | 35 |
|
26 | 36 | for i in range(0, len(phyData)):
|
27 |
| - outputData[0xf000 + i] = phyData[i] |
| 37 | + outputData[0x9000 + i] = phyData[i] |
28 | 38 |
|
29 | 39 | for i in range(0, len(certsData)):
|
30 |
| - outputData[0x10000 + i] = certsData[i] |
| 40 | + outputData[0xA000 + i] = certsData[i] |
31 | 41 |
|
32 | 42 | # zero terminate the pem file
|
33 |
| -outputData[0x10000 + len(certsData)] = 0 |
| 43 | +outputData[0xA000 + len(certsData)] = 0 |
34 | 44 |
|
35 | 45 | for i in range(0, len(appData)):
|
36 |
| - outputData[0x30000 + i] = appData[i] |
| 46 | + outputData[0x30000 + i] = appData[i] |
| 47 | + |
| 48 | +# add empty spiffs |
| 49 | +for i in range(0, len(spiffsData)): |
| 50 | + outputData[0x1B0000 + i] = spiffsData[i] |
37 | 51 |
|
38 | 52 |
|
39 |
| -outputFilename = "NINA_W102.bin" |
| 53 | +baseFilename = "NINA_W102" |
40 | 54 | if (len(sys.argv) > 1):
|
41 |
| - outputFilename = sys.argv[1] |
| 55 | + baseFilename = sys.argv[1] |
| 56 | + |
| 57 | +outputFilename = baseFilename + ".bin" |
| 58 | +# write out |
| 59 | +with open(outputFilename,"w+b") as f: |
| 60 | + f.seek(0) |
| 61 | + f.write(outputData[:outputSize]) |
| 62 | + |
| 63 | +outputFilename = baseFilename + "_BOOT_APP.bin" |
| 64 | +# write out |
| 65 | +with open(outputFilename,"w+b") as f: |
| 66 | + f.seek(0) |
| 67 | + f.write(outputData[:outputSize]) |
| 68 | + |
| 69 | +outputFilename = baseFilename + "_APP.bin" |
| 70 | +# write out |
| 71 | +with open(outputFilename,"w+b") as f: |
| 72 | + f.seek(0) |
| 73 | + f.write(outputData[0x30000:outputSize]) |
42 | 74 |
|
| 75 | +outputFilename = baseFilename + "_ALL.bin" |
43 | 76 | # write out
|
44 | 77 | with open(outputFilename,"w+b") as f:
|
45 |
| - f.seek(0) |
46 |
| - f.write(outputData) |
| 78 | + f.seek(0) |
| 79 | + f.write(outputData) |
0 commit comments