Merge branch 'master' into crosslink_nx_main_ram

This commit is contained in:
enjoy-digital 2023-08-28 16:34:27 +02:00 committed by GitHub
commit 232e829b8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 4 deletions

View File

@ -229,7 +229,7 @@ class Platform(LatticeECP5Platform):
LatticeECP5Platform.__init__(self, f"LFE5U-{device}-8MG285C", io, connectors, toolchain=toolchain, **kwargs) LatticeECP5Platform.__init__(self, f"LFE5U-{device}-8MG285C", io, connectors, toolchain=toolchain, **kwargs)
def create_programmer(self): def create_programmer(self):
return DFUProg(vid="1209", pid="5af0") return DFUProg(vid="1209", pid="5af0", alt=0)
def do_finalize(self, fragment): def do_finalize(self, fragment):
LatticeECP5Platform.do_finalize(self, fragment) LatticeECP5Platform.do_finalize(self, fragment)

View File

@ -21,6 +21,7 @@ from litex.build.generic_platform import *
from litex.soc.cores.clock import * from litex.soc.cores.clock import *
from litex.soc.integration.soc_core import * from litex.soc.integration.soc_core import *
from litex.soc.integration.soc import SoCRegion
from litex.soc.integration.builder import * from litex.soc.integration.builder import *
from litex.soc.cores.led import LedChaser from litex.soc.cores.led import LedChaser
@ -70,6 +71,8 @@ class BaseSoC(SoCCore):
def __init__(self, sys_clk_freq=75e6, device="LIFCL-40-9BG400C", toolchain="radiant", def __init__(self, sys_clk_freq=75e6, device="LIFCL-40-9BG400C", toolchain="radiant",
with_led_chaser = True, with_led_chaser = True,
with_spi_flash = False,
with_uartbone = False,
**kwargs): **kwargs):
platform = lattice_crosslink_nx_evn.Platform(device=device, toolchain=toolchain) platform = lattice_crosslink_nx_evn.Platform(device=device, toolchain=toolchain)
@ -97,10 +100,15 @@ class BaseSoC(SoCCore):
sys_clk_freq = sys_clk_freq) sys_clk_freq = sys_clk_freq)
# UARTBone --------------------------------------------------------------------------------- # UARTBone ---------------------------------------------------------------------------------
debug_uart = False if with_uartbone:
if debug_uart:
self.add_uartbone() self.add_uartbone()
# SPI Flash --------------------------------------------------------------------------------
if with_spi_flash:
from litespi.modules import MX25L12833F
from litespi.opcodes import SpiNorFlashOpCodes as Codes
self.add_spi_flash(mode="4x", clk_freq=100_000, module=MX25L12833F(Codes.READ_4_4_4), with_master=True)
# Build -------------------------------------------------------------------------------------------- # Build --------------------------------------------------------------------------------------------
@ -113,12 +121,16 @@ def main():
parser.add_target_argument("--programmer", default="radiant", help="Programmer (radiant or ecpprog).") parser.add_target_argument("--programmer", default="radiant", help="Programmer (radiant or ecpprog).")
parser.add_target_argument("--address", default=0x0, help="Flash address to program bitstream at.") parser.add_target_argument("--address", default=0x0, help="Flash address to program bitstream at.")
parser.add_target_argument("--prog-target", default="direct", help="Programming Target (direct or flash).") parser.add_target_argument("--prog-target", default="direct", help="Programming Target (direct or flash).")
parser.add_target_argument("--with-spi-flash", action="store_true", help="Enable SPI Flash (MMAPed).")
parser.add_target_argument("--with-uartbone", action="store_true", help="Add UartBone on 1st serial.")
args = parser.parse_args() args = parser.parse_args()
soc = BaseSoC( soc = BaseSoC(
sys_clk_freq = args.sys_clk_freq, sys_clk_freq = args.sys_clk_freq,
device = args.device, device = args.device,
toolchain = args.toolchain, toolchain = args.toolchain,
with_spi_flash = args.with_spi_flash,
with_uartbone = args.with_uartbone,
**parser.soc_argdict **parser.soc_argdict
) )
builder = Builder(soc, **parser.builder_argdict) builder = Builder(soc, **parser.builder_argdict)
@ -128,7 +140,7 @@ def main():
if args.load: if args.load:
prog = soc.platform.create_programmer(args.prog_target, args.programmer) prog = soc.platform.create_programmer(args.prog_target, args.programmer)
if args.programmer == "ecpprog" and args.prog_target == "flash": if args.programmer == "ecpprog" and args.prog_target == "flash":
prog.flash(address=args.address, bitstream=builder.get_bitstream_filename(mode="sram")) prog.flash(args.address, builder.get_bitstream_filename(mode="sram"))
else: else:
prog.load_bitstream(builder.get_bitstream_filename(mode="sram")) prog.load_bitstream(builder.get_bitstream_filename(mode="sram"))