BN"Quick steps to Build" may be inaccurate in Building fpga 231 webpage
Added by Bob Nayar 13 days ago
The Building fpga 231 webpage (at https://support.criticallink.com/redmine/projects/mityarm-5cs/wiki/Building_fpga_231) seems to have incorrect steps
For example, the Linux steps say:
Launch the Intel Embedded Command Shell from /opt/intelFPGA/23.1/embedded/embedded_command_shell.sh
There is no EMBEDDED folder in 23.1, only for 20.1
Bob N
Replies (22)
MF RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Mike Fiorenza 13 days ago
Bob,
Thanks for catching that. I've updated the page to point to the correct command shell that is available.
/opt/intelFPGA/23.1/nios2eds/nios2_command_shell.sh
- Mike
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 13 days ago
Thanks, Mike.
Using this shell allows me to successfully do the "make generate_from_tcl"
HOWEVER,
when I do a "make all", I get this error:
<stuff deleted>
2026.09.18.12:56:25 Info: p0: *********************
2026.09.18.12:56:25 Info: p0:
2026.09.18.12:56:25 Info: p0: "<b>fpga_ddr</b>" instantiated <b>altera_mem_if_ddr3_phy_core</b> "<b>p0</b>"
2026.09.18.12:56:25 Info: m0: "<b>fpga_ddr</b>" instantiated <b>altera_mem_if_ddr3_afi_mux</b> "<b>m0</b>"
ERROR: Cannot find sequencer/sequencer.elf
2026.09.18.12:56:27 Error: s0: Cannot find sequencer/sequencer.elf
2026.09.18.12:56:27 Error: s0: An error occurred
while executing
"error "An error occurred""
(procedure "_error" line 8)
invoked from within
"_error "Cannot find $seq_file""
("if" then script line 2)
invoked from within
"if {[file exists $seq_file] == 0} {
_error "Cannot find $seq_file"
}"
(procedure "alt_mem_if::util::seq_mem_size::get_max_memory_usage" line 14)
invoked from within
"alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequencer" "sequencer.elf""
invoked from within
"set calc_mem_size [alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequencer" "sequencer.elf"]]"
("if" then script line 2)
invoked from within
"if { !$do_only_rw_mgr_mc && !($bfm_mode || $hps_mode)} {
set calc_mem_size [alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequenc..."
(procedure "generate_qsys_sequencer_sw" line 943)
invoked from within
"generate_qsys_sequencer_sw $prepend_str $protocol $pre_compile_dir $fileset $inhdl_dir $rdimm $lrdimm 0 0 $nios_hex_file_name $ac_rom_init_file_name ..."
invoked from within
"set seq_mem_size_list [generate_qsys_sequencer_sw $prepend_str $protocol $pre_compile_dir $fileset $inhdl_dir $rdimm $lrdimm 0 0 $nios_hex_file_name ..."
("if" else script line 2)
invoked from within
"if {[::alt_mem_if::util::qini::qini_value alt_mem_if_seq_size_request 0] > 0} {
set seq_mem_size [::alt_mem_if::util::qini::qini_value alt_mem_if_se..."
(procedure "alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer" line 238)
invoked from within
"alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer "${name}" $protocol $tmpdir $fileset {}"
invoked from within
"set qsys_sequencer_files_list [alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer "${name}" $protocol $tmpdir $fileset {}]"
(procedure "alt_mem_if::gen::uniphy_gen::generate_sequencer_files" line 3)
invoked from within
"alt_mem_if::gen::uniphy_gen::generate_sequencer_files $name "DDR3" $tmpdir QUARTUS_SYNTH"
invoked from within
"foreach generated_file [alt_mem_if::gen::uniphy_gen::generate_sequencer_files $name "DDR3" $tmpdir QUARTUS_SYNTH] {
set file_name [file tail $genera..."
(procedure "generate_synth" line 8)
invoked from within
"generate_synth dev_5cs_fpga_ddr_s0"
2026.09.18.12:56:27 Info: s0: "<b>fpga_ddr</b>" instantiated <b>altera_mem_if_ddr3_qseq</b> "<b>s0</b>"
2026.09.18.12:56:27 Error: Generation stopped, 241 or more modules remaining
2026.09.18.12:56:27 Info: dev_5cs: Done "<b>dev_5cs</b>" with 86 modules, 77 files
2026.09.18.12:56:30 Error: qsys-generate failed with exit code 1: 3 Errors, 12 Warnings
2026.09.18.12:56:30 Info: Finished: <b>Create HDL design files for synthesis</b>
make: *** [Makefile:263: stamp/qsys.stamp] Error 3
Please advise.
I know that WSL is set to Version 1
Thanks.
Bob N
MF RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Mike Fiorenza 13 days ago
Bob,
Can you provide the output of the following in WSL:
which wsl which make which dos2unix wsl -l -v
Can you also provide the full log rather than the trimmed version? The part you cut is where qsys-generate reports how it invoked the Nios II shell, and that's the piece I'm missing.
- Mike
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 13 days ago
nayar@GDZTHGC4E:~$ which wsl
/usr/bin/wsl
nayar@GDZTHGC4E:~$ which make
/usr/bin/make
nayar@GDZTHGC4E:~$ which dos2unix
/usr/bin/dos2unix
nayar@GDZTHGC4E:~$ wsl -l -v
Unknown command: -l
NAME STATE VERSION
- Ubuntu-20.04 Running 1
Ubuntu Stopped 2
Full logs:
nayar@GDZTHGC4E:/mnt/c/C10_CriticalLink/dev_5csx_h6_42a$ make all
qsys-generate dev_5cs.qsys --synthesis=VHDL
2026.09.18.14:37:13 Info: Saving generation log to /mnt/c/C10_CriticalLink/dev_5csx_h6_42a/dev_5cs/dev_5cs_generation.rpt
2026.09.18.14:37:13 Info: Starting: <b>Create HDL design files for synthesis</b>
2026.09.18.14:37:13 Info: qsys-generate /mnt/c/C10_CriticalLink/dev_5csx_h6_42a/dev_5cs.qsys --synthesis=VHDL --output-directory=/mnt/c/C10_CriticalLink/dev_5csx_h6_42a/dev_5cs/synthesis --family="Cyclone V" --part=5CSXFC6C6U23C7
2026.09.18.14:37:13 Info: Loading dev_5csx_h6_42a/dev_5cs.qsys
2026.09.18.14:37:13 Info: Reading input file
2026.09.18.14:37:13 Info: Adding check_0 [mem_check 1.0]
2026.09.18.14:37:13 Info: Parameterizing module check_0
2026.09.18.14:37:13 Info: Adding clk_100Mhz [clock_source 23.1]
2026.09.18.14:37:13 Info: Parameterizing module clk_100Mhz
2026.09.18.14:37:13 Info: Adding fpga_ddr [altera_mem_if_ddr3_emif 23.1]
2026.09.18.14:37:13 Info: Parameterizing module fpga_ddr
2026.09.18.14:37:13 Info: Adding hps_0 [altera_hps 23.1]
2026.09.18.14:37:13 Info: Parameterizing module hps_0
2026.09.18.14:37:13 Info: Adding mm_clock_crossing_bridge_0 [altera_avalon_mm_clock_crossing_bridge 23.1]
2026.09.18.14:37:13 Info: Parameterizing module mm_clock_crossing_bridge_0
2026.09.18.14:37:13 Info: Adding pio_0 [altera_avalon_pio 23.1]
2026.09.18.14:37:13 Info: Parameterizing module pio_0
2026.09.18.14:37:13 Info: Adding pio_1 [altera_avalon_pio 23.1]
2026.09.18.14:37:13 Info: Parameterizing module pio_1
2026.09.18.14:37:13 Info: Adding pio_2 [altera_avalon_pio 23.1]
2026.09.18.14:37:13 Info: Parameterizing module pio_2
2026.09.18.14:37:13 Info: Adding pio_3 [altera_avalon_pio 23.1]
2026.09.18.14:37:13 Info: Parameterizing module pio_3
2026.09.18.14:37:13 Info: Adding sysid_qsys [altera_avalon_sysid_qsys 23.1]
2026.09.18.14:37:13 Info: Parameterizing module sysid_qsys
2026.09.18.14:37:13 Info: Building connections
2026.09.18.14:37:13 Info: Parameterizing connections
2026.09.18.14:37:13 Info: Validating
2026.09.18.14:37:18 Info: Done reading input file
2026.09.18.14:37:19 Warning: dev_5cs.dev_5cs: Module dependency loop involving: "check_0" (mem_check 1.0), "hps_0" (altera_hps 23.1)
2026.09.18.14:37:19 Warning: dev_5cs.dev_5cs: Module dependency loop involving: "check_0" (mem_check 1.0), "hps_0" (altera_hps 23.1)
2026.09.18.14:37:19 Info: dev_5cs.check_0.wr: You have selected a length width that spans a larger transfer size than is addressable by the master port. Reducing the length width will improve the Fmax of this component.
2026.09.18.14:37:19 Warning: dev_5cs.check_0.rd_dis: Interrupt sender <b>rd_dis.csr_irq</b> is not connected to an interrupt receiver
2026.09.18.14:37:19 Warning: dev_5cs.check_0.wr_dis: Interrupt sender <b>wr_dis.csr_irq</b> is not connected to an interrupt receiver
2026.09.18.14:37:19 Warning: dev_5cs.fpga_ddr: ODT is disabled. Enabling ODT (Mode Register 1) may improve signal integrity
2026.09.18.14:37:19 Warning: dev_5cs.fpga_ddr: 'Quick' simulation modes are NOT timing accurate. Some simulation memory models may issue warnings or errors
2026.09.18.14:37:19 Warning: dev_5cs.fpga_ddr.pll_bridge: <b>pll_bridge.pll_sharing</b> cannot be both connected and exported
2026.09.18.14:37:19 Info: dev_5cs.hps_0: HPS Main PLL counter settings: n = 0 m = 63
2026.09.18.14:37:19 Info: dev_5cs.hps_0: HPS peripherial PLL counter settings: n = 0 m = 39
2026.09.18.14:37:19 Info: dev_5cs.hps_0: ECC will be enabled in the preloader because an interface width of 24 or 40 has been chosen.
2026.09.18.14:37:19 Info: dev_5cs.pio_0: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation.
2026.09.18.14:37:19 Info: dev_5cs.pio_1: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation.
2026.09.18.14:37:19 Info: dev_5cs.pio_2: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation.
2026.09.18.14:37:19 Info: dev_5cs.pio_3: PIO inputs are not hardwired in test bench. Undefined values will be read from PIO inputs during simulation.
2026.09.18.14:37:19 Info: dev_5cs.sysid_qsys: System ID is not assigned automatically. Edit the System ID parameter to provide a unique ID
2026.09.18.14:37:19 Info: dev_5cs.sysid_qsys: Time stamp will be automatically updated when this component is generated.
2026.09.18.14:37:19 Warning: dev_5cs.fpga_ddr: <b>fpga_ddr.pll_sharing</b> must be exported, or connected to a matching conduit.
2026.09.18.14:39:16 Info: dev_5cs: Generating <b>dev_5cs</b> "<b>dev_5cs</b>" for QUARTUS_SYNTH
2026.09.18.14:39:20 Info: Interconnect is inserted between master mm_clock_crossing_bridge_0.m0 and slave fpga_ddr.avl because the master has burstcount signal 1 bit wide, but the slave is 3 bit wide.
2026.09.18.14:39:20 Info: Interconnect is inserted between master mm_clock_crossing_bridge_0.m0 and slave fpga_ddr.avl because the master has address signal 28 bit wide, but the slave is 26 bit wide.
2026.09.18.14:39:20 Info: Interconnect is inserted between master mm_clock_crossing_bridge_0.m0 and slave fpga_ddr.avl because the master has byteenable signal 4 bit wide, but the slave is 0 bit wide.
2026.09.18.14:39:20 Info: Interconnect is inserted between master mm_clock_crossing_bridge_0.m0 and slave fpga_ddr.avl because the master has debugaccess signal 1 bit wide, but the slave is 0 bit wide.
2026.09.18.14:39:21 Warning: hps_0.f2h_irq0: Cannot connect clock for <b>irq_mapper.sender</b>
2026.09.18.14:39:21 Warning: hps_0.f2h_irq0: Cannot connect reset for <b>irq_mapper.sender</b>
2026.09.18.14:39:21 Warning: hps_0.f2h_irq1: Cannot connect clock for <b>irq_mapper_001.sender</b>
2026.09.18.14:39:21 Warning: hps_0.f2h_irq1: Cannot connect reset for <b>irq_mapper_001.sender</b>
2026.09.18.14:39:25 Info: check_0: "<b>dev_5cs</b>" instantiated <b>mem_check</b> "<b>check_0</b>"
2026.09.18.14:39:26 Info: fpga_ddr: "<b>dev_5cs</b>" instantiated <b>altera_mem_if_ddr3_emif</b> "<b>fpga_ddr</b>"
2026.09.18.14:39:26 Info: hps_0: "Running for module: hps_0"
2026.09.18.14:39:26 Info: hps_0: HPS Main PLL counter settings: n = 0 m = 63
2026.09.18.14:39:26 Info: hps_0: HPS peripherial PLL counter settings: n = 0 m = 39
2026.09.18.14:39:27 Info: hps_0: ECC will be enabled in the preloader because an interface width of 24 or 40 has been chosen.
2026.09.18.14:39:27 Info: hps_0: "<b>dev_5cs</b>" instantiated <b>altera_hps</b> "<b>hps_0</b>"
2026.09.18.14:39:27 Info: mm_clock_crossing_bridge_0: "<b>dev_5cs</b>" instantiated <b>altera_avalon_mm_clock_crossing_bridge</b> "<b>mm_clock_crossing_bridge_0</b>"
2026.09.18.14:39:27 Info: pio_0: Starting RTL generation for module 'dev_5cs_pio_0'
2026.09.18.14:39:27 Info: pio_0: Generation command is [exec /home/nayar/intelFPGA/23.1std/quartus/linux64/perl/bin/perl I /home/nayar/intelFPGA/23.1std/quartus/linux64/perl/lib -I /home/nayar/intelFPGA/23.1std/quartus/sopc_builder/bin/europa -I /home/nayar/intelFPGA/23.1std/quartus/sopc_builder/bin -I /home/nayar/intelFPGA/23.1std/quartus/../ip/altera/sopc_builder_ip/common -I /home/nayar/intelFPGA/23.1std/quartus/../ip/altera/sopc_builder_ip/altera_avalon_pio - /home/nayar/intelFPGA/23.1std/quartus/../ip/altera/sopc_builder_ip/altera_avalon_pio/generate_rtl.pl --name=dev_5cs_pio_0 --dir=/tmp/alt0714_6377484093029951334.dir/0003_pio_0_gen/ --quartus_dir=/home/nayar/intelFPGA/23.1std/quartus --verilog --config=/tmp/alt0714_6377484093029951334.dir/0003_pio_0_gen//dev_5cs_pio_0_component_configuration.pl --do_build_sim=0 ]
2026.09.18.14:39:28 Info: pio_0: Done RTL generation for module 'dev_5cs_pio_0'
2026.09.18.14:39:28 Info: pio_0: "<b>dev_5cs</b>" instantiated <b>altera_avalon_pio</b> "<b>pio_0</b>"
2026.09.18.14:39:28 Info: pio_3: Starting RTL generation for module 'dev_5cs_pio_3'
2026.09.18.14:39:28 Info: pio_3: Generation command is [exec /home/nayar/intelFPGA/23.1std/quartus/linux64/perl/bin/perl I /home/nayar/intelFPGA/23.1std/quartus/linux64/perl/lib -I /home/nayar/intelFPGA/23.1std/quartus/sopc_builder/bin/europa -I /home/nayar/intelFPGA/23.1std/quartus/sopc_builder/bin -I /home/nayar/intelFPGA/23.1std/quartus/../ip/altera/sopc_builder_ip/common -I /home/nayar/intelFPGA/23.1std/quartus/../ip/altera/sopc_builder_ip/altera_avalon_pio - /home/nayar/intelFPGA/23.1std/quartus/../ip/altera/sopc_builder_ip/altera_avalon_pio/generate_rtl.pl --name=dev_5cs_pio_3 --dir=/tmp/alt0714_6377484093029951334.dir/0004_pio_3_gen/ --quartus_dir=/home/nayar/intelFPGA/23.1std/quartus --verilog --config=/tmp/alt0714_6377484093029951334.dir/0004_pio_3_gen//dev_5cs_pio_3_component_configuration.pl --do_build_sim=0 ]
2026.09.18.14:39:29 Info: pio_3: Done RTL generation for module 'dev_5cs_pio_3'
2026.09.18.14:39:29 Info: pio_3: "<b>dev_5cs</b>" instantiated <b>altera_avalon_pio</b> "<b>pio_3</b>"
2026.09.18.14:39:29 Info: sysid_qsys: "<b>dev_5cs</b>" instantiated <b>altera_avalon_sysid_qsys</b> "<b>sysid_qsys</b>"
2026.09.18.14:39:30 Info: avalon_st_adapter: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:30 Info: mm_interconnect_0: "<b>dev_5cs</b>" instantiated <b>altera_mm_interconnect</b> "<b>mm_interconnect_0</b>"
2026.09.18.14:39:32 Info: avalon_st_adapter: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:32 Info: avalon_st_adapter_001: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:32 Info: avalon_st_adapter_002: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:32 Info: avalon_st_adapter_003: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:32 Info: avalon_st_adapter_004: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:32 Info: avalon_st_adapter_005: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:32 Info: mm_interconnect_1: "<b>dev_5cs</b>" instantiated <b>altera_mm_interconnect</b> "<b>mm_interconnect_1</b>"
2026.09.18.14:39:33 Info: avalon_st_adapter: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:33 Info: mm_interconnect_2: "<b>dev_5cs</b>" instantiated <b>altera_mm_interconnect</b> "<b>mm_interconnect_2</b>"
2026.09.18.14:39:33 Info: irq_mapper: "<b>dev_5cs</b>" instantiated <b>altera_irq_mapper</b> "<b>irq_mapper</b>"
2026.09.18.14:39:33 Info: irq_mapper_001: "<b>dev_5cs</b>" instantiated <b>altera_irq_mapper</b> "<b>irq_mapper_001</b>"
2026.09.18.14:39:33 Info: rst_controller: "<b>dev_5cs</b>" instantiated <b>altera_reset_controller</b> "<b>rst_controller</b>"
2026.09.18.14:39:33 Info: check: "<b>check_0</b>" instantiated <b>altera_avalon_data_pattern_checker</b> "<b>check</b>"
2026.09.18.14:39:33 Info: csr: "<b>check_0</b>" instantiated <b>altera_avalon_mm_bridge</b> "<b>csr</b>"
2026.09.18.14:39:33 Info: gen: "<b>check_0</b>" instantiated <b>altera_avalon_data_pattern_generator</b> "<b>gen</b>"
2026.09.18.14:39:33 Info: rd: "<b>check_0</b>" instantiated <b>dma_read_master</b> "<b>rd</b>"
2026.09.18.14:39:34 Info: rd_dis: "<b>check_0</b>" instantiated <b>modular_sgdma_dispatcher</b> "<b>rd_dis</b>"
2026.09.18.14:39:34 Info: wr: "<b>check_0</b>" instantiated <b>dma_write_master</b> "<b>wr</b>"
2026.09.18.14:39:35 Info: avalon_st_adapter: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:35 Info: mm_interconnect_0: "<b>check_0</b>" instantiated <b>altera_mm_interconnect</b> "<b>mm_interconnect_0</b>"
2026.09.18.14:39:37 Info: avalon_st_adapter: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:37 Info: avalon_st_adapter_001: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:37 Info: avalon_st_adapter_002: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:37 Info: avalon_st_adapter_003: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:37 Info: mm_interconnect_1: "<b>check_0</b>" instantiated <b>altera_mm_interconnect</b> "<b>mm_interconnect_1</b>"
2026.09.18.14:39:38 Info: avalon_st_adapter: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:38 Info: avalon_st_adapter_001: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:38 Info: avalon_st_adapter_002: Inserting error_adapter: error_adapter_0
2026.09.18.14:39:38 Info: mm_interconnect_2: "<b>check_0</b>" instantiated <b>altera_mm_interconnect</b> "<b>mm_interconnect_2</b>"
2026.09.18.14:39:39 Info: pll0: "<b>fpga_ddr</b>" instantiated <b>altera_mem_if_ddr3_pll</b> "<b>pll0</b>"
2026.09.18.14:39:39 Info: p0: Generating clock pair generator
2026.09.18.14:39:40 Info: p0: Generating dev_5cs_fpga_ddr_p0_altdqdqs
2026.09.18.14:39:59 Info: p0:
2026.09.18.14:39:59 Info: p0: *********************
2026.09.18.14:39:59 Info: p0:
2026.09.18.14:39:59 Info: p0: Remember to run the dev_5cs_fpga_ddr_p0_pin_assignments.tcl
2026.09.18.14:39:59 Info: p0: script after running Synthesis and before Fitting.
2026.09.18.14:39:59 Info: p0:
2026.09.18.14:39:59 Info: p0: *********************
2026.09.18.14:39:59 Info: p0:
2026.09.18.14:39:59 Info: p0: "<b>fpga_ddr</b>" instantiated <b>altera_mem_if_ddr3_phy_core</b> "<b>p0</b>"
2026.09.18.14:39:59 Info: m0: "<b>fpga_ddr</b>" instantiated <b>altera_mem_if_ddr3_afi_mux</b> "<b>m0</b>"
ERROR: Cannot find sequencer/sequencer.elf
2026.09.18.14:40:01 Error: s0: Cannot find sequencer/sequencer.elf
2026.09.18.14:40:01 Error: s0: An error occurred
while executing
"error "An error occurred""
(procedure "_error" line 8)
invoked from within
"_error "Cannot find $seq_file""
("if" then script line 2)
invoked from within
"if {[file exists $seq_file] == 0} {
_error "Cannot find $seq_file"
}"
(procedure "alt_mem_if::util::seq_mem_size::get_max_memory_usage" line 14)
invoked from within
"alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequencer" "sequencer.elf""
invoked from within
"set calc_mem_size [alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequencer" "sequencer.elf"]]"
("if" then script line 2)
invoked from within
"if { !$do_only_rw_mgr_mc && !($bfm_mode || $hps_mode)} {
set calc_mem_size [alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequenc..."
(procedure "generate_qsys_sequencer_sw" line 943)
invoked from within
"generate_qsys_sequencer_sw $prepend_str $protocol $pre_compile_dir $fileset $inhdl_dir $rdimm $lrdimm 0 0 $nios_hex_file_name $ac_rom_init_file_name ..."
invoked from within
"set seq_mem_size_list [generate_qsys_sequencer_sw $prepend_str $protocol $pre_compile_dir $fileset $inhdl_dir $rdimm $lrdimm 0 0 $nios_hex_file_name ..."
("if" else script line 2)
invoked from within
"if {[::alt_mem_if::util::qini::qini_value alt_mem_if_seq_size_request 0] > 0} {
set seq_mem_size [::alt_mem_if::util::qini::qini_value alt_mem_if_se..."
(procedure "alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer" line 238)
invoked from within
"alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer "${name}" $protocol $tmpdir $fileset {}"
invoked from within
"set qsys_sequencer_files_list [alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer "${name}" $protocol $tmpdir $fileset {}]"
(procedure "alt_mem_if::gen::uniphy_gen::generate_sequencer_files" line 3)
invoked from within
"alt_mem_if::gen::uniphy_gen::generate_sequencer_files $name "DDR3" $tmpdir QUARTUS_SYNTH"
invoked from within
"foreach generated_file [alt_mem_if::gen::uniphy_gen::generate_sequencer_files $name "DDR3" $tmpdir QUARTUS_SYNTH] {
set file_name [file tail $genera..."
(procedure "generate_synth" line 8)
invoked from within
"generate_synth dev_5cs_fpga_ddr_s0"
2026.09.18.14:40:01 Info: s0: "<b>fpga_ddr</b>" instantiated <b>altera_mem_if_ddr3_qseq</b> "<b>s0</b>"
2026.09.18.14:40:01 Error: Generation stopped, 241 or more modules remaining
2026.09.18.14:40:01 Info: dev_5cs: Done "<b>dev_5cs</b>" with 86 modules, 77 files
2026.09.18.14:40:02 Error: qsys-generate failed with exit code 1: 3 Errors, 12 Warnings
2026.09.18.14:40:02 Info: Finished: <b>Create HDL design files for synthesis</b>
make: *** [Makefile:263: stamp/qsys.stamp] Error 3
MF RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Mike Fiorenza 13 days ago
Bob,
Thanks for the log, I think this narrowed down your issue. Your Quartus is a Linux install running inside WSL, and Altera's nios2_command_shell.sh assumes WSL means a Windows install, so it puts the mingw32 toolchain on your PATH instead of the Linux one. Those directories don't exist in your install, so nios2-elf-gcc never gets found and the sequencer build silently produces nothing.
Launch the Nios II shell, then run the following:
which nios2-elf-gcc
My guess is this won't resolve. So export the following:
export PATH=$SOPC_KIT_NIOS2/bin/gnu/H-x86_64-pc-linux-gnu/bin:$PATH
Then run the following again:
which nios2-elf-gcc
This should now hopefully resolve. Then you can continue with the build.
- Mike
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 13 days ago
Actually, Mike.
I have Quartus 23.1 installed in both WSL and my Windows
The WSL install is in /home/nayar/intelFPGA/23.1 and the Windows install is in C:\intelFPGA\23.1std
and so, when I go a "which nios2-elf-gcc", I do get the correct resolved path:
nayar@GDZTHGC4E:/mnt/c/C10_CriticalLink/dev_5csx_h6_42a$ which nios2-elf-gcc
/home/nayar/intelFPGA/23.1std/nios2eds/bin/gnu/H-x86_64-pc-linux-gnu/bin/nios2-elf-gcc
So yeah, even after the export PATH commmand, I get the same issue
Bob N
MF RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Mike Fiorenza 13 days ago
Bob,
The following is my guess:
You needed WSL 1 for the Windows Quartus Nios II shell, but now that you've moved to a Linux Quartus install inside WSL, WSL 1 is likely working against you. You already have an Ubuntu distro on WSL 2, so it may be worth trying the Linux build over there.
- Mike
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 13 days ago
Mike, when you asked to do this command:
which nios2-elf-gcc
did you mean "which nios2-elf-gcc. exe " ?
Bob N
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 13 days ago
I am asking that because
"which nios2-elf-gcc" gives me nothing
but "which nios2-elf-gcc.exe" gives me /mnt/c/intelFPGA/23.1std/nios2eds/bin/gnu/H-x86_64-pc-linux-gnu/bin/nios2-elf-gcc.exe
Same for "Which quartus.exe".
Is this a clue?
BN
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 12 days ago
I re-installed WSL (deleting the Linux Quartus install), this time using Ubuntu 22.04
(I did not have the option of installing Ubuntu 20 and CriticalLink's website says that 22 is OK)
Try to start from the beginning now, because I want to document the steps.
I was able to progress in 'generate_from_tcl' by adding '.exe' to the tail of the following executables in the Makefile:
quartus_sh
qsys-script
My next question is:
Can these error messages below be ignored during the 'generate_from_tcl' process?:
ERROR: Device family can not be determined
ERROR: The minimum delay difference between CK and DQS must be less than or equal to the maximum delay difference between CK and DQS
Error: set_interface_property hps_io EXPORT_OF hps_0.hps_io: No interface named hps_0.hps_io.
Trying to see if these errors are causing the 'generate_from_tcl' process to fail like this:
make1: * [Makefile:563: qsys_generate_qsys] Error 1
make1: Leaving directory '/mnt/c/C10_CriticalLink/dev_5csx_h6_42a'
make: * [Makefile:575: generate_from_tcl] Error 2
Nevertheless, the QSYS file(s) are still generated
BN
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 11 days ago
Another that I get during 'generate_from_tcl' is:
Error: set_project_property DEVICE '5CSXFC6C6U23C7': The device '5CSXFC6C6U23C7' is unknown; reverted to the default device.
This error does not make my sense to me.
The consequences of this error seen when I do a 'make all' from this point on and I see this error:
Error: hps_0: Selected device '5CEBA2F17A7' is not an SoC device. Please choose a valid SoC device to use the Hard Processor System.
I don't know why I am getting the The device '5CSXFC6C6U23C7' is unknown error in the first place.
BN
MF RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Mike Fiorenza 9 days ago
Bob,
I have setup a Windows 11 machine here to try to match your configuration. Since you are trying to install Quartus in a way not recommended by Altera you are running into pathing issues I mentioned above where the Altera's scripts see WSL and assume a Windows installation where as that is not how you have it installed.
In order to get a Linux Installation working in WSL, you have to fix this pathing issue in the script to stop trying to source the Windows binaries (since you have the Linux version installed).
The best hack I have found to get your setup to work would be to symlink the Linux binaries to have .exe so it matches what the script expects. Run this in the Nios II command shell so the environment variable is properly set:
cd "$SOPC_KIT_NIOS2/bin/gnu/H-x86_64-pc-linux-gnu/bin" || exit for f in *; do [ -f "$f" ] && [ -x "$f" ] && ln -s "$f" "$f.exe"; done cd "$SOPC_KIT_NIOS2/sdk2/bin" || exit for f in *; do [ -f "$f" ] && [ -x "$f" ] && ln -s "$f" "$f.exe"; done
Doing the above allows me to compile our reference design start to finish in a Linux Quartus Install running inside WSL.
My recommendation would be to follow Altera's installation instructions for installing Windows Quartus version in Windows.
- Mike
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 9 days ago
Mike Fiorenza wrote in RE: "Quick steps to Build" may be inaccurate in Building ...:
Bob,
I have setup a Windows 11 machine here to try to match your configuration. Since you are trying to install Quartus in a way not recommended by Altera you are running into pathing issues I mentioned above where the Altera's scripts see WSL and assume a Windows installation where as that is not how you have it installed.
- Mike
Mike: I have removed the Linux installation from WSL.
I have Quartus installed only on Windows now.
BN
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 9 days ago
Mike: I actually have an interesting data point.
I can build the FPGA image completely using the Quartus 23.1std application in Windows
I think what happened earlier was that I had installed Quartus inside WSL as well as Windows and that's what caused all the problems to start with.
My main question to you know is:
What gets generated from the 'make generate_from_tcl' followed by 'make all' that I cannot generate using the Quartus 23.1std Windows application?
BN
MF RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Mike Fiorenza 9 days ago
Bob,
You were right, and the problem is on our end. Our wiki's Windows instructions for the Makefile flow cannot work, and following them is what sent you down this path. Sorry for the runaround.
The short version is that the Makefile is a Unix makefile. Line 10 is SHELL := /bin/bash and it shells out to sed, grep, find and so on throughout. On Windows the only bash is WSL, and the Nios II Command Shell our page points you at is just a wrapper that runs wsl bash -c. But Quartus launched from inside WSL cannot resolve the device, which is exactly the "'5CSXFC6C6U23C7' is unknown; reverted to the default device" you were seeing. I reproduced that here on a Windows 11 box running Quartus 23.1 Standard with Cyclone V device support definitely installed, so it was never a missing device pack. The same tools run natively on Windows resolve the part correctly.
So your instinct to build in the GUI was the right one. Here is the full flow, which I have now run end to end on a Windows machine:
1. FPGA image¶
Build the project in the Quartus GUI as you are doing. Then produce the .rbf either from File > Convert Programming Files, or from a normal Windows command prompt:
quartus_cpf -c output_files/dev_5cs.sof output_files/dev_5cs.rbf
Both the .sof and the .rbf should end up in output_files/.
2. Bootloader (u-boot + preloader)¶
This is the piece the GUI cannot produce, but you can build it in the WSL you already have. It does not use Quartus at all, so none of the WSL pathing problems apply. It only needs the hps_isw_handoff folder your Quartus build already created.
One time setup inside WSL:
sudo apt update sudo apt install -y git make python-is-python3 bc bison flex libssl-dev cd /tmp wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar.xz sudo tar xf gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar.xz -C /opt
Then, from your project directory in WSL:
export PATH=/opt/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin:$PATH make uboot
That produces software/preloader/u-boot-socfpga/u-boot-with-spl.sfp.
Two things worth knowing. The Makefile hardcodes the arm-none-linux-gnueabihf- prefix, so Ubuntu's gcc-arm-linux-gnueabihf package will not work, you need ARM's toolchain as above. And run make uboot from the full project directory, not from a folder containing only your build outputs, since the Makefile needs the .qsys present to configure itself.
3. SD card¶
make sd_image
This takes the u-boot image, the u-boot environment, the .rbf and a Yocto root filesystem tarball that you copy into the software/preloader folder. Note that our wiki currently names that tarball mitysom-image-base-mitysom-5cs.tar.gz but the Makefile looks for mitysom-image-base-mitysom-c5.tar.gz. If the name does not match, make just reports a missing tarball and does nothing.
What the Makefile handles that the GUI does not¶
To answer your earlier question directly: for the FPGA image itself, nothing. The GUI does the same work, qsys generation, synthesis, fitting and assembly. The Makefile is automation around it.
What it adds beyond that:
- The .rbf conversion, which is just
quartus_cpfas above. - U-Boot and the preloader, covered in step 2. This is the real one, and it is why you still need WSL for part of the flow.
- uBootMMCEnv.txt, the U-Boot environment for your specific SoM variant.
- Project regeneration.
make generate_from_tclrebuilds the .qsf, .qpf, dev_5cs_top.vhd and dev_5cs.qsys from the tcl scripts, parameterized by theSOM_MODELvariable at the top of the Makefile. That is how we produce the project for each of the six SoM variants we support.
On that last one, since you mentioned early on that you had made changes in Platform Designer: generate_from_tcl runs scrub_clean first, which deletes the .qsys, .qsf, .qpf, the generated top level and output_files. Any edits you have made in Platform Designer or to the pin assignments will be lost. If you already have a working project for your module, you do not need to run it at all.
I will update the wiki pages to reflect all of this. Thanks for sticking with it, you turned up several real problems in our documentation along the way.
- Mike
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 9 days ago
Thank you so much for this post, Mike.
It answers a ton of questions.
Bob N
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 9 days ago
Mike: I got all the steps done but I am stuck at the last one ( make sd_image )
Apparently, the "make_sd.sh" script does not seem to like Line-Feed/Carriage-Return symbols.
Look at the errors below:
_software/preloader/u-boot-socfpga/arch/arm/mach-socfpga/cv_bsp_generator/cv_bsp_generator.py
Generating file: software/preloader/u-boot-socfpga/board/cl/mitysom-5cs/qts/sdram_config.h...
Generating file: software/preloader/u-boot-socfpga/board/cl/mitysom-5cs/qts/pinmux_config.h...
Generating file: software/preloader/u-boot-socfpga/board/cl/mitysom-5cs/qts/pll_config.h
Reading file: hps_isw_handoff/dev_5cs_hps_0/dev_5cs_hps_0.hiof...
Generating file: software/preloader/u-boot-socfpga/board/cl/mitysom-5cs/qts/iocsr_config.h...
make CROSS_COMPILE=arm-none-linux-gnueabihf
make1: Entering directory '/mnt/c/C10_CriticalLink/Alfred_Test/software/preloader/u-boot-socfpga' #
- configuration written to .config
#
make1: Leaving directory '/mnt/c/C10_CriticalLink/Alfred_Test/software/preloader/u-boot-socfpga'
make CROSS_COMPILE=arm-none-linux-gnueabihf- DEVICE_TREE=socfpga_mitysom5csx-h6-42a_devkit -C software/preloader/u-boot-socfpga -j 48
make1: Entering directory '/mnt/c/C10_CriticalLink/Alfred_Test/software/preloader/u-boot-socfpga'
scripts/kconfig/conf --syncconfig Kconfig
CFG u-boot.cfg
GEN include/autoconf.mk.dep
CFG spl/u-boot.cfg
GEN include/autoconf.mk
GEN spl/include/autoconf.mk
ENVC include/generated/env.txt
UPD include/generated/timestamp_autogenerated.h
ENVP include/generated/env.in
ENVT include/generated/environment.h
CC arch/arm/mach-socfpga/wrap_pll_config.o
AR arch/arm/mach-socfpga/built-in.o
CC env/common.o
CC cmd/version.o
AR env/built-in.o
AR cmd/built-in.o
CC lib/efi_loader/dtbdump.o
CC lib/efi_loader/initrddump.o
LD lib/efi_loader/initrddump_efi.so
LD lib/efi_loader/dtbdump_efi.so
OBJCOPY lib/efi_loader/initrddump.efi
OBJCOPY lib/efi_loader/dtbdump.efi
LD u-boot
OBJCOPY u-boot.srec
OBJCOPY u-boot-nodtb.bin
SYM u-boot.sym
CAT u-boot-dtb.bin
CC spl/common/spl/spl.o
CC spl/arch/arm/mach-socfpga/wrap_pll_config.o
CC spl/arch/arm/mach-socfpga/wrap_iocsr_config.o
CC spl/arch/arm/mach-socfpga/wrap_pinmux_config.o
CC spl/arch/arm/mach-socfpga/wrap_sdram_config.o
AR spl/common/spl/built-in.o
AR spl/arch/arm/mach-socfpga/built-in.o
LD spl/u-boot-spl
OBJCOPY spl/u-boot-spl-nodtb.bin
SYM spl/u-boot-spl.sym
CAT spl/u-boot-spl-dtb.bin
COPY spl/u-boot-spl.bin
MKIMAGE spl/u-boot-spl.sfp
COPY u-boot.bin
MKIMAGE u-boot.img
MKIMAGE u-boot-dtb.img
SOCBOOT u-boot-with-spl.sfp
OFCHK .config
make1: Leaving directory '/mnt/c/C10_CriticalLink/Alfred_Test/software/preloader/u-boot-socfpga'
sed "s/mitysom5csx/mitysom5csx/" software/preloader/uBootMMCEnv.txt.orig >software/preloader/uBootMMCEnv.txt
sed -i "s/dev_5csx_h6_42a/dev_5cs/" software/preloader/uBootMMCEnv.txt
echo "clmodelnum=5CSX-H6-42A-RC" >> software/preloader/uBootMMCEnv.txt
software/preloader/u-boot-socfpga/tools/mkenvimage -s 8192 -o software/preloader/ubootenv.bin software/preloader/uBootMMCEnv.txt
./software/preloader/make_sd.sh -d CycloneV -u software/preloader/u-boot-socfpga/u-boot-with-spl.sfp -e software/preloader/ubootenv.bin -f output_files/dev_5cs.rbf -o software/preloader/sd_card.img software/preloader/mitysom-image-base-mitysom-c5.tar.gz
./software/preloader/make_sd.sh: line 2: $'\r': command not found
./software/preloader/make_sd.sh: line 5: $'\r': command not found
./software/preloader/make_sd.sh: line 9: $'\r': command not found
./software/preloader/make_sd.sh: line 13: syntax error near unexpected token `$'\r''
'/software/preloader/make_sd.sh: line 13: `die()
make: *** [Makefile:661: software/preloader/sd_card.img] Error 2_
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 8 days ago
OK. Ignore the last post. I used DOS2UNIX to fix the make_sd.sh script
Now when I did the make sd_image, I got the 1 GB image file, but I also got an error at the end:
bobnayar@GDZTHGC4E:/mnt/c/C10_CriticalLink/Alfred_Test$ make sd_imagesoftware/preloader/u-boot-socfpga/arch/arm/mach-socfpga/cv_bsp_generator/cv_bsp_generator.py
Generating file: software/preloader/u-boot-socfpga/board/cl/mitysom-5cs/qts/sdram_config.h...
Generating file: software/preloader/u-boot-socfpga/board/cl/mitysom-5cs/qts/pinmux_config.h...
Generating file: software/preloader/u-boot-socfpga/board/cl/mitysom-5cs/qts/pll_config.h
Reading file: hps_isw_handoff/dev_5cs_hps_0/dev_5cs_hps_0.hiof...
Generating file: software/preloader/u-boot-socfpga/board/cl/mitysom-5cs/qts/iocsr_config.h...
make CROSS_COMPILE=arm-none-linux-gnueabihf
make1: Entering directory '/mnt/c/C10_CriticalLink/Alfred_Test/software/preloader/u-boot-socfpga' #
- configuration written to .config
#
make1: Leaving directory '/mnt/c/C10_CriticalLink/Alfred_Test/software/preloader/u-boot-socfpga'
make CROSS_COMPILE=arm-none-linux-gnueabihf- DEVICE_TREE=socfpga_mitysom5csx-h6-42a_devkit -C software/preloader/u-boot-socfpga -j 48
make1: Entering directory '/mnt/c/C10_CriticalLink/Alfred_Test/software/preloader/u-boot-socfpga'
scripts/kconfig/conf --syncconfig Kconfig
CFG u-boot.cfg
GEN include/autoconf.mk.dep
CFG spl/u-boot.cfg
GEN include/autoconf.mk
GEN spl/include/autoconf.mk
ENVC include/generated/env.txt
UPD include/generated/timestamp_autogenerated.h
ENVP include/generated/env.in
ENVT include/generated/environment.h
CC arch/arm/mach-socfpga/wrap_pll_config.o
AR arch/arm/mach-socfpga/built-in.o
CC env/common.o
CC cmd/version.o
AR env/built-in.o
AR cmd/built-in.o
CC lib/efi_loader/dtbdump.o
CC lib/efi_loader/initrddump.o
LD lib/efi_loader/initrddump_efi.so
LD lib/efi_loader/dtbdump_efi.so
OBJCOPY lib/efi_loader/initrddump.efi
OBJCOPY lib/efi_loader/dtbdump.efi
LD u-boot
OBJCOPY u-boot.srec
OBJCOPY u-boot-nodtb.bin
SYM u-boot.sym
CAT u-boot-dtb.bin
CC spl/common/spl/spl.o
CC spl/arch/arm/mach-socfpga/wrap_pll_config.o
CC spl/arch/arm/mach-socfpga/wrap_iocsr_config.o
CC spl/arch/arm/mach-socfpga/wrap_pinmux_config.o
CC spl/arch/arm/mach-socfpga/wrap_sdram_config.o
AR spl/common/spl/built-in.o
AR spl/arch/arm/mach-socfpga/built-in.o
LD spl/u-boot-spl
OBJCOPY spl/u-boot-spl-nodtb.bin
SYM spl/u-boot-spl.sym
CAT spl/u-boot-spl-dtb.bin
COPY spl/u-boot-spl.bin
MKIMAGE spl/u-boot-spl.sfp
COPY u-boot.bin
MKIMAGE u-boot.img
MKIMAGE u-boot-dtb.img
SOCBOOT u-boot-with-spl.sfp
OFCHK .config
make1: Leaving directory '/mnt/c/C10_CriticalLink/Alfred_Test/software/preloader/u-boot-socfpga'
sed "s/mitysom5csx/mitysom5csx/" software/preloader/uBootMMCEnv.txt.orig >software/preloader/uBootMMCEnv.txt
sed -i "s/dev_5csx_h6_42a/dev_5cs/" software/preloader/uBootMMCEnv.txt
echo "clmodelnum=5CSX-H6-42A-RC" >> software/preloader/uBootMMCEnv.txt
software/preloader/u-boot-socfpga/tools/mkenvimage -s 8192 -o software/preloader/ubootenv.bin software/preloader/uBootMMCEnv.txt
./software/preloader/make_sd.sh -d CycloneV -u software/preloader/u-boot-socfpga/u-boot-with-spl.sfp -e software/preloader/ubootenv.bin -f output_files/dev_5cs.rbf -o software/preloader/sd_card.img software/preloader/mitysom-image-base-mitysom-c5.tar.gz
0+0 records in
0+0 records out
0 bytes copied, 0.0006485 s, 0.0 kB/s
Creating partitions
stdin:1: libguestfs: error: /usr/bin/supermin exited with error status 1.
To see full error messages you may need to enable debugging.
Do:
export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
and run the command again. For further information, read:
http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
You can also run 'libguestfs-test-tool' and post the complete output
into a bug report or message to the libguestfs mailing list.
make: *** [Makefile:661: software/preloader/sd_card.img] Error 1
MF RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Mike Fiorenza 8 days ago
Bob,
Thanks for posting the full output. I was able to reproduce both of these here.
1. Line endings¶
The repository stores make_sd.sh with Unix line endings. Git for Windows converts text files to Windows line endings on checkout by default (its core.autocrlf=true setting), which is most likely how your copy got them. dos2unix was the right fix.
One more file has the same problem, and this one fails silently: software/preloader/uBootMMCEnv.txt.orig. The Makefile builds the U-Boot environment, ubootenv.bin, from it. With Windows line endings, every variable ends up with a trailing carriage return, and U-Boot won't strip it. For example, mmcfpgaloc becomes /dev_5cs.rbf plus a carriage return. Please run:
dos2unix software/preloader/uBootMMCEnv.txt.orig
make sd_image regenerates ubootenv.bin from that file on every run, so nothing else needs cleaning up. Those are the only two files in the SD card flow that are affected. make handles the Makefile's line endings fine, and u-boot-socfpga was cloned inside WSL, so it already has Unix line endings.
2. libguestfs / supermin error¶
make_sd.sh builds the image with libguestfs. libguestfs does its work inside a small helper virtual machine, which it boots using the Linux kernel installed in /boot. WSL doesn't put a kernel there, so there is nothing to boot. If you run with LIBGUESTFS_DEBUG=1, the underlying message is "supermin: failed to find a suitable kernel". This is why our SD card page lists a Linux host.
You can work around it by installing a kernel package inside WSL just for libguestfs to use. WSL never boots it.
sudo DEBIAN_FRONTEND=noninteractive apt install -y linux-image-generic sudo chmod a+r /boot/vmlinuz* make sd_image
I ran exactly this here on Ubuntu 22.04 under WSL 1, as a regular user, from a project on /mnt/c. I then checked the resulting sd_card.img: it has the three partitions, with the .rbf on the FAT partition, u-boot-with-spl.sfp on the A2 partition and the environment right after the MBR, all matching the build outputs.
- Mike
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 8 days ago
Thank again, Mike.
I was able to generate a new SD image after going through your steps.
Can you please look at the attached screenshot to see if any of the messages at the end of the long make sd_image process mean anything negative?
Thanks.
Bob N
MF RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Mike Fiorenza 8 days ago
Bob,
The output attached appears to be of apt install linux-image-generic not make sd_image. If you're referring to the mdadm warnings at the end of the apt install, yes these are fine it's just stating that you don't have Linux RAID setup on your host (which is irrelevant here).
If make sd_image finished with "Generating .md5 file" and no make error with the sd_card.img in software/preloader then your image should be good.
- Mike
BN RE: "Quick steps to Build" may be inaccurate in Building fpga 231 webpage - Added by Bob Nayar 8 days ago
Thank you so much, Mike.
My SD card image works well
BN