LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Openrisc > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: "Tomas Jonsson" <toj@s...>
    Date: Thu, 23 Oct 2003 21:32:17 +0200
    Subject: SV: [openrisc] prefetch problem
    Top

    
    When I digged into the new problem appeared after the caches was switched on
    I discoverred an SRAM controller bug (not opencore). I fixed that one and
    simulated further on. Now the first problem does not appear. When I am
    trying to insert the SRAM controller bug again and verify that the first
    problem not has something to do with the SRAM controller bug I cannot trig
    that thing again. Annoying!!!
    It is hard to tell if this caused the problem. I realy spend a lot of time
    in looking into it and I think I should have seen it if it was the SRAM
    controller bug in the first place. The SRAM controller bug did not have the
    same behaivour as the first bug. I will let you now if I hit it again.
    
    I am using an RTL simulator (Modelsim) and a development board. I am
    debugging on both environments.
    
    The only thing I have changed in ORPMON is the system frequency. To be sure
    of not get into timing problems I am only using 100/16MHz as system
    frequency.
    
    I am only using SRAM (no FLASH). The LD-file is included below. I am using
    the same UART base as you are.
    
    Thanks for your time
    Regards, Tomas Jonsson
    
    MEMORY
            {
            vectors : ORIGIN = 0x00000000, LENGTH = 0x00002000
            ram     : ORIGIN = 0x00002000, LENGTH = 0x00400000 - 0x00002000
            }
    
    SECTIONS
    {
            .vectors :
            {
            *(.crc)
            *(.vectors)
            } > vectors
    
            .text :
            {
            *(.text)
            } > ram
    
            .data :
            {
            *(.data)
            } > ram
    
            .rodata :
            {
            *(.rodata)
            } > ram
    
            .bss :
            {
            *(.bss)
            } > ram
    
            .stack :
            {
            *(.stack)
            _src_addr = .;
            } > ram
    }
    
    
    
    -----Ursprungligt meddelande-----
    Från: owner-openrisc@o...
    [mailto:owner-openrisc@o...]För Damjan Lampret
    Skickat: den 23 oktober 2003 13:35
    Till: openrisc@o...
    Ämne: Re: [openrisc] prefetch problem
    
    
    Tomas,
    
    what surprises me is that we have orpmon running on both development board
    and not to mention on real silicon implementation (an ASIC). In case you
    didn't change orpmon then it is really a little bit strange. Can you confirm
    you haven't changed orpmon. Can you send me your binary of orpmon and also
    explain your address space (particulary where do you have SRAM, Flash amd
    UART) - this should allow me to run your binary of orpmon on a similar
    environment - if that is going to work I'll ask you to send me your entire
    RTL environment. Can you also tell if you are running everything in RTL
    simulation (the output below is from RTL simulation?). Thanks.
    
    regards,
    Damjan
    
    ----- Original Message -----
    From: "Tomas Jonsson" <toj@s...>
    To: <openrisc@o...>
    Sent: Thursday, October 23, 2003 10:28 AM
    Subject: SV: [openrisc] prefetch problem
    
    
    >
    > I am not using the latest or1200 rtl but it is not old and I have checked
    if
    > you did some changes. Anyway I have checked out the latest code now and it
    > does not change anything. The same problem appears at the same time.
    >
    > I have also enabled the caches and it makes the program execute longer
    (6000
    > more instructions). The tick interrupt appears in another task. Ii seems
    > there is the same problem. I am exploring it right now and I will come
    back
    > to you.
    >
    > Regards, Tomas
    >
    > -----Ursprungligt meddelande-----
    > Från: owner-openrisc@o...
    > [mailto:owner-openrisc@o...]För Damjan Lampret
    > Skickat: den 23 oktober 2003 00:10
    > Till: openrisc@o...
    > Ämne: Re: [openrisc] prefetch problem
    >
    >
    > Hi Tomas,
    >
    > I'm curious, what happens if you enable instruction cache.
    >
    > And of course you are using the latest or1200 rtl, aren't you.
    >
    > regards,
    > Damjan
    >
    > ----- Original Message -----
    > From: "Tomas Jonsson" <toj@s...>
    > To: <openrisc@o...>
    > Cc: "Tomas Jonsson" <toj@s...>
    > Sent: Wednesday, October 22, 2003 11:45 PM
    > Subject: [openrisc] prefetch problem
    >
    >
    > >
    > > I have a problem that the last executed instruction is executed forever.
    > It
    > > happends in the uart_putc() function of orpmon. The uart_putc() has
    worked
    > > properly for several times but when a tick interrupt happends in the
    > middle
    > > of it the uart_putc() polling loop not work properly. See the
    instruction
    > > sequence below.
    > >
    > >
    > > 0xbad0 <uart_putc+124>: l.lbz r3,0x0(r5)
    > > 0xbad4 <uart_putc+128>: l.andi r3,r3,0x60
    > > ...
    > > 0xbbd4 <tick_interrupt+52>: l.jr r9
    > > 0xbbd8 <tick_interrupt+56>: l.addi r1,r1,0x4
    > > ...
    > > 0x2180 <_tick+244>: l.mfspr r31,r0,0x40
    > > 0x2184 <_tick+248>: l.lwz r31,0x74(r1)
    > > 0x2188 <_tick+252>: l.lwz r3,0x78(r1)
    > > 0x218c <_tick+256>: l.addi r1,r1,0x80
    > > 0x2190 <_tick+260>: l.rfe
    > >
    > > 0xbad8 <uart_putc+132>: l.sfne r3,r4
    > > 0xbadc <uart_putc+136>: l.bf 0xfffffffd
    > > 0xbae0 <uart_putc+140>: l.nop 0x0
    > >
    > > 0xbad0 <uart_putc+124>: l.lbz r3,0x0(r5)
    > > #(is the never ending instruction, 8c650000)
    > >
    > > #after this should the following instr had been executed but never did
    > > 0xbad4 <uart_putc+128>: l.andi r3,r3,0x60
    > > 0xbad8 <uart_putc+132>: l.sfne r3,r4
    > > 0xbadc <uart_putc+136>: l.bf 0xfffffffd
    > > 0xbae0 <uart_putc+140>: l.nop 0x0
    > > ... and so on.
    > >
    > > Another strange thing is that the CPU still is doing infinite
    instruction
    > > fetch accesses to address 0xbadc. They never stops even if the execution
    > of
    > > instructions seems to stop?!
    > >
    > > The caches are disabled. I have attached a wave dump.
    > >
    > > Please can someone help me?
    > > If you need more information do not hesitate to ask me.
    > >
    > > Best regards, Tomas Jonsson
    > >
    > >
    >
    > 
    >
    >
    >
    > 
    
    
    
    
    
    
    

    ReferenceAuthor
    Re: [openrisc] prefetch problemDamjan Lampret

    Follow upAuthor
    Re: [openrisc] prefetch problemDamjan Lampret

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.