Browse Source

fpga: quartus programming targets

H. Peter Anvin 3 years ago
parent
commit
9a9c1beba7
2 changed files with 18 additions and 0 deletions
  1. 4 0
      Makefile
  2. 14 0
      fpga/Makefile

+ 4 - 0
Makefile

@@ -19,3 +19,7 @@ local.clean:
 	rm -f *~ ./\#* \# *.bak
 
 local.spotless: local.clean
+
+# Programming the FPGA or flash
+program flash:
+	$(MAKE) -C fpga $@

+ 14 - 0
fpga/Makefile

@@ -12,6 +12,7 @@ QPRI    = --lower_priority
 QCPF	= $(QU)_cpf $(QPRI)
 QSH	= $(QU)_sh  $(QPRI)
 QSTA	= $(QU)_sta $(QPRI)
+QPGM    = $(QU)_pgm $(QPRI)
 
 # Common options for Quartus in-flow tools
 QOPT    = --write_settings_files=off $(QPRI)
@@ -54,6 +55,19 @@ $(outdir)/%.pow.rpt: $(outdir)/%.sta.rpt
 $(outdir)/%.jic:  %jic.cof $(outdir)/%.sof
 	$(QCPF) --convert $<
 
+# Programming targets. Environment JTAG_CABLE can override the default,
+# which is otherwise the first cable found.
+rpar := )
+JTAG_CABLE ?= $(shell jtagconfig --enum | sed -ne 's/^1$(rpar) //p')
+
+# Transient programming
+program:
+	$(QPGM) -c '$(JTAG_CABLE)' -m JTAG -o 'p;$(outdir)/$(PROJECT).sof'
+
+# Permanent programming in flash
+flash:
+	$(QPGM) -c '$(JTAG_CABLE)' -m JTAG -o 'pvbi;$(outdir)/$(PROJECT).jic'
+
 %.deps: %.qsf scripts/qsfdeps.pl
 	$(PERL) scripts/qsfdeps.pl $< $* > $@