"tool-dfuutil") or "", "bin", "dfu-util") _upload_flags = [ "-d", ",".join(["%s:%s" % (hwid[0], hwid[1]) for hwid in hwids]), "-a", "0", "-s", "%s:leave" % board.get("upload.offset_address", "0x08000000"), "-D" ] upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")] if "dfu-util" in _upload_tool: # Add special DFU header to the binary image env.AddPostAction( join("$BUILD_DIR", "${PROGNAME}.bin"), env.VerboseAction( " ".join([ '"%s"' % join(platform.get_package_dir("tool-dfuutil") or "", "bin", "dfu-suffix"), "-v %s" % vid, "-p %s" % pid, "-d 0xffff", "-a", "$TARGET" ]), "Adding dfu suffix to ${PROGNAME}.bin")) env.Replace( UPLOADER=_upload_tool, UPLOADERFLAGS=_upload_flags, UPLOADCMD='$UPLOADER $UPLOADERFLAGS "${SOURCE.get_abspath()}"') upload_source = target_firm elif upload_protocol == "serial": def __configure_upload_port(env): return env.subst("$UPLOAD_PORT")
if "nobuild" in COMMAND_LINE_TARGETS: target_elf = os.path.join("$BUILD_DIR", "${PROGNAME}.elf") target_bin = os.path.join("$BUILD_DIR", "${PROGNAME}.bin") target_vh = os.path.join("$BUILD_DIR", "${PROGNAME}.vh") else: target_elf = env.BuildProgram() target_bin = env.ElfToBin(os.path.join("$BUILD_DIR", "${PROGNAME}"), target_elf) target_vh = env.BinToVh(os.path.join("$BUILD_DIR", "${PROGNAME}"), target_bin) AlwaysBuild(env.Alias("nobuild", target_bin)) target_buildprog = env.Alias("buildprog", target_bin, target_bin) env.AddPostAction( target_elf, env.VerboseAction(generate_disassembly, "Generating disassembly")) # # Target: Print binary size # target_size = env.AddPlatformTarget( "size", target_elf, env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE"), "Program Size", "Calculate program size", ) #
if not os.path.isdir(variant_dir): os.mkdir(variant_dir) for file_name in os.listdir(source_dir): full_file_name = os.path.join(source_dir, file_name) if os.path.isfile(full_file_name): shutil.copy(full_file_name, variant_dir) # Relocate firmware from 0x08000000 to 0x08002000 #env['CPPDEFINES'].remove(("VECT_TAB_ADDR", 134217728)) #env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08010000")) #env.Replace(LDSCRIPT_PATH="buildroot/share/PlatformIO/ldscripts/fysetc_aio_ii.ld") # Custom HEX from ELF env.AddPostAction( "$BUILD_DIR/${PROGNAME}.elf", env.VerboseAction( " ".join([ "$OBJCOPY", "-O", "ihex", "$BUILD_DIR/${PROGNAME}.elf", "$BUILD_DIR/${PROGNAME}.hex" ]), "Building $TARGET")) # In-line command with arguments env.Replace( UPLOADER=platform.get_package_dir("tool-stm32duino") + '/stm32flash/stm32flash', UPLOADCMD= '"${UPLOADER}" -v -i rts,-dtr,dtr,-rts -R -b 115200 -g 0x8000000 -w "${BUILD_DIR}/${PROGNAME}.hex" ${UPLOAD_PORT}' )
media_content = "data:" + get_mimetype(match) + ";base64," + media_content os.remove(data + match) print match content = re.sub(match, media_content, content) return content env = DefaultEnvironment() # Set parameters from environment variables data = env['PROJECT_DIR'] + "/data/" www = env['PROJECT_DIR'] + "/www/" # Only run when building & uploading SPIFFS image env.AddPostAction("uploadfs", after_upload) # Show parameters print data print www # Only run this script when building SPIFFS image if 'SPIFFS_START' in env: # clone 'www' folder to 'data' folder files = dir_util.copy_tree(www, data, ) # embed Javascript, CSS into html files for file in files: if re.search(r'\.htm', file): print file content = read_file(file)
# Target: Build executable and linkable firmware # target_elf = None if "nobuild" in COMMAND_LINE_TARGETS: target_elf = join("$BUILD_DIR", "${PROGNAME}.elf") target_firm = join("$BUILD_DIR", "${PROGNAME}.bin") else: target_elf = env.BuildProgram() target_firm = env.ElfToBin(join("$BUILD_DIR", "${PROGNAME}"), target_elf) env.Depends(target_firm, "checkprogsize") AlwaysBuild(env.Alias("nobuild", target_firm)) target_buildprog = env.Alias("buildprog", target_firm, target_firm) env.AddPostAction(target_elf, env.VerboseAction(generate_uf2, "Generating UF2 image")) # # Target: Print binary size # target_size = env.Alias( "size", target_elf, env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE")) AlwaysBuild(target_size) # # Target: Upload by default .bin file # debug_tools = env.BoardConfig().get("debug.tools", {})
# if "zephyr" in env.get("PIOFRAMEWORK", []): env.SConscript(join(platform.get_package_dir("framework-zephyr"), "scripts", "platformio", "platformio-build-pre.py"), exports={"env": env}) target_elf = None if "nobuild" in COMMAND_LINE_TARGETS: target_elf = join("$BUILD_DIR", "${PROGNAME}.elf") target_firm = join("$BUILD_DIR", "${PROGNAME}.bin") else: target_elf = env.BuildProgram() target_firm = env.ElfToBin(join("$BUILD_DIR", "${PROGNAME}"), target_elf) env.AddPostAction( target_firm, env.VerboseAction(add_image_checksum, "Adding checksum to $TARGET")) env.Depends(target_firm, "checkprogsize") AlwaysBuild(env.Alias("nobuild", target_firm)) target_buildprog = env.Alias("buildprog", target_firm, target_firm) # # Target: Print binary size # target_size = env.Alias( "size", target_elf, env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE")) AlwaysBuild(target_size)