Memec v4fx12lc - problem booting linux on ppc

alayrac christophe.alayrac at cresitt.com
Wed Nov 22 18:44:56 EST 2006


Hi Olivier,

If you carefuly follow BSP generation under XPS you should have a
directory in your XPS project like
ppc405_0\libsrc\linux_mvl31_v1_00_a\linux wich contain two directories
arch and drivers.

These directories should be copied in the kernel source (top directory).

If you have a quick look in the arch directory you should find something
like
arch\ppc\platforms\xilinx_ocp\xparameters_ml300.h

This header file declare all peripheral address of your design, and
redefines for Linux (and Uboot also).

If you don't have this files then it must be that the tcl script in the
bsp did not support your specific design. You can have a look in the
EDK\sw\ThirdParty\bsp\linux_mvl31_v1_01_b\data for more details.

You can have a look on Brigham Young University web site
http://splish.ee.byu.edu/projects/LinuxFPGA/index.htm for detailed
information on embeding linux on xilinx virtex fpga.

Regrads

Chris

CRESITT INDUSTRIE
12 Rue de Blois, BP6744
45067 ORLEANS Cedex 2
Tel : 02.38.49.45.59
Fax :02.38.49.45.55
Email : christophe.alayrac at cresitt.com 
Web : http://www.cresitt.com


<----> -----Message d'origine-----
<----> De : linuxppc-embedded-
<----> bounces+christophe.alayrac=cresitt.com at ozlabs.org
[mailto:linuxppc-
<----> embedded-bounces+christophe.alayrac=cresitt.com at ozlabs.org] De la
<----> part de Olivier GOUDARD
<----> Envoyé : mardi 21 novembre 2006 16:12
<----> À : Andrei Konovalov
<----> Cc : andy.gotz at esrf.fr; linuxppc-embedded at ozlabs.org
<----> Objet : Re: Memec v4fx12lc - problem booting linux on ppc
<----> 
<----> Dear Andrei,
<----> 
<----> Thanks for all details provided in your mail. It looks like we
have a
<----> lot to understand about the boot sequence.
<----> To answer your questions :
<----> 
<----> We created our own platform with xps.
<----> 
<----> We went throught the differents steps of the xps wizard to
impelment
<----> ppc, UART, EMAC, SDRAM and so on.
<----> Then, we generated the Linux Support Package and compiled the
<----> Montavista previewkit
<---->   with the generated files in linux/arch and linux/drivers  from
the
<----> Linux Support Package.
<----> 
<----> The montavista previewkit used is :
<----> insight_memec-2vp7fg456_rev4-previewkit-ppc_405
<----> 
<----> and this previewkit seems to be based on linux 2.4.20 version.
<----> 
<----> I'm not sure that we used propers xparameters<something_else>.h
file
<----> because I don't understand what you mean. I searched in my kernel
<----> sources to find xparam* but I was not successful.
<----> Can you enlighten my ignorance ?
<----> 
<----> I will check my UART configuration which seems to be very wrong !
:-)
<----> 
<----> Again many thanks you for your help,
<----> Best regards,
<----> 
<----> Olivier Goudard
<----> 
<----> 
<----> At 12:38 21/11/2006, Andrei Konovalov wrote:
<----> >Olivier,
<----> >
<----> >As you haven't seen *any* output from UART, it looks like
<----> >the problems start well before the bootwrapper passes
<----> >control to the linux kernel.
<----> >
<----> > > XMD% dow zImage.embedded
<----> > >         section, .text: 0x00400000-0x004048b0
<----> > >         section, .data: 0x00405000-0x004af000
<----> > >         section, .bss: 0x004af000-0x004b21e4
<----> >
<----> >- these three sections are not from the linux kernel;
<----> >this is the bootwrapper (see arch/ppc/boot/simple/).
<----> >As you can see, the bootwrapper's code is 18kBytes or so
<----> >(0x48b0) and is loaded 4MBytes above 0 (0x400000).
<----> >700kBytes (0xaa000) of .data contain the compressed kernel
<----> >plus some bootwrapper's stuff.
<----> >
<----> >The bootloader is linked together with the compressed kernel
image
<----> >(zvmlinux target in the arch/ppc/boot/simple/Makefile;
vmlinux.gz
<----> >is put into .image section which gets into .data according to
<----> >arch/ppc/boot/ld.script). The bootwrapper uncompresses the
kernel
<----> >to 0x00000000 and then passes control to the kernel.
<----> >
<----> > > XMD%
<----> > > Processor stopped at PC: 0x00401a10
<----> >
<----> >This address does not correspond to 0xc0001a10.
<----> >This is inside the bootwrapper, and MMU is still off.
<----> >You may want to disassemble zImage.embedded itself
<----> >to check what is at this address.
<----> >
<----> >If you look at arch/ppc/boot/simple/misc-embedded.c,
load_kernel()
<----> >you will notice, that before uncompressing the kernel
<----> >the bootwrapper sends the following to the 16x50-compatible UART
<----> >(this may be not true for UART Lite):
<----> >
<----> >   loaded at:     00400000 0053B13C
<----> >   board data at: 00539124 0053913C
<----> >   relocated to:  004051D4 004051EC
<----> >   zimage at:     00405A2D 00538651
<----> >   avail ram:     0053C000 04000000
<----> >
<----> >   Linux/PPC load: console=ttyS0,9600 ip=on root=/dev/nfs rw
<----> >   Uncompressing Linux...done
<----> >
<----> >Usually the board hangs after "Uncompressing Linux...done" :)
<----> >I.e. right after control is passed to vmlinux.
<----> >If you use 16x50-compatible UART, CONFIG_SERIAL_8250_CONSOLE
<----> >is defined, and you don't see "loaded at:" et al, then the
<----> >UART configuration in the kernel (and the bootwrapper) is
<----> >very wrong.
<----> >
<----> >Have you created your own platform or use existing
<----> xilinx_ml<something>?
<----> >Have you used the proper xparameters<something_else>.h file
<----> >to build the kernel?
<----> >And what kernel version is it BTW? (I was looking at 2.6 when
<----> >writing this message; 2.4 shouldn't be very different).
<----> >
<----> >Thanks,
<----> >Andrei
<----> >
<----> >Olivier Goudard wrote:
<----> >>Yoshio San,
<----> >>thank you for your reply. We tried what you suggest. Here is
the
<----> output
<----> >>from xmd :
<----> >>XMD% dow zImage.embedded
<----> >>         section, .text: 0x00400000-0x004048b0
<----> >>         section, .data: 0x00405000-0x004af000
<----> >>         section, .bss: 0x004af000-0x004b21e4
<----> >>Downloaded Program zImage.embedded
<----> >>Setting PC with program start addr = 0x00400000
<----> >>PC reset to 0x00400000, Clearing MSR Register
<----> >>XMD% run
<----> >>PC reset to 0x00400000, Clearing MSR Register
<----> >>Processor started. Type "stop" to stop processor
<----> >>RUNNING> stop
<----> >>XMD%
<----> >>XMD%
<----> >>Processor stopped at PC: 0x00401180
<----> >>XMD% run
<----> >>PC reset to 0x00400000, Clearing MSR Register
<----> >>Processor started. Type "stop" to stop processor
<----> >>RUNNING> stop
<----> >>XMD%
<----> >>XMD%
<----> >>Processor stopped at PC: 0x00401a18
<----> >>XMD% run
<----> >>PC reset to 0x00400000, Clearing MSR Register
<----> >>Processor started. Type "stop" to stop processor
<----> >>RUNNING> stop
<----> >>XMD%
<----> >>XMD%
<----> >>Processor stopped at PC: 0x00401180
<----> >>XMD% run
<----> >>PC reset to 0x00400000, Clearing MSR Register
<----> >>Processor started. Type "stop" to stop processor
<----> >>RUNNING> stop
<----> >>XMD%
<----> >>XMD%
<----> >>Processor stopped at PC: 0x00401a10
<----> >>The two address where the processor stops correspond to this
<----> assembler
<----> >>code :
<----> >>c0001100 <DTLBMiss>:
<----> >>c0001100:       7e 90 43 a6     mtsprg  0,r20
<----> >>c0001104:       7e b1 43 a6     mtsprg  1,r21
<----> >>c0001108:       7e d4 43 a6     mtsprg4 r22
<----> >>c000110c:       7e f5 43 a6     mtsprg5 r23
<----> >>c0001110:       7e a0 00 26     mfcr    r21
<----> >>c0001114:       7e d1 ea a6     mfpid   r22
<----> >>c0001118:       7e b7 43 a6     mtsprg7 r21
<----> >>c000111c:       7e d6 43 a6     mtsprg6 r22
<----> >>c0001120:       7e 95 f2 a6     mfdear  r20
<----> >>c0001124:       76 95 80 00     andis.  r21,r20,32768
<----> >>c0001128:       41 82 00 18     beq-    c0001140
<DTLBMiss+0x40>
<----> >>c000112c:       3e a0 c0 14     lis     r21,-16364
<----> >>c0001130:       62 b5 d0 00     ori     r21,r21,53248
<----> >>c0001134:       3a e0 00 00     li      r23,0
<----> >>c0001138:       7e f1 eb a6     mtpid   r23
<----> >>c000113c:       48 00 00 0c     b       c0001148
<DTLBMiss+0x48>
<----> >>c0001140:       7e b3 42 a6     mfsprg  r21,3
<----> >>c0001144:       82 b5 00 0c     lwz     r21,12(r21)
<----> >>c0001148:       3e b5 40 00     addis   r21,r21,16384
<----> >>c000114c:       52 95 65 3a     rlwimi  r21,r20,12,20,29
<----> >>c0001150:       82 b5 00 00     lwz     r21,0(r21)
<----> >>c0001154:       56 b6 00 27     rlwinm. r22,r21,0,0,19
<----> >>c0001158:       41 82 00 2c     beq-    c0001184
<DTLBMiss+0x84>
<----> >>c000115c:       3e d6 40 00     addis   r22,r22,16384
<----> >>c0001160:       52 96 b5 3a     rlwimi  r22,r20,22,20,29
<----> >>c0001164:       82 b6 00 00     lwz     r21,0(r22)
<----> >>c0001168:       72 b7 00 02     andi.   r23,r21,2
<----> >>c000116c:       41 82 00 18     beq-    c0001184
<DTLBMiss+0x84>
<----> >>c0001170:       62 b5 04 00     ori     r21,r21,1024
<----> >>c0001174:       92 b6 00 00     stw     r21,0(r22)
<----> >>c0001178:       3a c0 0c e2     li      r22,3298
<----> >>c000117c:       7e b5 b0 78     andc    r21,r21,r22
<----> >>c0001180:       48 00 0f e4     b       c0002164
<finish_tlb_load>
<----> >>c0001184:       7e d6 42 a6     mfspr   r22,278
<----> >>c0001188:       7e b7 42 a6     mfspr   r21,279
<----> >>c000118c:       7e d1 eb a6     mtpid   r22
<----> >>c0001190:       7e af f1 20     mtcr    r21
<----> >>c0001194:       7e f5 42 a6     mfspr   r23,277
<----> >>c0001198:       7e d4 42 a6     mfspr   r22,276
<----> >>c000119c:       7e b1 42 a6     mfsprg  r21,1
<----> >>c00011a0:       7e 90 42 a6     mfsprg  r20,0
<----> >>c00011a4:       4b ff f6 5c     b       c0000800 <DataAccess>
<----> >>and this :
<----> >>c0001a00 <Trap_1A>:
<----> >>c0001a00:       7e 90 43 a6     mtsprg  0,r20
<----> >>c0001a04:       7e b1 43 a6     mtsprg  1,r21
<----> >>c0001a08:       7e 80 00 26     mfcr    r20
<----> >>c0001a0c:       7e b2 42 a6     mfsprg  r21,2
<----> >>c0001a10:       2c 15 00 00     cmpwi   r21,0
<----> >>c0001a14:       40 82 00 0c     bne-    c0001a20 <Trap_1A+0x20>
<----> >>c0001a18:       3e a1 40 00     addis   r21,r1,16384
<----> >>c0001a1c:       3a b5 ff 40     addi    r21,r21,-192
<----> >>c0001a20:       92 95 00 a8     stw     r20,168(r21)
<----> >>c0001a24:       92 d5 00 68     stw     r22,104(r21)
<----> >>c0001a28:       92 f5 00 6c     stw     r23,108(r21)
<----> >>c0001a2c:       7e 90 42 a6     mfsprg  r20,0
<----> >>c0001a30:       92 95 00 60     stw     r20,96(r21)
<----> >>c0001a34:       7e d1 42 a6     mfsprg  r22,1
<----> >>c0001a38:       92 d5 00 64     stw     r22,100(r21)
<----> >>c0001a3c:       7e 88 02 a6     mflr    r20
<----> >>c0001a40:       92 95 00 a0     stw     r20,160(r21)
<----> >>c0001a44:       7e c9 02 a6     mfctr   r22
<----> >>c0001a48:       92 d5 00 9c     stw     r22,156(r21)
<----> >>c0001a4c:       7e 81 02 a6     mfxer   r20
<----> >>c0001a50:       92 95 00 a4     stw     r20,164(r21)
<----> >>c0001a54:       7e da 02 a6     mfsrr0  r22
<----> >>c0001a58:       3e 80 00 04     lis     r20,4
<----> >>c0001a5c:       7e fb 02 a6     mfsrr1  r23
<----> >>Unfortunately we are not linux kernel experts so we do not know
<----> what
<----> >>these two routines correspond to. Do you are anyone have an
idea.
<----> It
<----> >>looks like the linux kernel is stopping almost immediately i.e.
<----> before
<----> >>trying to do anything visible on the screen.
<----> >>Has anyone seen similar behaviour ? We are stuck with this
board
<----> and
<----> >>before we abandon the project (or change boards) we would like
to
<----> make a
<----> >>final attempt.
<----> >>Thanks for any help again
<----> >>Olivier
<----> >>
<----> >>>Olivier San,
<----> >>>
<----> >>>The address of each device driver of LSP of MontaVista Linux
and
<----> the
<----> >>>address of each IP of the generated circuit match?
<----> >>>
<----> >>>Although your detailed environment is not known, the general
way
<----> of
<----> >>>investigating is as follows.
<----> >>>
<----> >>>Check where the processor was stopped by the stop command and
the
<----> >>>processor has stopped after runing from xmd.
<----> >>>If compared with stopped address and the address of System.map
or
<----> >>>disassembling list of vmlinux, it should be able to be decided
by
<----> >>>which processing it has hangs.
<----> >>>Disassembling of vmlinux can be displayed by
powerpc-linux-objdump
<----> >>>-D vmlinux.
<----> >>>
<----> >>>Best Regards,
<----> >>>
<----> >>>Yoshio Kashiwagi - Nissin Systems
<----> >>>
<----> >>>>Hi,
<----> >>>>
<----> >>>>we have a v4fx12lc fpga board from memec which we are trying
to
<----> get
<----> >>>>Linux to boot on the ppc processor. We have generated a linux
<----> kernel
<----> >>>for
<----> >>>>nfs using the MontaVista support package. We generate a
bitfile
<----> with
<----> >>>the
<----> >>>>following hardware peripherals in it :
<----> >>>>
<----> >>>>RS232
<----> >>>>Ethernet_MAC
<----> >>>>Led_4bit
<----> >>>>Push_buttons_3bits
<----> >>>>DIP_switches_8bit
<----> >>>>OPB_INTC_0
<----> >>>>
<----> >>>>When we download the linux image with xmd we see nothing on
the
<----> screen.
<----> >>>>When we type "run" nothing appears on the screen and Linux
does
<----> not
<----> >>>>boot.
<----> >>>>
<----> >>>>Has anyone had a similar problem ? We are stuck! Any ideas
would
<----> be
<----> >>>>appreciated.
<----> >>>>
<----> >>>>We can boot a linux ramdisk kernel provided by Memec on the
same
<----> board
<----> >>>>using their bitfile. So the board seems to be working in
general.
<----> >>>>
<----> >>>>Thansk for any pointers and excuse us if we are posting to
the
<----> wrong
<----> >>>>list (this is the only list we could find which seemed
useful) !
<----> >>>>Olivier Goudard
<----> >>>
<----> >>_______________________________________________
<----> >>Linuxppc-embedded mailing list
<----> >>Linuxppc-embedded at ozlabs.org
<----> >>https://ozlabs.org/mailman/listinfo/linuxppc-embedded
<----> >
<----> >
<----> 
<----> 
<----> _______________________________________________
<----> Linuxppc-embedded mailing list
<----> Linuxppc-embedded at ozlabs.org
<----> https://ozlabs.org/mailman/listinfo/linuxppc-embedded




More information about the Linuxppc-embedded mailing list