UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Observer c.gianni
Observer
3,668 Views
Registered: ‎03-01-2010

Finalizing device tree... flat tree at ... on Virtex5 FX130T custom board

Jump to solution

Hi, I'm trying to get linux working on my custom board. On it I have a V5 FX130T, 1 DDR2 chip from Micron and other stuff that I don't use at the moment.

 

I compiled the linux kernel following the instructions on http://xilinx.wikidot.com, with my own device tree, and using the standard virtex5_defconfig that I've found in the kernel.

 

I also use a ramdisk, so I've used the ramdisk.image.gz.

 

When I download and execute the kernel elf through XMD I got the following:

......................................................................................................................

zImage starting: loaded at 0x00800000 (sp: 0x00b41eb0)
Allocating 0x4e1e98 bytes for kernel ...
gunzipping (0x00000000 <- 0x0080d000:0x009d0d87)...done 0x3c14ec bytes
Attached initrd image at 0x009d1000-0x00b40f20
initrd head: 0x1f8b0808

Linux/PowerPC load: console=ttyUL0,115200 root=/dev/ram
Finalizing device tree... flat tree at 0xb4e300
...........................................................................................................................

 

and then nothing.

So I tried to debug by reading the __log_buf, and I got the following:

...........................................................................................................................

 

<6>[    0.000000] Using Xilinx Virtex440 machine description
<5>[    0.000000] Linux version 2.6.37 (root@carmine-VirtualBox) (gcc version 4.2.2) #28 PREEMPT Wed Sep 7 16:34:59 CEST 2011
<4>[    0.000000] Found initrd at 0xc09d1000:0xc0b40f20
<7>[    0.000000] Top of RAM: 0x8000000, Total RAM: 0x8000000
<7>[    0.000000] Memory hole size: 0MB
<4>[    0.000000] Zone PFN ranges:
<4>[    0.000000]   DMA      0x00000000 -> 0x00008000
<4>[    0.000000]   Normal   empty
<4>[    0.000000] Movable zone start PFN for each node
<4>[    0.000000] early_node_map[1] active PFN ranges
<4>[    0.000000]     0: 0x00000000 -> 0x00008000
<7>[    0.000000] On node 0 totalpages: 32768
<7>[    0.000000] free_area_init_node: node 0, pgdat c03b8340, node_mem_map c04e3000
<7>[    0.000000]   DMA zone: 256 pages used for memmap
<7>[    0.000000]   DMA zone: 0 pages reserved
<7>[    0.000000]   DMA zone: 32512 pages, LIFO batch:7
<6>[    0.000000] MMU: Allocated 1088 bytes of context maps for 255 contexts
<7>[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
<7>[    0.000000] pcpu-alloc: [0] 0
<4>[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
<5>[    0.000000] Kernel command line: console=ttyUL0,115200 root=/dev/ram
<6>[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
<6>[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
<6>[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
<6>[    0.000000] Memory: 120768k/131072k available (3676k kernel code, 10304k reserved, 172k data, 1151k bss, 164k init)
<6>[    0.000000] Kernel virtual memory layout:
<6>[    0.000000]   * 0xfffdf000..0xfffff000  : fixmap
<6>[    0.000000]   * 0xfde00000..0xfe000000  : consistent mem
<6>[    0.000000]   * 0xfde00000..0xfde00000  : early ioremap
<6>[    0.000000]   * 0xd1000000..0xfde00000  : vmalloc & ioremap
<6>[    0.000000] Preemptable hierarchical RCU implementation.
<6>[    0.000000]     RCU-based detection of stalled CPUs is disabled.
<6>[    0.000000]     Verbose stalled-CPUs detection is disabled.
<6>[    0.000000] NR_IRQS:512
<1>[    0.000000] Unable to handle kernel paging request for data at address 0x00040200
<1>[    0.000000] Faulting instruction address: 0xc02091b8
<4>[    0.000000] Oops: Kernel access of bad area, sig: 11 [#1]
<4>[    0.000000] PREEMPT Xilinx Virtex440
<0>[    0.000000] last sysfs file:
<4>[    0.000000] Modules linked in:
<4>[    0.000000] **bleep**: c02091b8 LR: c02091c4 CTR: c0376224
<4>[    0.000000] REGS: c03bde40 TRAP: 0300   Not tainted  (2.6.37)
<4>[    0.000000] MSR: 00021000 <ME,CE>  CR: 44004044  XER: 20000000
<4>[    0.000000] DEAR: 00040200, ESR: 00000000
<4>[    0.000000] TASK = c039a350[0] 'swapper' THREAD: c03bc000
<4>[    0.000000] GPR00: 00000063 c03bdef0 c039a350 00000009 c0340b20 c0b4f7e8 00004000 c03a8604
<4>[    0.000000] GPR08: 00000000 00000002 c02e0758 c03bc000 88004028 00000009 ffffffff ffefffff
<4>[    0.000000] GPR16: fbefdfff c039d488 c03283c0 00029000 00029000 00000000 c0000020 00000000
<4>[    0.000000] GPR24: 00000000 009d1000 00000e60 00000010 c03bdf28 c7ffef3c c0340b20 00040200
<4>[    0.000000] **bleep** [c02091b8] of_find_property+0x48/0xa4
<4>[    0.000000] LR [c02091c4] of_find_property+0x54/0xa4
<4>[    0.000000] Call Trace:
<4>[    0.000000] [c03bdef0] [c020919c] of_find_property+0x2c/0xa4 (unreliable)
<4>[    0.000000] [c03bdf10] [c0209224] of_get_property+0x10/0x34
<4>[    0.000000] [c03bdf20] [c0209390] of_device_is_compatible+0x24/0xa0
<4>[    0.000000] [c03bdf50] [c02094c0] of_match_node+0xb4/0xf4
<4>[    0.000000] [c03bdf70] [c0209f6c] of_find_matching_node+0x40/0xb0
<4>[    0.000000] [c03bdf90] [c0376250] xilinx_intc_init_tree+0x2c/0xc4
<4>[    0.000000] [c03bdfb0] [c0371638] init_IRQ+0x28/0x40
<4>[    0.000000] [c03bdfc0] [c036e930] start_kernel+0xe4/0x21c
<4>[    0.000000] [c03bdff0] [c0000074] _start+0x74/0xb8
<4>[    0.000000] Instruction dump:
<4>[    0.000000] 7cbc2b78 3be00000 41820064 38600001 4be250b9 83fd0010 2f9f0000 40be0014
<4>[    0.000000] 48000034 83ff000c 2f9f0000 419e0028 <807f0000> 7fc4f378 4be0a901 2f830000
<4>[    0.000000] ---[ end trace 31fd0ba7d8756001 ]---
<0>[    0.000000] Kernel panic - not syncing: Attempted to kill the idle task!
<4>[    0.000000] Call Trace:
<4>[    0.000000] [c03bdd50] [c00066cc] show_stack+0x44/0x16c (unreliable)
<4>[    0.000000] [c03bdd90] [c0035360] panic+0xac/0x1dc
<4>[    0.000000] [c03bdde0] [c0039e18] do_exit+0x248/0x254
<4>[    0.000000] [c03bde00] [c000ae04] die+0x1c8/0x1d0
<4>[    0.000000] [c03bde20] [c001199c] bad_page_fault+0xc0/0x108
<4>[    0.000000] [c03bde30] [c000d704] handle_page_fault+0x7c/0x80
<4>[    0.000000] --- Exception: 300 at of_find_property+0x48/0xa4
<4>[    0.000000]     LR = of_find_property+0x54/0xa4
<4>[    0.000000] [c03bdef0] [c020919c] of_find_property+0x2c/0xa4 (unreliable)
<4>[    0.000000] [c03bdf10] [c0209224] of_get_property+0x10/0x34
<4>[    0.000000] [c03bdf20] [c0209390] of_device_is_compatible+0x24/0xa0
<4>[    0.000000] [c03bdf50] [c02094c0] of_match_node+0xb4/0xf4
<4>[    0.000000] [c03bdf70] [c0209f6c] of_find_matching_node+0x40/0xb0
<4>[    0.000000] [c03bdf90] [c0376250] xilinx_intc_init_tree+0x2c/0xc4
<4>[    0.000000] [c03bdfb0] [c0371638] init_IRQ+0x28/0x40
<4>[    0.000000] [c03bdfc0] [c036e930] start_kernel+0xe4/0x21c
<4>[    0.000000] [c03bdff0] [c0000074] _start+0x74/0xb8
<0>[    0.000000] Rebooting in 180 seconds.

.....................................................................................................................

 

For completeness I send you my device tree file:

/dts-v1/;
/ {
    #address-cells = <1>;
    #size-cells = <1>;
    compatible = "xlnx,virtex440", "xlnx,virtex";
    dcr-parent = <&ppc440_0>;
    model = "testing";
    aliases {
        serial0 = &RS232;
    } ;
    chosen {
        bootargs = "console=ttyUL0,115200 root=/dev/ram";

        linux,stdout-path = "/plb@0/serial@84000000";


    } ;
    cpus {
        #address-cells = <1>;
        #cpus = <0x1>;
        #size-cells = <0>;
        ppc440_0: cpu@0 {
            #address-cells = <1>;
            #size-cells = <1>;
            clock-frequency = <400000000>;
            compatible = "PowerPC,440", "ibm,ppc440";
            d-cache-line-size = <0x20>;
            d-cache-size = <0x8000>;
            dcr-access-method = "native";
            dcr-controller ;
            device_type = "cpu";
            i-cache-line-size = <0x20>;
            i-cache-size = <0x8000>;
            model = "PowerPC,440";
            reg = <0>;
            timebase-frequency = <400000000>;
            xlnx,apu-control = <0x2000>;
            xlnx,apu-udi-0 = <0x0>;
            xlnx,apu-udi-1 = <0x0>;
            xlnx,apu-udi-10 = <0x0>;
            xlnx,apu-udi-11 = <0x0>;
            xlnx,apu-udi-12 = <0x0>;
            xlnx,apu-udi-13 = <0x0>;
            xlnx,apu-udi-14 = <0x0>;
            xlnx,apu-udi-15 = <0x0>;
            xlnx,apu-udi-2 = <0x0>;
            xlnx,apu-udi-3 = <0x0>;
            xlnx,apu-udi-4 = <0x0>;
            xlnx,apu-udi-5 = <0x0>;
            xlnx,apu-udi-6 = <0x0>;
            xlnx,apu-udi-7 = <0x0>;
            xlnx,apu-udi-8 = <0x0>;
            xlnx,apu-udi-9 = <0x0>;
            xlnx,dcr-autolock-enable = <0x1>;
            xlnx,dcu-rd-ld-cache-plb-prio = <0x0>;
            xlnx,dcu-rd-noncache-plb-prio = <0x0>;
            xlnx,dcu-rd-touch-plb-prio = <0x0>;
            xlnx,dcu-rd-urgent-plb-prio = <0x0>;
            xlnx,dcu-wr-flush-plb-prio = <0x0>;
            xlnx,dcu-wr-store-plb-prio = <0x0>;
            xlnx,dcu-wr-urgent-plb-prio = <0x0>;
            xlnx,dma0-control = <0x0>;
            xlnx,dma0-plb-prio = <0x0>;
            xlnx,dma0-rxchannelctrl = <0x1010000>;
            xlnx,dma0-rxirqtimer = <0x3ff>;
            xlnx,dma0-txchannelctrl = <0x1010000>;
            xlnx,dma0-txirqtimer = <0x3ff>;
            xlnx,dma1-control = <0x0>;
            xlnx,dma1-plb-prio = <0x0>;
            xlnx,dma1-rxchannelctrl = <0x1010000>;
            xlnx,dma1-rxirqtimer = <0x3ff>;
            xlnx,dma1-txchannelctrl = <0x1010000>;
            xlnx,dma1-txirqtimer = <0x3ff>;
            xlnx,dma2-control = <0x0>;
            xlnx,dma2-plb-prio = <0x0>;
            xlnx,dma2-rxchannelctrl = <0x1010000>;
            xlnx,dma2-rxirqtimer = <0x3ff>;
            xlnx,dma2-txchannelctrl = <0x1010000>;
            xlnx,dma2-txirqtimer = <0x3ff>;
            xlnx,dma3-control = <0x0>;
            xlnx,dma3-plb-prio = <0x0>;
            xlnx,dma3-rxchannelctrl = <0x1010000>;
            xlnx,dma3-rxirqtimer = <0x3ff>;
            xlnx,dma3-txchannelctrl = <0x1010000>;
            xlnx,dma3-txirqtimer = <0x3ff>;
            xlnx,endian-reset = <0x0>;
            xlnx,generate-plb-timespecs = <0x1>;
            xlnx,icu-rd-fetch-plb-prio = <0x0>;
            xlnx,icu-rd-spec-plb-prio = <0x0>;
            xlnx,icu-rd-touch-plb-prio = <0x0>;
            xlnx,interconnect-imask = <0xffffffff>;
            xlnx,mplb-allow-lock-xfer = <0x1>;
            xlnx,mplb-arb-mode = <0x0>;
            xlnx,mplb-awidth = <0x20>;
            xlnx,mplb-counter = <0x500>;
            xlnx,mplb-dwidth = <0x80>;
            xlnx,mplb-max-burst = <0x8>;
            xlnx,mplb-native-dwidth = <0x80>;
            xlnx,mplb-p2p = <0x0>;
            xlnx,mplb-prio-dcur = <0x2>;
            xlnx,mplb-prio-dcuw = <0x3>;
            xlnx,mplb-prio-icu = <0x4>;
            xlnx,mplb-prio-splb0 = <0x1>;
            xlnx,mplb-prio-splb1 = <0x0>;
            xlnx,mplb-read-pipe-enable = <0x1>;
            xlnx,mplb-sync-tattribute = <0x0>;
            xlnx,mplb-wdog-enable = <0x1>;
            xlnx,mplb-write-pipe-enable = <0x1>;
            xlnx,mplb-write-post-enable = <0x1>;
            xlnx,num-dma = <0x0>;
            xlnx,pir = <0xf>;
            xlnx,ppc440mc-addr-base = <0x0>;
            xlnx,ppc440mc-addr-high = <0x7ffffff>;
            xlnx,ppc440mc-arb-mode = <0x0>;
            xlnx,ppc440mc-bank-conflict-mask = <0x700000>;
            xlnx,ppc440mc-control = <0xf8d0008f>;
            xlnx,ppc440mc-max-burst = <0x8>;
            xlnx,ppc440mc-prio-dcur = <0x2>;
            xlnx,ppc440mc-prio-dcuw = <0x3>;
            xlnx,ppc440mc-prio-icu = <0x4>;
            xlnx,ppc440mc-prio-splb0 = <0x1>;
            xlnx,ppc440mc-prio-splb1 = <0x0>;
            xlnx,ppc440mc-row-conflict-mask = <0xfff80>;
            xlnx,ppcdm-asyncmode = <0x0>;
            xlnx,ppcds-asyncmode = <0x0>;
            xlnx,user-reset = <0x0>;
        } ;
    } ;
    ppc440mc_ddr2_0: memory@0 {
        device_type = "memory";
        reg = < 0x0 0x8000000 >;
    } ;
    plb_v46_0: plb@0 {
        #address-cells = <1>;
        #size-cells = <1>;
        compatible = "xlnx,plb-v46-1.04.a", "xlnx,plb-v46-1.00.a", "simple-bus";
        ranges ;
        RS232: serial@84000000 {
            clock-frequency = <100000000>;
            compatible = "xlnx,xps-uartlite-1.01.a", "xlnx,xps-uartlite-1.00.a";
            current-speed = <115200>;
            device_type = "serial";
            interrupt-parent = <&xps_intc_0>;
            interrupts = < 0 0 >;
            port-number = <0>;
            reg = < 0x84000000 0x400 >;
            xlnx,baudrate = <0x1c200>;
            xlnx,data-bits = <0x8>;
            xlnx,family = "virtex5";
            xlnx,odd-parity = <0x0>;
            xlnx,use-parity = <0x0>;
        } ;
        xps_bram_if_cntlr_1: xps-bram-if-cntlr@ffff8000 {
            compatible = "xlnx,xps-bram-if-cntlr-1.00.b", "xlnx,xps-bram-if-cntlr-1.00.a";
            reg = < 0xffff8000 0x8000 >;
            xlnx,family = "virtex5";
        } ;
        xps_intc_0: interrupt-controller@81800000 {
            #interrupt-cells = <0x2>;
            compatible = "xlnx,xps-intc-2.00.a", "xlnx,xps-intc-1.00.a";
            interrupt-controller ;
            reg = < 0x81800000 0x400 >;
            xlnx,kind-of-intr = <0x1>;
            xlnx,num-intr-inputs = <0x1>;
        } ;
    } ;
} ;

 

 

0 Kudos
1 Solution

Accepted Solutions
Observer c.gianni
Observer
4,534 Views
Registered: ‎03-01-2010

Re: Finalizing device tree... flat tree at ... on Virtex5 FX130T custom board

Jump to solution

Today I have tested my method on the ML507 and linux booted  correctly.

So I began a new project on ISE13 and done the same steps as before and now all works correctly.

The problem was that I was working on a design started in ISE 11 and then ported to ISE 13.

Now all runs ok!

View solution in original post

0 Kudos
3 Replies
Scholar austin
Scholar
3,664 Views
Registered: ‎02-27-2008

Re: Finalizing device tree... flat tree at ... on Virtex5 FX130T custom board

Jump to solution
c.g.

Have you verified all the hardware? Can you read and write to the memory you have? I think you need to be confident that the hardware platform is functioning before you try to bring up an operating system.

Are you able to get the operating system running on any other board?

Hardware/software problems are notorious, divide and conquer.
Austin Lesea
Principal Engineer
Xilinx San Jose
0 Kudos
Observer c.gianni
Observer
3,659 Views
Registered: ‎03-01-2010

Re: Finalizing device tree... flat tree at ... on Virtex5 FX130T custom board

Jump to solution

Hi, yes, I tried with a standalone application and also I performed the example memory test application and it's all right...

could anyone check my device tree to see if it lacks something?

 

Is it possible that I have to change something in the file virtex5_defconfig?

 

In order to get linux working do I have to include xps_timer in my ppc440 through xps? Is there a minimum hardware requirement to get it work?

0 Kudos
Observer c.gianni
Observer
4,535 Views
Registered: ‎03-01-2010

Re: Finalizing device tree... flat tree at ... on Virtex5 FX130T custom board

Jump to solution

Today I have tested my method on the ML507 and linux booted  correctly.

So I began a new project on ISE13 and done the same steps as before and now all works correctly.

The problem was that I was working on a design started in ISE 11 and then ported to ISE 13.

Now all runs ok!

View solution in original post

0 Kudos