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: "Robert Cragie" <rcc@j...>
    Date: Fri, 15 Aug 2003 19:04:54 +0100
    Subject: [openrisc] Problems debugging OpenRISC target
    Top

    I have looked into this in a bit more detail.
    
    1) Still perplexed by why it can't understand 'print my_data'
    2) I can see why it's reading wrong results for auto variables as the
    registers are getting mixed up. I see the following:
    
    Sending packet: $Hc-1#09...Ack
    Packet received:
    Sending packet: $qC#b4...Ack
    Packet received:
    Sending packet: $qOffsets#4b...Ack
    Packet received:
    Sending packet: $?#3f...Ack
    Packet received: S05
    Sending packet: $Hg0#df...Ack
    Packet received:
    Sending packet: $g#67...Ack
    Packet received:
    0000000000009244000000000008000400000004000000020000823800000001000000010000
    12a4000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000041dc000000000000
    00010000000000009240000000000000623800008201
    0x00006238 in __breakinst () at
    /home/sheaf/ecos-sr/ecos/packages/hal/common/current/src/hal_stub.c:569
    569         HAL_BREAKPOINT(_breakinst);
    (gdb) info reg
                R0       R1       R2       R3       R4       R5       R6
    R7
          00000000 00009244 00000000 00080004 00000004 00000002 00008238
    00000001
                R8       R9      R10      R11      R12      R13      R14
    R15
          00000001 000012a4 00000000 00000000 00000000 00000000 00000000
    00000000
               R16      R17      R18      R19      R20      R21      R22
    R23
          00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000
               R24      R25      R26      R27      R28      R29      R30
    R31
          00000000 00000000 000041dc 00000000 00000001 00000000 00009240
    00000000
                PC       SR     EPCR
          00006238 00008201 00000000
    
    ----> Here the registers look OK.
    
    (gdb) step
    Sending packet: $Hc0#db...Ack
    Packet received:
    Sending packet: $s#73...Ack
    Packet received: T0540:0000623c;01:00009244;
    Sending packet: $s#73...Ack
    Packet received: T0540:000012a4;01:00009248;
    Sending packet: $g#67...Ack
    Packet received:
    0000924400009248000800040008000400000004000000020000823800000001000000010000
    12a4000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000012a400008201
    cyg_start () at hello.c:15
    15              ulMask = 1;
    (gdb) info reg
                R0       R1       R2       R3       R4       R5       R6
    R7
          00009244 00009248 00080004 00080004 00000004 00000002 00008238
    00000001
                R8       R9      R10      R11      R12      R13      R14
    R15
          00000001 000012a4 00000000 00000000 00000000 00000000 00000000
    00000000
               R16      R17      R18      R19      R20      R21      R22
    R23
          00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000
               R24      R25      R26      R27      R28      R29      R30
    R31
          00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000
                PC       SR     EPCR
          000012a4 00008201 00000000
    (gdb)
    
    ----> But here there seems to be some corruption going on. R3 and above look
    plausible but R0 should definitely not be 0x00009244 (should be 0x0) and R2
    (the frame pointer) has also seems to have become corrupted (well at least
    as it's reported). So GDB works out the address of the auto variable
    completely wrongly.
    
    Anyone any idea why this might be happening? I am still trawling through the
    eCos code but it's hard going. Any advice on the structure of the eCos code
    would be useful.
    
    Robert Cragie, Design Engineer
    _______________________________________________________________
    Jennic Ltd, Furnival Street, Sheffield, S1 4QT,  UK
    http://www.jennic.com  Tel: +44 (0) 114 281 2655
    _______________________________________________________________
    
    
    
    
     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.