cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Observer
Observer
7,368 Views
Registered: ‎01-20-2012

Petalinux 2015.2 with MIG memory causes Linux to hang on boot

Jump to solution

All,

 

I have a Zynq Design with extra MIG DDR memory exported by Vivado that results in a petalinux device tree entry as follows in pl.dtsi:

 

/ {
amba_pl: amba_pl {
   #address-cells = <1>;
   #size-cells = <1>;
   compatible = "simple-bus";
   ranges ;
   mig_x32_mig_7series_0: memory-controller@80000000 {
       compatible = "xlnx,mig-7series-2.3";
       device_type = "memory";
       reg = <0x80000000 0x40000000>;
   };
  };
};

 

We have tested the memory interface via standalone peripheral tests, and the memory interface is working correctly.

 

When I include the "mig_x32_mig_7_series_0" peripheral entry in my device tree, my Linux boot hangs.  If I comment out this entry, Linux boots successfully.

 

Is there an alternate way that this should be specified, or is there some additional parameters I should add to my system-top.dts file to allow Linux to boot?  Perhaps there is a Linux device driver that I am missing?

 

I can continue running with this commented out in pl.dtsi, however I dislike doing this as this file is automatically regenerated from PetaLinux under certain situations.

 

We are using Vivado 2015.2 as well as Petalinux 2015.2.

 

 

Thanks in advance for any suggestions or comments,

 

Brett Swimley

0 Kudos
Reply
1 Solution

Accepted Solutions
Highlighted
Xilinx Employee
Xilinx Employee
13,966 Views
Registered: ‎07-01-2010

@bswimley

 

You are seeing the hang because the PL clocks are disabled through the dts file.When there are no clocks enabled for the  peripherials you cannot access them and so it hangs.

&clkc {
 fclk-enable = <0x0>; -- this is a bug in Petalinux 2015.2
 ps-clk-frequency = <33333333>;
};

 

Once you enable the PL FCLKs using 0xf as shown below, you will be able to access the PL peripherials.

 

&clkc {
 fclk-enable = <0xf>;
 ps-clk-frequency = <33333333>;
};

 

This is a bug in 2015.2.

 

Hope this clarifies.

 

-Achutha

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------

View solution in original post

2 Replies
Highlighted
Observer
Observer
7,348 Views
Registered: ‎01-20-2012

Interestingly, I have found that adding the following to my system-top.dts device tree allows the Linux kernel to boot while including the MIG memory device in the device tree:

 

&clkc {
 fclk-enable = <0xf>;
 ps-clk-frequency = <33333333>;
};

 

The default value for fclk-enable is 0 (which is a change from older versions of PetaLinux).

 

I would appreciate any discussion as to why adding this entry fixes my issue.

 

Brett Swimley

 

Highlighted
Xilinx Employee
Xilinx Employee
13,967 Views
Registered: ‎07-01-2010

@bswimley

 

You are seeing the hang because the PL clocks are disabled through the dts file.When there are no clocks enabled for the  peripherials you cannot access them and so it hangs.

&clkc {
 fclk-enable = <0x0>; -- this is a bug in Petalinux 2015.2
 ps-clk-frequency = <33333333>;
};

 

Once you enable the PL FCLKs using 0xf as shown below, you will be able to access the PL peripherials.

 

&clkc {
 fclk-enable = <0xf>;
 ps-clk-frequency = <33333333>;
};

 

This is a bug in 2015.2.

 

Hope this clarifies.

 

-Achutha

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------

View solution in original post