Problems debugging I.MX6 with J-Link and GDB-Server

  • Problems debugging I.MX6 with J-Link and GDB-Server

    Hello,

    I want to debug a program in the RAM of an I.MX6.

    I tried to debug the device "PCIMX6S6AVM08AA" with a "J-Link Probe Version 8".

    Therefore I used the "J-Link GDB Server V4.80a" together with Eclipse CDT (Juno Service Release 2).

    In the configuration dialog in Eclipse I selected "MCIMX6S6" as device.

    The Cortex-A9 core of the I.MX6 was detected correctly an according to the Log of the "J-Link GDB Server" my ELF-File was downloaded successfully.

    But the program doesn't start at the entry point and I have problems to read/write the registers and the memory of the device.

    I hope you can help me to debug the program successfully.

    If you need more information of my debug environment just tell me.


    Thank you.

    Below the Log-File of the "J-Link GDB Server":

    Source Code

    1. SEGGER J-Link GDB Server V4.80a GUI Version
    2. JLinkARM.dll V4.80a (DLL compiled Jan 10 2014 21:21:47)
    3. -----GDB Server start settings-----
    4. GDBInit file: none
    5. GDB Server Listening port: 2331
    6. SWO raw output listening port: 2332
    7. Terminal I/O port: 2333
    8. Accept remote connection: localhost only
    9. Generate logfile: off
    10. Verify download: off
    11. Init regs on start: on
    12. Silent mode: off
    13. Single run mode: off
    14. Connecting to J-Link...
    15. J-Link is connected.
    16. Firmware: J-Link ARM V8 compiled Nov 25 2013 19:20:08
    17. Hardware: V8.00
    18. S/N: 58006648
    19. Checking target voltage...
    20. Listening on TCP/IP port 2331
    21. Connecting to target...WARNING: At least one of the connected devices is not JTAG compliant (IEEE Std 1149.1, 7.1.1.d, IR-cells). (NumDevices = 3, NumBitsSet = 2)
    22. J-Link found 3 JTAG devices, Total IRLen = 13
    23. JTAG ID: 0x4BA00477 (Cortex-A9)
    24. Connected to target
    25. Waiting for GDB connection...Connected to 127.0.0.1
    26. Reading all registers
    27. WARNING: Failed to read memory @ address 0x00000000
    28. Read 4 bytes @ address 0x00000000 (Data = 0xAAAAAAAA)
    29. Select auto target interface speed (1000 kHz)
    30. Target endianess set to "little endian"
    31. Selecting device: MCIMX6S6
    32. Downloading 32 bytes @ address 0x00900000
    33. Downloading 172 bytes @ address 0x00900200
    34. Downloading 2008 bytes @ address 0x009002B0
    35. Downloading 19 bytes @ address 0x00900A88
    36. Writing register (PC = 0x00900200)
    37. WARNING: Failed to read memory @ address 0x00900200
    38. Read 4 bytes @ address 0x00900200 (Data = 0xAAAAAAAA)
    39. Setting breakpoint @ address 0x00900200, Size = 4, BPHandle = 0x0001
    40. Resetting target
    41. Writing register (PC = 0x000DBC68)
    42. Starting target CPU...
    43. Debugger requested to halt target...
    44. ...Target halted (PC = 0x00000C86)
    45. Reading all registers
    46. Read 4 bytes @ address 0x00000C86 (Data = 0xF0002400)
    47. Read 4 bytes @ address 0x000026B6 (Data = 0xD1FB2801)
    48. Read 4 bytes @ address 0x000026B6 (Data = 0xD1FB2801)
    49. Read 2 bytes @ address 0x00000C86 (Data = 0x2400)
    50. Read 2 bytes @ address 0x00000C88 (Data = 0xF000)
    51. Read 2 bytes @ address 0x00000C8A (Data = 0xF95D)
    52. Read 2 bytes @ address 0x00000C8C (Data = 0x2801)
    53. Read 2 bytes @ address 0x00000C8E (Data = 0xD100)
    54. Read 2 bytes @ address 0x00000C90 (Data = 0x2401)
    55. Read 2 bytes @ address 0x00000C92 (Data = 0x4620)
    56. Read 2 bytes @ address 0x00000C94 (Data = 0xBD10)
    57. Read 2 bytes @ address 0x00000C96 (Data = 0xB51F)
    58. Read 2 bytes @ address 0x00000C98 (Data = 0x483B)
    59. Read 2 bytes @ address 0x00000C9A (Data = 0x300E)
    60. Read 2 bytes @ address 0x00000C9C (Data = 0x7901)
    61. Read 2 bytes @ address 0x00000C9E (Data = 0x2900)
    62. Read 2 bytes @ address 0x00000CA0 (Data = 0xD11B)
    63. Read 2 bytes @ address 0x00000CA2 (Data = 0x7941)
    64. Read 2 bytes @ address 0x00000CA4 (Data = 0x2900)
    65. Read 2 bytes @ address 0x00000CA6 (Data = 0xD118)
    66. Read 2 bytes @ address 0x00000CA8 (Data = 0x7881)
    67. Read 2 bytes @ address 0x00000CAA (Data = 0x2900)
    68. Read 2 bytes @ address 0x00000CAC (Data = 0xD115)
    69. Read 2 bytes @ address 0x00000CAE (Data = 0x78C1)
    70. Read 2 bytes @ address 0x00000CB0 (Data = 0x2900)
    71. Read 2 bytes @ address 0x00000CB2 (Data = 0xD112)
    72. Read 2 bytes @ address 0x00000CB4 (Data = 0x7981)
    73. Read 2 bytes @ address 0x00000CB6 (Data = 0x2901)
    74. Read 2 bytes @ address 0x00000CB8 (Data = 0xD10F)
    75. Read 2 bytes @ address 0x00000CBA (Data = 0x79C0)
    76. Read 2 bytes @ address 0x00000CBC (Data = 0x2800)
    77. Read 2 bytes @ address 0x00000CBE (Data = 0xD10C)
    78. Read 2 bytes @ address 0x00000CC0 (Data = 0x4831)
    79. Read 2 bytes @ address 0x00000CC2 (Data = 0x7800)
    80. Read 2 bytes @ address 0x00000CC4 (Data = 0x2801)
    81. Read 2 bytes @ address 0x00000CC6 (Data = 0xD004)
    82. Read 2 bytes @ address 0x00000CC8 (Data = 0x2401)
    83. Read 2 bytes @ address 0x00000CCA (Data = 0x2802)
    84. Read 2 bytes @ address 0x00000CCC (Data = 0xD006)
    85. Read 2 bytes @ address 0x00000CCE (Data = 0x2803)
    86. Read 2 bytes @ address 0x00000CD0 (Data = 0xD008)
    87. Read 2 bytes @ address 0x00000CD2 (Data = 0x2101)
    88. Read 2 bytes @ address 0x00000CD4 (Data = 0x2000)
    89. Read 2 bytes @ address 0x00000CD6 (Data = 0xF000)
    90. Read 2 bytes @ address 0x00000CD8 (Data = 0xF9BF)
    91. Read 2 bytes @ address 0x00000CDA (Data = 0xBD1F)
    92. Read 2 bytes @ address 0x00000CDC (Data = 0xF000)
    93. Read 2 bytes @ address 0x00000CDE (Data = 0xFD12)
    94. Read 2 bytes @ address 0x00000CE0 (Data = 0x2100)
    95. ...
    96. Read 2 bytes @ address 0x00000D10 (Data = 0xEB01)
    97. Read 2 bytes @ address 0x00000D12 (Data = 0x2102)
    98. Writing register (PC = 0x00900200)
    99. Reading all registers
    100. ERROR: Can not read register 0 (R0) while CPU is running
    101. ERROR: Can not read register 1 (R1) while CPU is running
    102. ERROR: Can not read register 2 (R2) while CPU is running
    103. ERROR: Can not read register 3 (R3) while CPU is running
    104. ERROR: Can not read register 4 (R4) while CPU is running
    105. ERROR: Can not read register 5 (R5) while CPU is running
    106. ERROR: Can not read register 6 (R6) while CPU is running
    107. ERROR: Can not read register 7 (R7) while CPU is running
    108. ERROR: Can not read register 8 (CPSR) while CPU is running
    109. ERROR: Can not read register 8 (CPSR) while CPU is running
    110. ERROR: Can not read register 8 (CPSR) while CPU is running
    111. ERROR: Can not read register 9 (R15 (PC)) while CPU is running
    112. ERROR: Can not read register 8 (CPSR) while CPU is running
    113. ERROR: Can not read register 10 (R8_USR) while CPU is running
    114. ERROR: Can not read register 8 (CPSR) while CPU is running
    115. ERROR: Can not read register 11 (R9_USR) while CPU is running
    116. ERROR: Can not read register 8 (CPSR) while CPU is running
    117. ERROR: Can not read register 12 (R10_USR) while CPU is running
    118. ERROR: Can not read register 8 (CPSR) while CPU is running
    119. ERROR: Can not read register 13 (R11_USR) while CPU is running
    120. ERROR: Can not read register 8 (CPSR) while CPU is running
    121. ERROR: Can not read register 14 (R12_USR) while CPU is running
    122. ERROR: Can not read register 9 (R15 (PC)) while CPU is running
    123. ERROR: Can not read register 8 (CPSR) while CPU is running
    124. WARNING: CPU could not be halted
    125. WARNING: Failed to read memory @ address 0x00000000
    126. Read 4 bytes @ address 0x00000000 (Data = 0xAAAAAAAA)
    127. WARNING: Failed to read memory @ address 0x00000000
    128. Read 4 bytes @ address 0x00000000 (Data = 0xAAAAAAAA)
    129. WARNING: Failed to read memory @ address 0x00000D10
    130. Read 4 bytes @ address 0x00000D10 (Data = 0xAAAAAAAA)
    131. WARNING: Failed to read memory @ address 0x00000D10
    132. Read 4 bytes @ address 0x00000D10 (Data = 0xAAAAAAAA)
    133. WARNING: Failed to read memory @ address 0x00000D10
    134. Read 2 bytes @ address 0x00000D10 (Data = 0xAAAA)
    135. WARNING: Failed to read memory @ address 0x00000D12
    136. Read 4 bytes @ address 0x00000D12 (Data = 0xAAAAAAAA)
    137. WARNING: Failed to read memory @ address 0x00000D12
    138. Read 2 bytes @ address 0x00000D12 (Data = 0xAAAA)
    139. WARNING: Failed to read memory @ address 0x00000D14
    140. Read 4 bytes @ address 0x00000D14 (Data = 0xAAAAAAAA)
    141. WARNING: Failed to read memory @ address 0x00000D14
    142. Read 2 bytes @ address 0x00000D14 (Data = 0xAAAA)
    Display All
  • Hi,

    Two things:

    a)
    Please remove the following lines from your GDBInit in Eclipse:
    monitor endian little
    monitor device MCIMX6S6
    monitor speed auto

    They should be selected in the configuration dialog shown at startup of GDBServer.
    Especially passing the device via monitor command in the gdbinit is too late.

    b) At the time of download, did you make sure that the OCRAM is available at 0x00900000?
    To me it looks like it is not accessible due to incorrect MMU setup or similar.


    - Alex
    Please read the forum rules before posting.

    Keep in mind, this is *not* a support forum.
    Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
    Should you be entitled to support you can contact us via our support system: segger.com/ticket/

    Or you can contact us via e-mail.