Beispiel #1
0
def flash(bios_flash_offset):
    from litex.build.dfu import DFUProg
    prog = IceStormProgrammer()
    bitstream = open("build/" + target + "/gateware/" + target + ".bin", "rb")
    bios = open("build/" + target + "/software/bios/bios.bin", "rb")
    image = open("build/" + target + "/image.bin", "wb")
    # Copy bitstream at 0x00000000
    for i in range(0x00000000, 0x0020000):
        b = bitstream.read(1)
        if not b:
            image.write(0xff.to_bytes(1, "big"))
        else:
            image.write(b)
    # Copy bios at 0x00020000
    for i in range(0x00000000, 0x00010000):
        b = bios.read(1)
        if not b:
            image.write(0xff.to_bytes(1, "big"))
        else:
            image.write(b)
    bitstream.close()
    bios.close()
    image.close()
    print("Flashing bitstream (+bios)")
    prog.flash(0x0, "build/" + target + "/image.bin")
Beispiel #2
0
def flash(bios_flash_offset):
    from litex.build.lattice.programmer import IceStormProgrammer
    prog = IceStormProgrammer()
    prog.flash(bios_flash_offset,
               "soc_basesoc_icebreaker/software/bios/bios.bin")
    prog.flash(0x00000000, "soc_basesoc_icebreaker/gateware/top.bin")
    exit()
Beispiel #3
0
def main():
    parser = argparse.ArgumentParser(description="do the thing")
    #parser.add_argument("--load",        action="store_true",      help="load bitstream")
    parser.add_argument("--flash",       action="store_true",      help="flash bitstream")
    parser.add_argument("--sim",       action="store_true",      help="simulate")
    parser.add_argument("--threads",   default=1,      help="simulate")
    parser.add_argument("--trace",              action="store_true",    help="Enable VCD tracing")
    parser.add_argument("--trace-start",        default=0,              help="Cycle to start VCD tracing")
    parser.add_argument("--trace-end",          default=-1,             help="Cycle to end VCD tracing")
    parser.add_argument("--opt-level",          default="O3",           help="Compilation optimization level")
    parser.add_argument("--sdram-init",          default=None,           help="SDRAM init file")

    args = parser.parse_args()

    sim_config = SimConfig(default_clk="sys_clk")
    sim_config.add_module("serial2console", "serial")

    build_kwargs = {}

    if args.sim:
        build_kwargs["threads"] = args.threads
        build_kwargs["sim_config"] = sim_config
        build_kwargs["opt_level"]   = args.opt_level
        build_kwargs["trace"]       = args.trace
        build_kwargs["trace_start"] = int(args.trace_start)
        build_kwargs["trace_end"]   = int(args.trace_end)

    soc = N64SoC(
        simulate=args.sim, 
        sdram_init     = [] if args.sdram_init is None else get_mem_data(args.sdram_init, "little"),
    )

    builder = Builder(soc, output_dir="build", csr_csv="scripts/csr.csv")
    builder.build(run=not (args.sim or args.flash), **build_kwargs)

    if args.flash:
        from litex.build.lattice.programmer import IceStormProgrammer
        prog = IceStormProgrammer()
        #prog.flash(4194304,        "sm64_swapped_half.n64")
        prog.flash(bios_flash_offset, "build/software/bios/bios.bin")
        prog.flash(0x00000000,        "build/gateware/litex_platform_n64.bin")

    if args.sim:
        builder.build(build=False, **build_kwargs)
Beispiel #4
0
def main():
    parser = argparse.ArgumentParser(
        description="LiteICLink SerWB bench on iCEBreaker")
    parser.add_argument("--build", action="store_true", help="Build bitstream")
    parser.add_argument("--load",
                        action="store_true",
                        help="Load bitstream (to SRAM)")
    parser.add_argument("--loopback",
                        action="store_true",
                        help="Loopback SerWB in FPGA (no IOs)")
    args = parser.parse_args()

    platform = icebreaker.Platform()
    platform.add_extension(icebreaker.break_off_pmod)
    platform.add_extension(serwb_io)
    soc = SerWBTestSoC(platform)
    builder = Builder(soc, csr_csv="csr.csv")
    builder.build(run=args.build)

    if args.load:
        from litex.build.lattice.programmer import IceStormProgrammer
        prog = IceStormProgrammer()
        prog.flash(0, "build/icebreaker/gateware/icebreaker.bin")
Beispiel #5
0
def flash(build_dir, build_name, bios_flash_offset):
    from litex.build.lattice.programmer import IceStormProgrammer
    prog = IceStormProgrammer()
    prog.flash(bios_flash_offset, f"{build_dir}/software/bios/bios.bin")
    prog.flash(0x00000000, f"{build_dir}/gateware/{build_name}.bin")