Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎09-19-2010

Linux on ZC702 Boots Randomly!



I have a ZC702 Board here and I am seeing a strange behavior by the board.


I am reporting here, may be some one has the same experience.


I boot Linux on the board using the JTAG interface.

The linux image that I use and the rootfs image are all those provided by xilinx.


So, with Digilent JTAG I load all of the files into memory and then U-boot gets executed and then

from U-boot linux will be run.


The strange behavior that I see , is that,

The linux some times boot, some times not!
(without changing any thing)


it just decompresses the kernel and then stops working completely.

Some other times, every thing goes well!!!


any body has noticed this?



Mohammad S Sadri.


0 Kudos
2 Replies
Xilinx Employee
Xilinx Employee
Registered: ‎09-10-2008

Hi Mohammad,

This makes sense if you are booting in the JTAG boot mode and with an SMP kernel.  The 1.0 silicon has a documented issue in that the 2nd CPU does not get setup correctly and then when the 1st CPU in Linux tries to boot it they can both crash.  There is a small stub that can be loaded into memory, start_cpu2.bin, and I'll attach it.  The only tricky part is connecting to the 2nd CPU with the JTAG. 


So before starting Linux, you need to load start_cpu2.bin into memory at 0xFFFFFF00, then start it by setting the PC to that address and letting it run.


Xmd> arm connect hw -debugdevice cpunr2

Xmd> dow -data start_cpu2.bin 0xFFFFFF00

Xmd> rwr pc 0xFFFFFF00

Xmd> con

Xmd> targets 64 (assuming you initially connected to the 1st cpu).

Xmd> now continue with stuff on 1st cpu

This issue does not exist in any other boot mode other than JTAG.  Booting Linux with only 1 cpu will also work (add maxcpus=1 on the kernel command line in the device tree).


Sorry for the hassle as I should have already documented that, it is documented in the Zynq errata I'm told.



0 Kudos
Xilinx Employee
Xilinx Employee
Registered: ‎09-10-2008

Looks like I forgot a space between cpunr and 2 in the command.
0 Kudos