FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
4965 Discussions

FPGA DE1-SoC Cyclone V Overlay Device Tree



I am trying to set the overlay device tree on Terasic Ubuntu 16.0 Desktop SD Card for programming the FPGA of DE1-SoC Cyclone V Terasic with MSEL to 00000
I have use the device tree sources socfpga_cyclone5_socdk.dts, socfpga_cyclone5_ghrd.dtsi, socfpga_cyclone5.dtsi, socfpga.dtsi from repository : kernel arm tree
There isn’t a problem with the static or base device tree soc_system.dtb located on the boot partition of the SD card. I can see the device-tree after boot on /proc/device-tree/soc/.
In socfpga_cyclone5_ghrd.dtsi file I have uncomment bridges nodes.
This is the element add to node soc in socfpga.dtsi:

base_fpga_region: base-fpga-region {
		 compatible = "fpga-region";
		 fpga-mgr = <&fpga_mgr0>;
		 fpga-bridges = <&fpga_bridge0>, <&fpga_bridge1>,
		       <&fpga_bridge2>, <&fpga_bridge3>;

		 #address-cells = <0x1>;
		 #size-cells = <0x1>;
		 ranges = <0x00000000 0x00000000 0xc0000000 0x20000000>,
		    <0x00000001 0x00000000 0xff200000 0x00200000>;

I have compiled socfpga_cyclone5_socdk.dts with dtc command and copy the blob file socfpga_cyclone5_socdk.dtb on boot partition of the SDCard.

The edition of the overlay device tree source de1soc.dts with the name de1soc.rbf of FPGA image :

/ {
 fragment@0 {
	target-path = "/soc/base-fpga-region";
	#address-cells = <1>;
	#size-cells = <1>;
	__overlay__ {
	   #address-cells = <1>;
	   #size-cells = <1>;

	   firmware-name = "de1soc.rbf";
	   config-complete-timeout-us = <30000000>;

Compilation command for de1soc.dts : dtc -O dtb -o de1soc.dtb -b 0 -@ de1soc.dts
While the system boot the message about FPGA manager & bridges is:

[ 1.914104] fpga_manager fpga0: Altera SOCFPGA FPGA Manager registered
[ 1.921251] altera_hps2fpga_bridge soc:fpgabridge@0: fpga bridge [hps2fpga] registered
[ 1.929390] altera_hps2fpga_bridge soc:fpgabridge@1: fpga bridge [lwhps2fpga] registered
[ 1.937688] altera_hps2fpga_bridge soc:fpgabridge@2: fpga bridge [fpga2hps] registered
[ 1.946043] altera_fpga2sdram_bridge soc:fpgabridge@3: fpga bridge [fpga2sdram] registered
[ 1.954299] altera_fpga2sdram_bridge soc:fpgabridge@3: driver initialized with handoff 00000000
[ 1.963314] fpga-region soc:base-fpga-region: FPGA Region probed

After boot Ubuntu Desktop on DE1-SoC from SDCard I have loaded the overlay device tree:
sudo cp de1soc.dtb /lib/firmware
convert de1soc.sof to rbf : quartus_cpf -c de1soc.sof de1soc.rbf
sudo cp de1soc.rbf /lib/firmware
mkdir /sys/kernel/config/device-tree/overlays/my_cv_fpga
ls /sys/kernel/config/device-tree/overlays/my_cv_fpga -> status, path and dtbo subfolders

sudo echo de1soc.dtb > /sys/kernel/config/device-tree/overlays/my_cv_fpga/path

I can see that the board begin the RBF file transfer but the Ubuntu System get to hang and I need to reboot the system

If I do cat de1soc.dtb > /sys/kernel/config/device-tree/overlays/my_cv_fpga/dtbo the result is the same.

With MSEL: 0000, FPGA is configured from HPS software like U-Boot and console-Linux, and with MSEL: 1010, FPGA is configured from HPS software like Linux. Perhaps the problem is that the MSEL must set to 01010, but then the system doesn’t boot, if that what changes I must do with the preloader and U-boot to boot with MSEL 01010. Some ideas about what is wrong?


0 Kudos
1 Reply

Hi Upna ,

Hoping you're doing well, i'd like to share with you the following link https://rocketboards.org/foswiki/Documentation/HOWTOCreateADeviceTree#Device_tree_overlay_method._AN...

which takes you to the proper documentation to implement a Device tree overlay in a Cyclone V step by step.

Please take a look at it and let me know any queries you may have.