Exemple #1
0
        "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")
Exemple #2
0
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)
Exemple #5
0
# 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", {})
Exemple #6
0
#

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)