Esempio n. 1
0
File: main.py Progetto: OS-Q/P411
            env.VerboseAction(
                "nrfjprog --erasepage $BOOT_SETTING_ADDR -f nrf52",
                "Erasing bootloader config",
            ),
            env.VerboseAction(
                "nrfjprog --memwr $BOOT_SETTING_ADDR --val 0x00000001 -f nrf52",
                "Disable CRC check",
            ),
            env.VerboseAction("nrfjprog --reset -f nrf52", "Reset nRF52"),
        ],
        "Burn Bootloader",
    )

if "bootloader" in COMMAND_LINE_TARGETS and "DFUBOOTHEX" not in env:
    sys.stderr.write("Error. The board is missing the bootloader binary.\n")
    env.Exit(1)

#
# Target: Print binary size
#

target_size = env.AddPlatformTarget(
    "size",
    target_elf,
    env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE"),
    "Program Size",
    "Calculate program size",
)

#
# Target: Upload by default .bin file
Esempio n. 2
0
                   PIOPACKAGES_DIR=join("$PIOHOME_DIR", "packages"),
                   BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"),
                   BUILDSRC_DIR=join("$BUILD_DIR", "src"),
                   LIBSOURCE_DIRS=[
                       "$PROJECTLIB_DIR",
                       util.get_lib_dir(),
                       join("$PLATFORMFW_DIR", "libraries")
                   ])

env = DefaultEnvironment()

if "BOARD" in env:
    try:
        env.Replace(BOARD_OPTIONS=util.get_boards(env.subst("$BOARD")))
    except UnknownBoard as e:
        env.Exit("Error: %s" % str(e))

    if "BOARD_MCU" not in env:
        env.Replace(BOARD_MCU="${BOARD_OPTIONS['build']['mcu']}")
    if "BOARD_F_CPU" not in env:
        env.Replace(BOARD_F_CPU="${BOARD_OPTIONS['build']['f_cpu']}")
    if "UPLOAD_PROTOCOL" not in env:
        env.Replace(
            UPLOAD_PROTOCOL="${BOARD_OPTIONS['upload'].get('protocol', None)}")
    if "UPLOAD_SPEED" not in env:
        env.Replace(
            UPLOAD_SPEED="${BOARD_OPTIONS['upload'].get('speed', None)}")
    if "ldscript" in env.get("BOARD_OPTIONS", {}).get("build", {}):
        env.Replace(
            LDSCRIPT_PATH=(env['BOARD_OPTIONS']['build']['ldscript'] if isfile(
                env['BOARD_OPTIONS']['build']['ldscript']
Esempio n. 3
0
env.Append(ASFLAGS=env.get("CCFLAGS", [])[:],
           BUILDERS=dict(ElfToBin=Builder(action=env.VerboseAction(
               " ".join(["$OBJCOPY", "-O", "binary", "$SOURCES", "$TARGET"]),
               "Building $TARGET"),
                                          suffix=".bin"),
                         ElfToHex=Builder(action=env.VerboseAction(
                             " ".join([
                                 "$OBJCOPY", "-O", "ihex", "-R", ".eeprom",
                                 "$SOURCES", "$TARGET"
                             ]), "Building $TARGET"),
                                          suffix=".hex")))

if env.subst("$UPLOAD_PROTOCOL") == "gdb":
    if not isfile(join(env.subst("$PROJECT_DIR"), "upload.gdb")):
        env.Exit("Error: You are using GDB as firmware uploader. "
                 "Please specify upload commands in upload.gdb "
                 "file in project directory!")
    env.Replace(UPLOADER="arm-none-eabi-gdb",
                UPLOADERFLAGS=[
                    join("$BUILD_DIR", "firmware.elf"), "-batch", "-x",
                    join("$PROJECT_DIR", "upload.gdb")
                ],
                UPLOADCMD='$UPLOADER $UPLOADERFLAGS')

elif env.subst("$UPLOAD_PROTOCOL") in ("serial", "dfu") \
        and "arduino" in env.subst("$PIOFRAMEWORK"):
    _upload_tool = "serial_upload"
    _upload_flags = ["{upload.altID}", "{upload.usbID}"]
    if env.subst("$UPLOAD_PROTOCOL") == "dfu":
        _upload_tool = "maple_upload"
        _usbids = env.BoardConfig().get("build.hwids")
Esempio n. 4
0
    DEFAULT_ENV_OPTIONS['ARCOMSTR'] = "Archiving $TARGET"
    DEFAULT_ENV_OPTIONS['LINKCOMSTR'] = "Linking $TARGET"
    DEFAULT_ENV_OPTIONS['RANLIBCOMSTR'] = "Indexing $TARGET"
    for k in ("ASCOMSTR", "ASPPCOMSTR", "CCCOMSTR", "CXXCOMSTR"):
        DEFAULT_ENV_OPTIONS[k] = "Compiling $TARGET"

env = DefaultEnvironment(**DEFAULT_ENV_OPTIONS)

# decode common variables
for k in commonvars.keys():
    if k in env:
        env[k] = base64.b64decode(env[k])

if env.GetOption('clean'):
    env.PioClean(env.subst("$BUILD_DIR"))
    env.Exit(0)
elif not int(ARGUMENTS.get("PIOVERBOSE", 0)):
    print "Verbose mode can be enabled via `-v, --verbose` option"

# Handle custom variables from system environment
for var in ("BUILD_FLAGS", "SRC_BUILD_FLAGS", "SRC_FILTER", "EXTRA_SCRIPT",
            "UPLOAD_PORT", "UPLOAD_FLAGS", "LIB_EXTRA_DIRS"):
    k = "PLATFORMIO_%s" % var
    if k not in environ:
        continue
    if var in ("UPLOAD_PORT", "EXTRA_SCRIPT") or not env.get(var):
        env[var] = environ.get(k)
    else:
        env[var] = "%s%s%s" % (environ.get(k), ", "
                               if var == "LIB_EXTRA_DIRS" else " ", env[var])
Esempio n. 5
0
    BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"),
    BUILDSRC_DIR=join("$BUILD_DIR", "src"),
    LIBSOURCE_DIRS=[
        "$PROJECTLIB_DIR",
        util.get_lib_dir(),
        join("$PLATFORMFW_DIR", "libraries")
    ])

env = DefaultEnvironment()
env.Prepend(LIBPATH=[join("$PIOPACKAGES_DIR", "ldscripts")])

if "BOARD" in env:
    try:
        env.Replace(BOARD_OPTIONS=util.get_boards(env.subst("$BOARD")))
    except UnknownBoard as e:
        env.Exit("Error: %s" % str(e))

    if "BOARD_MCU" not in env:
        env.Replace(BOARD_MCU="${BOARD_OPTIONS['build']['mcu']}")
    if "BOARD_F_CPU" not in env:
        env.Replace(BOARD_F_CPU="${BOARD_OPTIONS['build']['f_cpu']}")
    if "UPLOAD_PROTOCOL" not in env:
        env.Replace(
            UPLOAD_PROTOCOL="${BOARD_OPTIONS['upload'].get('protocol', None)}")
    if "UPLOAD_SPEED" not in env:
        env.Replace(
            UPLOAD_SPEED="${BOARD_OPTIONS['upload'].get('speed', None)}")
    if "ldscript" in env.get("BOARD_OPTIONS", {}).get("build", {}):
        env.Replace(
            LDSCRIPT_PATH=(env['BOARD_OPTIONS']['build']['ldscript'] if isfile(
                env['BOARD_OPTIONS']['build']['ldscript']
Esempio n. 6
0
                   PLATFORMFW_DIR=join("$PIOPACKAGES_DIR",
                                       "$PIOPACKAGE_FRAMEWORK"),
                   BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"),
                   LIBSOURCE_DIRS=[
                       join("$PROJECT_DIR", "lib"),
                       util.get_lib_dir(),
                       join("$PLATFORMFW_DIR", "libraries"),
                   ])

env = DefaultEnvironment()

if "BOARD" in env:
    try:
        env.Replace(BOARD_OPTIONS=util.get_boards(env.subst("$BOARD")))
    except KeyError:
        env.Exit("Error: Unknown board '%s'" % env.subst("$BOARD"))

    if "BOARD_MCU" not in env:
        env.Replace(BOARD_MCU="${BOARD_OPTIONS['build']['mcu']}")
    if "BOARD_F_CPU" not in env:
        env.Replace(BOARD_F_CPU="${BOARD_OPTIONS['build']['f_cpu']}")
    if "UPLOAD_PROTOCOL" not in env:
        env.Replace(UPLOAD_PROTOCOL="${BOARD_OPTIONS['upload']['protocol']}")
    if "UPLOAD_SPEED" not in env:
        env.Replace(UPLOAD_SPEED="${BOARD_OPTIONS['upload']['speed']}")

env.PrependENVPath(
    "PATH", env.subst(join("$PIOPACKAGES_DIR", "$PIOPACKAGE_TOOLCHAIN",
                           "bin")))

SConscriptChdir(0)