Skip to content

Commit e8f6439

Browse files
Agilex hps load image from SD Card (#3150)
Modify bootrom to load FW PAYLOAD from SD card in Agilex7 Add IRQ for SD card in altera APU
1 parent f14a5f8 commit e8f6439

23 files changed

+11456
-19
lines changed

corev_apu/altera/Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ all: create_project \
5252
write_source_files \
5353
write_timing_constraints \
5454
generate_ips \
55-
sta
55+
sta \
56+
rbf
5657

5758
clean:
5859
$(RM) -rf *.rpt *.chg smart.log *.htm *.eqn *.pin *.sof *.pof db incremental_db *.summary *.smsg *.jdi $(ASSIGNMENT_FILES)
@@ -164,12 +165,16 @@ sta: asm
164165
@echo "Running Quartus Timing Analysis"
165166
$(QUARTUS_PATH)quartus_sta $(PROJECT) --do_report_timing
166167

168+
rbf: sta
169+
@echo "Running Quartus Prime Programming File Generator"
170+
$(QUARTUS_PATH)/quartus_pfg -c output_files/*.sof output_files/cva6-hps.rbf -o hps_path=u-boot-spl-dtb.hex
171+
172+
167173
clean:
168174
@echo "Cleaning project files"
169175
rm -f $(PROJECT).qsf $(PROJECT).qpf $(PROJECT).map.rpt $(PROJECT).fit.rpt $(PROJECT).asm.rpt $(PROJECT).sta.rpt
170176
rm -f interconnect.qsys*
171177
rm -f *.backup
172-
rm -f *.hex
173178
rm -f *.txt
174179
rm -f *.ip
175180
rm -f ip/board.info

corev_apu/altera/ip/hps_cva6_altera.tcl

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
# Quartus Pro License required to use this file
21
package require -exact qsys 24.1
32

43
# create the system "system"
54
proc do_create_system {} {
65
# create the system
76
create_system system
87
set_project_property BOARD {default}
9-
set_project_property DEVICE {AGFB014R24A3E3V}
8+
set_project_property DEVICE {AGFB014R24B2E2V}
109
set_project_property DEVICE_FAMILY {Agilex 7}
1110
set_project_property HIDE_FROM_IP_CATALOG {false}
1211
set_use_testbench_naming_pattern 0 {}
@@ -291,7 +290,7 @@ proc do_create_system {} {
291290
set_component_parameter_value S2FINTERRUPT_I2CEMAC2_Enable {0}
292291
set_component_parameter_value S2FINTERRUPT_L4TIMER_Enable {0}
293292
set_component_parameter_value S2FINTERRUPT_NAND_Enable {0}
294-
set_component_parameter_value S2FINTERRUPT_SDMMC_Enable {0}
293+
set_component_parameter_value S2FINTERRUPT_SDMMC_Enable {1}
295294
set_component_parameter_value S2FINTERRUPT_SPIM0_Enable {0}
296295
set_component_parameter_value S2FINTERRUPT_SPIM1_Enable {0}
297296
set_component_parameter_value S2FINTERRUPT_SPIS0_Enable {0}
@@ -362,6 +361,14 @@ proc do_create_system {} {
362361
add_instantiation_interface_port hps_emif hps_emif_hps_to_emif hps_to_emif 4096 STD_LOGIC_VECTOR Output
363362
add_instantiation_interface_port hps_emif hps_emif_emif_to_gp emif_to_gp 1 STD_LOGIC Input
364363
add_instantiation_interface_port hps_emif hps_emif_gp_to_emif gp_to_emif 2 STD_LOGIC_VECTOR Output
364+
add_instantiation_interface h2f_sdmmc_interrupt interrupt INPUT
365+
set_instantiation_interface_parameter_value h2f_sdmmc_interrupt associatedAddressablePoint {}
366+
set_instantiation_interface_parameter_value h2f_sdmmc_interrupt associatedClock {}
367+
set_instantiation_interface_parameter_value h2f_sdmmc_interrupt associatedReset {}
368+
set_instantiation_interface_parameter_value h2f_sdmmc_interrupt bridgedReceiverOffset {0}
369+
set_instantiation_interface_parameter_value h2f_sdmmc_interrupt bridgesToReceiver {}
370+
set_instantiation_interface_parameter_value h2f_sdmmc_interrupt irqScheme {NONE}
371+
add_instantiation_interface_port h2f_sdmmc_interrupt s2f_sdmmc_irq irq 1 STD_LOGIC Output
365372
add_instantiation_interface hps_io conduit INPUT
366373
set_instantiation_interface_parameter_value hps_io associatedClock {}
367374
set_instantiation_interface_parameter_value hps_io associatedReset {}
@@ -2455,6 +2462,7 @@ proc do_create_system {} {
24552462
set_connection_parameter_value system_intel_cache_coherency_translator.m0/hps.f2h_axi_slave slaveDataWidthSysInfo {-1}
24562463

24572464
# add the exports
2465+
set_interface_property hps_h2f_sdmmc_interrupt EXPORT_OF hps.h2f_sdmmc_interrupt
24582466
set_interface_property hps_hps_io EXPORT_OF hps.hps_io
24592467
set_interface_property h2f_reset EXPORT_OF hps.h2f_reset
24602468
set_interface_property hps_h2f_axi_clock EXPORT_OF hps.h2f_axi_clock

corev_apu/altera/src/cva6_altera.sv

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,7 @@ cva6_peripherals #(
829829
// .eth_mdio,
830830
// .eth_mdc,
831831
.phy_tx_clk_i ( phy_tx_clk ),
832-
.sd_clk_i ( sd_clk_sys ),
832+
.sd_irq ( sd_irq ),
833833
// .spi_clk_o ( spi_clk_o ),
834834
// .spi_mosi ( spi_mosi ),
835835
// .spi_miso ( spi_miso ),
@@ -876,6 +876,7 @@ logic [31:0] calbus_rdata, calbus_rdata1;
876876
logic [4095:0] calbus_seq_param_tbl, calbus_seq_param_tbl1;
877877
logic cal_success;
878878
logic ddr_amm_wait_request;
879+
logic sd_irq;
879880

880881
assign ddr_amm_wait_request = ~ddr_amm_ready;
881882

@@ -1198,6 +1199,7 @@ axi_dw_adapter #(
11981199
);
11991200

12001201
system hps_minimal (
1202+
.hps_h2f_sdmmc_interrupt_irq(sd_irq), // output, width = 1
12011203
.hps_hps_io_EMAC0_TX_CLK (hps_emac0_TX_CLK), // output, width = 1, hps_hps_io.EMAC0_TX_CLK
12021204
.hps_hps_io_EMAC0_TXD0 (hps_emac0_TXD0), // output, width = 1, .EMAC0_TXD0
12031205
.hps_hps_io_EMAC0_TXD1 (hps_emac0_TXD1), // output, width = 1, .EMAC0_TXD1

corev_apu/altera/src/cva6_altera_peripherals.sv

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ module cva6_peripherals #(
5757
input logic spi_miso ,
5858
output logic spi_ss ,
5959
// SD Card
60-
input logic sd_clk_i ,
60+
input logic sd_irq ,
6161
output logic [7:0] leds_o ,
6262
input logic [7:0] dip_switches_i
6363
);
@@ -68,7 +68,8 @@ module cva6_peripherals #(
6868
logic [ariane_soc::NumSources-1:0] irq_sources;
6969

7070
// Unused interrupt sources
71-
assign irq_sources[ariane_soc::NumSources-1:7] = '0;
71+
assign irq_sources[ariane_soc::NumSources-1:8] = '0;
72+
assign irq_sources[7] = sd_irq;
7273

7374
REG_BUS #(
7475
.ADDR_WIDTH ( 32 ),

0 commit comments

Comments
 (0)