示例#1
0
else:
    target_elf = env.BuildProgram()
    target_firm = env.ElfToHex(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)

#
# 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 .hex file
#

upload_protocol = env.subst("$UPLOAD_PROTOCOL")

if upload_protocol == "micronucleus":
    env.Replace(
        UPLOADER="micronucleus",
        UPLOADERFLAGS=[
            "--no-ansi",
示例#2
0
文件: main.py 项目: OS-Q/P411
        env.Depends(target_firm, "checkprogsize")

AlwaysBuild(env.Alias("nobuild", target_firm))
target_buildprog = env.Alias("buildprog", target_firm, target_firm)

if "DFUBOOTHEX" in env:
    env.Append(
        # Check the linker script for the correct location
        BOOT_SETTING_ADDR=board.get("build.bootloader.settings_addr",
                                    "0x7F000"))

    env.AddPlatformTarget(
        "dfu",
        env.PackageDfu(
            join("$BUILD_DIR", "${PROGNAME}"),
            env.ElfToHex(join("$BUILD_DIR", "${PROGNAME}"), target_elf),
        ),
        target_firm,
        "Generate DFU Image",
    )

    env.AddPlatformTarget(
        "bootloader",
        None,
        [
            env.VerboseAction(
                "nrfjprog --program $DFUBOOTHEX -f nrf52 --chiperase",
                "Uploading $DFUBOOTHEX",
            ),
            env.VerboseAction(
                "nrfjprog --erasepage $BOOT_SETTING_ADDR -f nrf52",
        target_firm = join("$BUILD_DIR", "${ESP32_SPIFFS_IMAGE_NAME}.bin")
    else:
        target_firm = join("$BUILD_DIR", "${PROGNAME}.bin")
else:
    target_elf = env.BuildProgram()
    if set(["buildfs", "uploadfs", "uploadfsota"]) & set(COMMAND_LINE_TARGETS):
        target_firm = env.DataToBin(
            join("$BUILD_DIR", "${ESP32_SPIFFS_IMAGE_NAME}"),
            "$PROJECTDATA_DIR")
        env.NoCache(target_firm)
        AlwaysBuild(target_firm)
    else:
        target_firm = env.ElfToBin(join("$BUILD_DIR", "${PROGNAME}"),
                                   target_elf)

env.AddPlatformTarget("buildfs", target_firm, None, "Build Filesystem Image")
AlwaysBuild(env.Alias("nobuild", target_firm))
target_buildprog = env.Alias("buildprog", target_firm, target_firm)

# update max upload size based on CSV file
if env.get("PIOMAINPROG"):
    env.AddPreAction(
        "checkprogsize",
        env.VerboseAction(
            lambda source, target, env: _update_max_upload_size(env),
            "Retrieving maximum program size $SOURCES"))
# remove after PIO Core 3.6 release
elif set(["checkprogsize", "upload"]) & set(COMMAND_LINE_TARGETS):
    _update_max_upload_size(env)

#
示例#4
0
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",
)

#
# Target: Program FPGA
#

# Note: there is a precompiled bitstream in framework-wd-riscv-sdk package
bitstream_file = os.path.abspath(
    board_config.get("build.bitstream_file", "swervolf_0.bit"))

if "program_fpga" in COMMAND_LINE_TARGETS and not os.path.isfile(
        bitstream_file):
    sys.stderr.write("Error: Couldn't find bitstream file.\n")
示例#5
0
app_includes = get_app_includes(elf_config)
project_lib_includes = get_project_lib_includes(env)

#
# Compile bootloader
#

env.Depends("$BUILD_DIR/$PROGNAME$PROGSUFFIX", build_bootloader())

#
# Target: ESP-IDF menuconfig
#

env.AddPlatformTarget(
    "menuconfig",
    None,
    [env.VerboseAction(RunMenuconfig, "Running menuconfig...")],
    "Run Menuconfig",
)

#
# Process main parts of the framework
#

libs = find_lib_deps(framework_components_map, elf_config, link_args,
                     [project_target_name])

# Extra flags which need to be explicitly specified in LINKFLAGS section because SCons
# cannot merge them correctly
extra_flags = filter_args(link_args["LINKFLAGS"], ["-T", "-u"])
link_args["LINKFLAGS"] = sorted(
    list(set(link_args["LINKFLAGS"]) - set(extra_flags)))
示例#6
0
文件: main.py 项目: OS-Q/P115
    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.AddPlatformTarget(
    "size",
    target_elf,
    env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE"),
    "Program Size",
    "Calculate program size",
)

#
# Target: Setup fuses
#

fuses_action = None
if "fuses" in COMMAND_LINE_TARGETS:
    fuses_action = env.SConscript("fuses.py", exports="env")
env.AddPlatformTarget("fuses", None, fuses_action, "Set Fuses")

#
# Target: Upload bootloader
示例#7
0
env.Append(ARFLAGS=[],
           ASFLAGS=[],
           CCFLAGS=[],
           CXXFLAGS=[],
           LINKFLAGS=[],
           CPPDEFINES=[],
           LIBS=[],
           BUILDERS=dict(ElfToBin=Builder(action=" ".join(
               ["$OBJCOPY", "-O", "binary", "$SOURCES", "$TARGET"]),
                                          suffix=".bin")))

#
# Target: Build executable and linkable firmware
#
target_elf = env.BuildProgram()

#
# Target: Build the .bin file
#
target_bin = env.ElfToBin(join("$BUILD_DIR", "firmware"), target_elf)

#
# Target: Upload firmware
#
upload = env.AddPlatformTarget("upload", target_bin, upload_actions, "Upload")
#
# Target: Define targets
#
Default([target_bin, upload])
示例#8
0
    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.AddPlatformTarget(
    "size",
    target_elf,
    env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE"),
    "Program Size",
    "Calculate program size",
)

#
# Target: Upload by default .hex file
#

upload_protocol = env.subst("$UPLOAD_PROTOCOL")

if upload_protocol == "custom":
    upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")]
elif upload_protocol == "xplainedmini_updi":
    env.Append(UPLOADERFLAGS=["-P", "usb", "-e", "-b", "$UPLOAD_SPEED"])
    upload_actions = [env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")]
示例#9
0
文件: main.py 项目: OS-Q/S02
if "nobuild" in COMMAND_LINE_TARGETS:
    target_elf = join("$BUILD_DIR", "${PROGNAME}.elf")
else:
    target_elf = env.BuildProgram()

if "uploadfs" in COMMAND_LINE_TARGETS:
    data_dir = env.subst("$PROJECTDATA_DIR")
    if not (isdir(data_dir) and listdir(data_dir)):
        sys.stderr.write(
            "Please create `data` directory in a project and put some files\n")
        env.Exit(1)
    target_firm = env.DataToBin(join("$BUILD_DIR", "data"), target_elf)
else:
    target_firm = target_elf

env.AddPlatformTarget("buildfs", target_firm, None, "Build Filesystem Image")
AlwaysBuild(env.Alias("nobuild", target_firm))
target_buildprog = env.Alias("buildprog", target_firm, target_firm)

#
# Target: Print binary size
#

target_size = env.AddPlatformTarget(
    "size",
    target_elf,
    env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE"),
    "Program Size",
    "Calculate program size",
)
示例#10
0
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",
)

#
# Target: Program FPGA
#

bitstream_file = os.path.abspath(
    board_config.get("build.bitstream_file", "bistream.bit"))

if not os.path.isfile(bitstream_file):
    bitstream_file = os.path.join(platform.get_dir(), "misc", "bitstream",
                                  "cv32e40p_nexys.bit")
示例#11
0
    else:
        target_firm = env.ElfToHex(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)

#
# 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
#

upload_protocol = env.subst("$UPLOAD_PROTOCOL")
debug_tools = board.get("debug.tools", {})
upload_actions = []

if upload_protocol == "mbed":
    upload_actions = [
        env.VerboseAction(env.AutodetectUploadPort,
示例#12
0
)

AlwaysBuild(target_size)

# Target: Upload

env.Replace(UPLOAD_PORT='"Launchpad Pro"')

upload = env.VerboseAction(
    ' '.join(['python3', '$SENDSYSEX', '-p', '$UPLOAD_PORT', '$SOURCE']),
    'Uploading $SOURCE')

env.AddPlatformTarget(
    'upload',
    target_syx,
    upload,
    'Upload',
    'Send firmware to Launchpad Pro over MIDI',
)

# Target: Restore

env.AddPlatformTarget(
    'restore',
    join(PLATFORM_DIR, 'resources/Launchpad Pro.syx'),
    upload,
    'Restore',
    'Restore Launchpad Pro original firmware',
)

# Default Targets
示例#13
0
if "nobuild" in COMMAND_LINE_TARGETS:
    target_ihx = join("$BUILD_DIR", "${PROGNAME}.elf")
    target_bin = join("$BUILD_DIR", "${PROGNAME}.bin")
else:
    target_ihx = env.BuildProgram()
    target_bin = env.Command(join("$BUILD_DIR", "${PROGNAME}.bin"), target_ihx,
                             "$OBJCOPY -p $SOURCES $TARGET")

#
# Target: Print binary size
#

target_size = env.AddPlatformTarget(
    "size",
    target_bin,
    sizePrintCMD,
    "Program Size",
    "Calculate program size",
)

#
# Target: Upload firmware
#

upload_protocol = env.subst("$UPLOAD_PROTOCOL")
upload_port = env.subst("$UPLOAD_PORT")
upload_actions = []

if upload_protocol == "easy-pdk-programmer":
    env.Replace(UPLOADER="easypdkprog",
                UPLOADERFLAGS=['-n', board_config.get("build.mcu")],