- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Need help for this DTS/DTB generation error.
We are using this link as the base design:
https://rocketboards.org/foswiki/Projects/A10AVCVPCIeRootPortWithMSI
Then we added the FPGA DDR4 interface, "emif_0". We are having this DTS/DTB generation errors:
> sopc2dts -v -v --input ghrd_10as066n2.sopcinfo --output ghrd_10as066n2.dts --board hps_a10_common_board_info.xml --board ghrd_10as066n2_board_info.xml --bridge-removal all --clocks
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
> dtc -I dts -O dtb -o ghrd_10as066n2.dtb ghrd_10as066n2.dts
ERROR (phandle_references): Reference to non-existent node or label "emif_0_arch"
ERROR: Input tree has errors, aborting (use -f to force output)
Internet search showed instructions for custom IP, but error is from Intel EMIF IP.
Attaching the files that may be needed to check:
ghrd_10as066n2.qsys
subsys_pcie.qsys
ghrd_10as066n2.sopcinfo
ghrd_10as066n2.dts
dts_error.txt // error message log of sopc2dts and dtc commands
Thanks,
--barny
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Thanks for the link. Yes, also followed the Rocketboards procedure.
Following the suggested link above gave the same results as before.
Please see screen output below.
Thanks,
--barny
> embedded_command_shell.sh
------------------------------------------------
Intel FPGA Embedded Command Shell
Version 17.1 [Build 590]
------------------------------------------------
> sopc2dts -i ghrd_10as066n2.sopcinfo -o ghrd_10as066n2.dts \
-b ghrd_10as066n2_board_info.xml \
-b hps_a10_common_board_info.xml \
-b hps_a10_devkit_board_info.xml \
--bridge-removal all --clocks
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
Component emif_0 of class altera_emif is unknown
Component emif_0_arch of class altera_emif_arch_nf is unknown
Component emif_0_ecc_core of class altera_emif_ecc is unknown
Component emif_0_col_if of class altera_ip_col_if is unknown
Component emif_0_col_if_colmaster of class alt_mem_if_jtag_master is unknown
Component emif_0_cal_slave_component of class altera_emif_cal_slave_nf is unknown
> dtc -I dts -O dtb -o socfpga_arria10_socdk_sdmmc.dtb ghrd_10as066n2.dts
ERROR (phandle_references): Reference to non-existent node or label "emif_0_arch"
ERROR: Input tree has errors, aborting (use -f to force output)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Sir,
For the design, it already consist of the DDR4 which is HPS DDR4. So, I believe the emif_0 that you added is the FPGA EMIF.
Is this FPGA EMIF will used by your HPS system? If it is not use, then you can just delete those component emif_0* from the DTS file.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Thank you for the reply.
The project has two EMIFs:
HPS-EMIF 1GB: seen and used by Linux
FPGA-EMIF 2GB: not used by Linux, used by DMA engines for buffer.
- 2GB memory space needs to be allocated by Linux (Malloc(?)).
- h2f_axi_master (0xC000_0000) base address has < ~1GB range only to map
- Can use address spanner for SW checking of buffer states
Thanks,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Sir,
So emif_0 is the FPGA or HPS EMIF? If it is FPGA EMIF then you can just open the DTS in editor and delete the emif_0 line from there.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Thank you for the reply. Yes, emif_0 is FPGA EMIF.
If emif_0 is deleted, how will Linux see the resource? How can Linux allocate the 2GB space?
Thanks,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Sorry, need to correct my earlier statement.
HPS system will have access to FPGA EMIF. This is for the Linux drivers to allocate FPGA EMIF memory space for the DMA engines and to check the contents of the data buffer.
Main Linux OS will still run from HPS EMIF.
Thank you.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
looks like the system not recognize any driver for emif. But seem like you only need to access the FPGA EMIF from HPS as a flat memory, maybe you can try to modify the DTS to flat memory as below. See if you still can access the address from HPS.
// emif_0_ecc_core: unknown@0x100000040 {
// compatible = "unknown,unknown-16.1";
// reg = <0x00000001 0x00000040 0x40000000>;
// clocks = <&emif_0_arch 0>;
// }; //end unknown@0x100000040 (emif_0_ecc_core)
memory {
device_type = "memory";
reg = <0xc0000000 0x20000000>;
};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Thank you for the suggestion, tried it below:
// emif_0_ecc_core: unknown@0x100000040 {
// compatible = "unknown,unknown-16.1";
// reg = <0x00000001 0x00000040 0x40000000>;
// clocks = <&emif_0_arch 0>;
// }; //end unknown@0x100000040 (emif_0_ecc_core)
memory {
device_type = "memory";
reg = <0xc0000000 0x20000000>;
}; //end memory
It produced a warining:
>dtc -I dts -O dtb -o trial_20190325a.dtb ghrd_10as066n2_20190325.dts
Warning (reg_format): "reg" property in /sopc@0/bridge@0xc0000000/memory has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1)
Did somed edit (copied other entry under sopc@0):
memory {
device_type = "memory";
reg = <0x00000001 0xc0000000 0x20000000>;
}; //end memory
>dtc -I dts -O dtb -o trial_20190325a.dtb ghrd_10as066n2_20190325.dts
No more warning/error messages. Will try this in actual FPGA kit once project resources are returned.
Thank you very much for the help.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page