2021-04-27 11:49:21 +02:00
|
|
|
#
|
|
|
|
# buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py
|
|
|
|
# Customizations for env:jgaurora_a5s_a1
|
|
|
|
#
|
|
|
|
import os,marlin
|
2019-06-15 21:28:22 +02:00
|
|
|
|
2021-04-27 11:49:21 +02:00
|
|
|
# Append ${PROGNAME}.bin firmware after bootloader and save it as 'jgaurora_firmware.bin'
|
|
|
|
def addboot(source, target, env):
|
2019-06-15 21:28:22 +02:00
|
|
|
firmware = open(target[0].path, "rb")
|
|
|
|
lengthfirmware = os.path.getsize(target[0].path)
|
2021-04-27 11:49:21 +02:00
|
|
|
bootloader_bin = "buildroot/share/PlatformIO/scripts/" + "jgaurora_bootloader.bin"
|
|
|
|
bootloader = open(bootloader_bin, "rb")
|
|
|
|
lengthbootloader = os.path.getsize(bootloader_bin)
|
|
|
|
|
|
|
|
firmware_with_boothloader_bin = target[0].dir.path + '/firmware_with_bootloader.bin'
|
|
|
|
if os.path.exists(firmware_with_boothloader_bin):
|
|
|
|
os.remove(firmware_with_boothloader_bin)
|
|
|
|
firmwareimage = open(firmware_with_boothloader_bin, "wb")
|
2019-06-15 21:28:22 +02:00
|
|
|
position = 0
|
|
|
|
while position < lengthbootloader:
|
|
|
|
byte = bootloader.read(1)
|
|
|
|
firmwareimage.write(byte)
|
|
|
|
position += 1
|
|
|
|
position = 0
|
|
|
|
while position < lengthfirmware:
|
|
|
|
byte = firmware.read(1)
|
|
|
|
firmwareimage.write(byte)
|
2019-06-18 09:26:13 +02:00
|
|
|
position += 1
|
2019-06-15 21:28:22 +02:00
|
|
|
bootloader.close()
|
|
|
|
firmware.close()
|
|
|
|
firmwareimage.close()
|
|
|
|
|
2021-04-27 11:49:21 +02:00
|
|
|
firmware_without_bootloader_bin = target[0].dir.path + '/firmware_for_sd_upload.bin'
|
|
|
|
if os.path.exists(firmware_without_bootloader_bin):
|
|
|
|
os.remove(firmware_without_bootloader_bin)
|
|
|
|
os.rename(target[0].path, firmware_without_bootloader_bin)
|
|
|
|
#os.rename(target[0].dir.path+'/firmware_with_bootloader.bin', target[0].dir.path+'/firmware.bin')
|
2019-06-15 21:28:22 +02:00
|
|
|
|
2021-04-27 11:49:21 +02:00
|
|
|
marlin.add_post_action(addboot);
|