Esempio n. 1
0
File: main.py Progetto: OS-Q/P411
    env.SConscript(join(platform.get_package_dir("framework-zephyr"),
                        "scripts", "platformio", "platformio-build-pre.py"),
                   exports={"env": env})

upload_protocol = env.subst("$UPLOAD_PROTOCOL")
target_elf = None
if "nobuild" in COMMAND_LINE_TARGETS:
    target_elf = join("$BUILD_DIR", "${PROGNAME}.elf")
    target_firm = join("$BUILD_DIR", "${PROGNAME}.hex")
else:
    target_elf = env.BuildProgram()

    if "SOFTDEVICEHEX" in env:
        target_firm = env.MergeHex(
            join("$BUILD_DIR", "${PROGNAME}"),
            env.ElfToHex(join("$BUILD_DIR", "userfirmware"), target_elf))
    elif "nrfutil" == upload_protocol and use_adafruit:
        target_firm = env.PackageDfu(
            join("$BUILD_DIR", "${PROGNAME}"),
            env.ElfToHex(join("$BUILD_DIR", "${PROGNAME}"), target_elf))
    elif "nrfjprog" == upload_protocol:
        target_firm = env.ElfToHex(join("$BUILD_DIR", "${PROGNAME}"),
                                   target_elf)
    elif "sam-ba" == upload_protocol:
        target_firm = env.ElfToBin(join("$BUILD_DIR", "${PROGNAME}"),
                                   target_elf)
    else:
        if "DFUBOOTHEX" in env:
            target_firm = env.SignBin(
                join("$BUILD_DIR", "${PROGNAME}"),
                env.ElfToBin(join("$BUILD_DIR", "${PROGNAME}"), target_elf))
Esempio n. 2
0
if "BOARD" in env and "fuses" in env.BoardConfig():
    env.Replace(FUSESCMD=" ".join(["avrdude", "$UPLOADERFLAGS", "-e"] + [
        "-U%s:w:%s:m" % (k, v)
        for k, v in env.BoardConfig().get("fuses", {}).items()
    ]))

#
# Target: Build executable and linkable firmware
#

target_elf = None
if "nobuild" in COMMAND_LINE_TARGETS:
    target_firm = join("$BUILD_DIR", "${PROGNAME}.hex")
else:
    target_elf = env.BuildProgram()
    target_firm = env.ElfToHex(join("$BUILD_DIR", "${PROGNAME}"), target_elf)

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)

#
# Target: Upload by default .hex file
Esempio n. 3
0
                                          suffix=".hex")))

#
# Target: Build executable and linkable firmware
#

target_elf = env.BuildProgram()

#
# Target: Build the .hex
#

if "uploadlazy" in COMMAND_LINE_TARGETS:
    target_firm = join("$BUILD_DIR", "firmware.hex")
else:
    target_firm = env.ElfToHex(join("$BUILD_DIR", "firmware"), target_elf)

#
# Target: Print binary size
#

target_size = env.Alias("size", target_elf, "$SIZEPRINTCMD")
AlwaysBuild(target_size)

#
# Target: Upload firmware
#

upload = env.Alias(["upload", "uploadlazy"], target_firm, "$UPLOADCMD")
AlwaysBuild(upload)
Esempio n. 4
0
#
# Target: Build executable and linkable firmware
#
target_elf = env.BuildProgram()
AlwaysBuild(target_elf)

#
# Target: Build the .bin file
#
_name = env.get("PROGNAME")

target_bin = env.ElfToBin(join("$BUILD_DIR", _name), target_elf)

# Target: Build the .hex file
#
target_hex = env.ElfToHex(join("$BUILD_DIR", _name), target_elf)
# Target: Build the .lst file
#
target_lst = env.ElfToLst(join("$BUILD_DIR", _name), target_elf)

#
# Target: Upload firmware
#
upload = env.Alias(["upload"], target_bin, "$UPLOADCMD")
AlwaysBuild(upload)

#
# Target: Print binary size
#

target_size = env.Alias(
env.Replace(LINKFLAGS=_new_linkflags)
env.Append(LINKFLAGS=[
    "-Wl,--script=chipKIT-application-COMMON%s.ld" %
    ("-MZ" if "MZ" in
     env.get("BOARD_OPTIONS", {}).get("build", {}).get("mcu") else "")
])

#
# Target: Build the .hex
#

if "uploadlazy" in COMMAND_LINE_TARGETS:
    target_firm = join("$BUILD_DIR", "firmware.hex")
else:
    target_firm = env.ElfToHex(target_elf)

#
# Target: Print binary size
#

target_size = env.Alias("size", target_elf, "$SIZEPRINTCMD")
AlwaysBuild(target_size)

#
# Target: Upload firmware
#

upload = env.Alias(["upload", "uploadlazy"], target_firm,
                   [env.AutodetectUploadPort, "$UPLOADCMD"])
AlwaysBuild(upload)
Esempio n. 6
0
    env.Replace(
        __jlink_cmd_script=_jlink_cmd_script,
        UPLOADER="JLink.exe" if system() == "Windows" else "JLinkExe",
        UPLOADERFLAGS=[
            "-device",
            board.get("debug", {}).get("jlink_device"), "-speed",
            env.GetProjectOption("debug_speed", "4000"), "-if",
            ("jtag" if upload_protocol == "jlink-jtag" else "swd"),
            "-autoconnect", "1", "-NoGui", "1"
        ],
        UPLOADCMD=
        '$UPLOADER $UPLOADERFLAGS -CommanderScript "${__jlink_cmd_script(__env__, SOURCE)}"'
    )
    upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")]
    upload_source = env.ElfToHex(join("$BUILD_DIR", "${PROGNAME}"), target_elf)

elif upload_protocol in debug_tools:
    openocd_args = ["-d%d" % (2 if int(ARGUMENTS.get("PIOVERBOSE", 0)) else 1)]
    openocd_args.extend(
        debug_tools.get(upload_protocol).get("server").get("arguments", []))
    if env.GetProjectOption("debug_speed"):
        openocd_args.extend(
            ["-c",
             "adapter speed %s" % env.GetProjectOption("debug_speed")])
    openocd_args.extend([
        "-c",
        "program {$SOURCE} %s verify reset; shutdown;" %
        board.get("upload.offset_address", "")
    ])
    openocd_args = [
#
target_firm_elf = None
target_firm_hex = None
object_dump_dis = None

if "nobuild" in COMMAND_LINE_TARGETS:
    target_firm_elf = join("$BUILD_DIR", "${PROGNAME}.elf")
    target_firm_hex = join("$BUILD_DIR", "${PROGNAME}.hex")
    target_firm = join("$BUILD_DIR", "${PROGNAME}.bin")
else:
    target_firm_elf = env.BuildProgram()

    if "SOFTDEVICEHEX" in env:
        merged_softdevice_hex = env.MergeHex(
            join("$BUILD_DIR", "${PROGNAME}"),
            env.ElfToHex(join("$BUILD_DIR", "user_${PROGNAME}"),
                         target_firm_elf))
        target_firm_hex = join("$BUILD_DIR", "user_${PROGNAME}.hex")
    else:
        target_firm_hex = env.ElfToHex(join("$BUILD_DIR", "${PROGNAME}"),
                                       target_firm_elf)

    object_dump_dis = env.ObjectDump(join("$BUILD_DIR", "${PROGNAME}"),
                                     target_firm_elf)
    target_firm = env.ElfToBin(join("$BUILD_DIR", "${PROGNAME}"),
                               target_firm_elf)

#
# Target: Upload by default .bin file
#
if env.subst("$UPLOAD_PROTOCOL") == "teensy-gui" and not isfile(
        join(
Esempio n. 8
0
                     suffix='.hex'),
    HexToSyx=Builder(action=env.VerboseAction(
        ' '.join(['python3', '$HEXTOSYX', '$SOURCES', '$TARGET']),
        'Building $TARGET'),
                     suffix='.syx'),
), )

# Target: Build

if 'nobuild' in COMMAND_LINE_TARGETS:
    target_elf = join('$BUILD_DIR', '${PROGNAME}.elf')
    target_hex = join('$BUILD_DIR', '${PROGNAME}.hex')
    target_syx = join('$BUILD_DIR', '${PROGNAME}.syx')
else:
    target_elf = env.BuildProgram()
    target_hex = env.ElfToHex(join('$BUILD_DIR', '${PROGNAME}'), target_elf)
    target_syx = env.HexToSyx(join('$BUILD_DIR', '${PROGNAME}'), target_hex)

AlwaysBuild(env.Alias('nobuild', target_syx))

# Target: Print binary size

env.Replace(
    SIZETOOL='arm-none-eabi-size',
    SIZEPROGREGEXP=
    r"^(?:\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*",
    SIZEDATAREGEXP=r"^(?:\.data|\.bss|\.noinit)\s+(\d+).*",
    SIZECHECKCMD="$SIZETOOL -A -d $SOURCES",
    SIZEPRINTCMD='$SIZETOOL -B -d $SOURCES',
)