linux/Documentation/blackfin/kgdb.txt
<<
>>
Prefs
   1                        A Simple Guide to Configure KGDB
   2
   3                        Sonic Zhang <sonic.zhang@analog.com>
   4                                Aug. 24th 2006
   5
   6
   7This KGDB patch enables the kernel developer to do source level debugging on
   8the kernel for the Blackfin architecture.  The debugging works over either the
   9ethernet interface or one of the uarts.  Both software breakpoints and
  10hardware breakpoints are supported in this version.
  11http://docs.blackfin.uclinux.org/doku.php?id=kgdb
  12
  13
  142 known issues:
  151. This bug:
  16       http://blackfin.uclinux.org/tracker/index.php?func=detail&aid=544&group_id=18&atid=145
  17   The GDB client for Blackfin uClinux causes incorrect values of local
  18   variables to be displayed when the user breaks the running of kernel in GDB.
  192. Because of a hardware bug in Blackfin 533 v1.0.3:
  20       05000067 - Watchpoints (Hardware Breakpoints) are not supported
  21   Hardware breakpoints cannot be set properly.
  22
  23
  24Debug over Ethernet:
  25 
  261. Compile and install the cross platform version of gdb for blackfin, which
  27   can be found at $(BINROOT)/bfin-elf-gdb.
  28
  292. Apply this patch to the 2.6.x kernel.  Select the menuconfig option under
  30   "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
  31   With this selected, option "Full Symbolic/Source Debugging support" and 
  32   "Compile the kernel with frame pointers" are also selected.
  33
  343. Select option "KGDB: connect over (Ethernet)".  Add "kgdboe=@target-IP/,@host-IP/" to
  35   the option "Compiled-in Kernel Boot Parameter" under "Kernel hacking".
  36
  374. Connect minicom to the serial port and boot the kernel image.
  38
  395. Configure the IP "/> ifconfig eth0 target-IP"
  40
  416. Start GDB client "bfin-elf-gdb vmlinux".
  42
  437. Connect to the target "(gdb) target remote udp:target-IP:6443".
  44
  458. Set software breakpoint "(gdb) break sys_open".
  46
  479. Continue "(gdb) c".
  48
  4910. Run ls in the target console "/> ls".
  50
  5111. Breakpoint hits. "Breakpoint 1: sys_open(..."
  52
  5312. Display local variables and function paramters.
  54    (*) This operation gives wrong results, see known issue 1.
  55
  5613. Single stepping "(gdb) si".
  57
  5814. Remove breakpoint 1. "(gdb) del 1"
  59
  6015. Set hardware breakpoint "(gdb) hbreak sys_open".
  61
  6216. Continue "(gdb) c".
  63
  6417. Run ls in the target console "/> ls".
  65
  6618. Hardware breakpoint hits. "Breakpoint 1: sys_open(...".
  67    (*) This hardware breakpoint will not be hit, see known issue 2.
  68
  6919. Continue "(gdb) c".
  70
  7120. Interrupt the target in GDB "Ctrl+C".
  72
  7321. Detach from the target "(gdb) detach".
  74
  7522. Exit GDB "(gdb) quit".
  76
  77
  78Debug over the UART:
  79
  801. Compile and install the cross platform version of gdb for blackfin, which
  81   can be found at $(BINROOT)/bfin-elf-gdb.
  82
  832. Apply this patch to the 2.6.x kernel.  Select the menuconfig option under
  84   "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
  85   With this selected, option "Full Symbolic/Source Debugging support" and 
  86   "Compile the kernel with frame pointers" are also selected.
  87
  883. Select option "KGDB: connect over (UART)".  Set "KGDB: UART port number" to be
  89   a different one from the console.  Don't forget to change the mode of
  90   blackfin serial driver to PIO.  Otherwise kgdb works incorrectly on UART.
  91 
  924. If you want connect to kgdb when the kernel boots, enable
  93   "KGDB: Wait for gdb connection early" 
  94
  955. Compile kernel.
  96
  976. Connect minicom to the serial port of the console and boot the kernel image.
  98
  997. Start GDB client "bfin-elf-gdb vmlinux".
 100
 1018. Set the baud rate in GDB "(gdb) set remotebaud 57600".
 102
 1039. Connect to the target on the second serial port "(gdb) target remote /dev/ttyS1".
 104
 10510. Set software breakpoint "(gdb) break sys_open".
 106
 10711. Continue "(gdb) c". 
 108
 10912. Run ls in the target console "/> ls". 
 110
 11113. A breakpoint is hit. "Breakpoint 1: sys_open(..."
 112
 11314. All other operations are the same as that in KGDB over Ethernet. 
 114
 115
 116Debug over the same UART as console:
 117
 1181. Compile and install the cross platform version of gdb for blackfin, which
 119   can be found at $(BINROOT)/bfin-elf-gdb.
 120
 1212. Apply this patch to the 2.6.x kernel.  Select the menuconfig option under
 122   "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
 123   With this selected, option "Full Symbolic/Source Debugging support" and 
 124   "Compile the kernel with frame pointers" are also selected.
 125
 1263. Select option "KGDB: connect over UART".  Set "KGDB: UART port number" to console.
 127   Don't forget to change the mode of blackfin serial driver to PIO.
 128   Otherwise kgdb works incorrectly on UART.
 129 
 1304. If you want connect to kgdb when the kernel boots, enable
 131   "KGDB: Wait for gdb connection early" 
 132
 1335. Connect minicom to the serial port and boot the kernel image. 
 134
 1356. (Optional) Ask target to wait for gdb connection by entering Ctrl+A. In minicom, you should enter Ctrl+A+A.
 136
 1377. Start GDB client "bfin-elf-gdb vmlinux".
 138
 1398. Set the baud rate in GDB "(gdb) set remotebaud 57600".
 140
 1419. Connect to the target "(gdb) target remote /dev/ttyS0".
 142
 14310. Set software breakpoint "(gdb) break sys_open".
 144
 14511. Continue "(gdb) c". Then enter Ctrl+C twice to stop GDB connection.
 146
 14712. Run ls in the target console "/> ls". Dummy string can be seen on the console.
 148
 14913. Then connect the gdb to target again. "(gdb) target remote /dev/ttyS0".
 150    Now you will find a breakpoint is hit. "Breakpoint 1: sys_open(..."
 151
 15214. All other operations are the same as that in KGDB over Ethernet.  The only
 153    difference is that after continue command in GDB, please stop GDB
 154    connection by 2 "Ctrl+C"s and connect again after breakpoints are hit or
 155    Ctrl+A is entered.
 156
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.