Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎04-20-2015

ZC702 Linux Boots Inconsistently

Hi Everyone,


I have a ZC702 development board.  I built the FPGA image using the zc702 template in Vivado 2014.4.  I built the linux kernel by downloading from the xilinx site and using the 2014.4 branch (I turned on earlyprintk).  I built u-boot.  I grabbed an example uramdisk.image.gz from xilinx.  I am trying to boot using the JTAG interface.  I do as follows:


connect arm hw

dow FSBL.elf



dow -data system.dtb 0x2a00000

dow -data uramdisk.image.gz 0x2000000

dow -data uImage 0x3000000

dow u-boot



Then, I stop u-boot on the terminal by pressing a then, then I type on the terminal:


bootm 0x3000000 0x2000000 0x2a00000


Then, it boots, SOMETIMES!!!!  When it doesn't boot, it gets this far:


Starting kernel ...

Uncompressing Linux... done, booting the kernel.


Or, sometimes it says this:


Starting kernel ...

Uncompressing Linux... done, booting the kernel.

Error: unrecognized/unsupported machine ID (r1 = 0x701fe019).

Available machine support:

ID (hex)        NAME
ffffffff        Generic DT based system
ffffffff        ARM-Versatile Express
000008e0        ARM-Versatile Express
ffffffff        Xilinx Zynq Platform

Please check your kernel config and/or bootloader.


With this particular config, those are the only senarios that I have seen so far, but I was using the top of the xilinx kernel git branch to build the kernel, instead of the 2014.4 tag, and I saw very similar behavior.  Sometimes it would boot, other times it would kernel panic like this:


Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 3.18.0-xilinx-06500-g37e9221-dirty (me@my.machine) (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-23) ) #7 SMP PREEMPT Tue Apr 7 15:54:49 PDT 2015
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: xlnx,zynq-7000
bootconsole [earlycon0] enabled
cma: Reserved 16 MiB at 0x3f000000
Memory policy: Data cache writealloc
Unable to handle kernel paging request at virtual address 5fae9000
pgd = 40004000
[5fae9000] *pgd=00000000
Internal error: Oops - BUG: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 3.18.0-xilinx-06500-g37e9221-dirty #7
task: 4066f7e8 ti: 40664000 task.ti: 40664000
PC is at fdt_check_header+0x0/0x78
LR is at __unflatten_device_tree+0x1c/0xe8
pc : [<40460184>]    lr : [<40386280>]    psr: 200001d3
sp : 40665f40  ip : 406707fc  fp : 7effff40
r10: 406bf424  r9 : 4066f500  r8 : 40678e88
r7 : 5fae9000  r6 : 40649ab0  r5 : 4066c408  r4 : 40649ab0
r3 : 406cca24  r2 : 40649ab0  r1 : 406cca10  r0 : 5fae9000
Flags: nzCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
Control: 18c5387d  Table: 0000404a  DAC: 00000015
Process swapper (pid: 0, stack limit = 0x40664238)
Stack: (0x40665f40 to 0x40666000)
5f40: 00001000 00000007 406540b4 406cca10 7effff40 40649ab0 4066c408 406707bc
5f60: 406a0940 4064a6bc 406540b4 40632cb8 ffffffff 18c5387d ffffffff 40664038
5f80: 413fc090 4066c400 00000000 404658dc 4057b3ca 00000000 00000001 406a0800
5fa0: ffffffff 40664038 413fc090 4066c400 00000000 4062f924 00000000 00000000
5fc0: 00000000 00000000 00000000 40659788 00000000 406a0a94 4066c47c 40659784
5fe0: 406708cc 0000406a 413fc090 00000000 00000000 00008074 00000000 00000000
[<40460184>] (fdt_check_header) from [<40386280>] (__unflatten_device_tree+0x1c/0xe8)
[<40386280>] (__unflatten_device_tree) from [<4064a6bc>] (unflatten_device_tree+0x1c/0x34)
[<4064a6bc>] (unflatten_device_tree) from [<40632cb8>] (setup_arch+0x5d0/0x840)
[<40632cb8>] (setup_arch) from [<4062f924>] (start_kernel+0x8c/0x388)
[<4062f924>] (start_kernel) from [<00008074>] (0x8074)
Code: e1d400bc 17e201d0 11800180 e8bd8010 (e5903000)
---[ end trace cb88537fdc8fa200 ]---
Kernel panic - not syncing: Attempted to kill the idle task!
---[ end Kernel panic - not syncing: Attempted to kill the idle task!


The only indication that anything is wrong, is when I run u-boot, it says (notice warning in bold):



U-Boot 2015.01-03011-ga3b5f20 (Apr 01 2015 - 19:40:51)

Board:  Xilinx Zynq
I2C:   ready
DRAM:  ECC disabled 1 GiB
MMC:   zynq_sdhci: 0
SF: Detected N25Q128A with page size 256 Bytes, erase size 64 KiB, total 16 MiB
*** Warning - bad CRC, using default environment


I have tried booting the example image that comes on the SD card, and it always seems to boot fine.  Does anyone have any ideas why it boots properly sometimes, and not other times?  If I switch the board off, then on again, and immediatly try to reboot using the same exact files and commands, it may or may not work, seems to be random.




0 Kudos
2 Replies
Registered: ‎04-20-2015

Seems to work (like 5 times in a row) if I download load system.dtb at 0x1000000 instead of 0x2a00000.
0 Kudos
Xilinx Employee
Xilinx Employee
Registered: ‎09-10-2008

Hi Larry,

I don't know the size of the ramdisk for sure, but it appears when it uncompresses it likely steps on the device tree in memory. The kernel crash agrees with that also and moving the device tree lower than the ramdisk confirms it I believe.

I can't say why it does not do it consistently as that would make more sense.

0 Kudos