			A Simple Guide to Configure KGDB

			Sonic Zhang <sonic.zhang@analog.com>
				Aug. 24th 2006


This KGDB patch enables the kernel developer to do source level debugging on
the kernel for the Blackfin architecture.  The debugging works over either the
ethernet interface or one of the uarts.  Both software breakpoints and
hardware breakpoints are supported in this version.
http://docs.blackfin.uclinux.org/doku.php?id=kgdb


2 known issues:
1. This bug:
       http://blackfin.uclinux.org/tracker/index.php?func=detail&aid=544&group_id=18&atid=145
   The GDB client for Blackfin uClinux causes incorrect values of local
   variables to be displayed when the user breaks the running of kernel in GDB.
2. Because of a hardware bug in Blackfin 533 v1.0.3:
       05000067 - Watchpoints (Hardware Breakpoints) are not supported
   Hardware breakpoints cannot be set properly.


Debug over Ethernet:
 
1. Compile and install the cross platform version of gdb for blackfin, which
   can be found at $(BINROOT)/bfin-elf-gdb.

2. Apply this patch to the 2.6.x kernel.  Select the menuconfig option under
   "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
   With this selected, option "Full Symbolic/Source Debugging support" and 
   "Compile the kernel with frame pointers" are also selected.

3. Select option "KGDB: connect over (Ethernet)".  Add "kgdboe=@target-IP/,@host-IP/" to
   the option "Compiled-in Kernel Boot Parameter" under "Kernel hacking".

4. Connect minicom to the serial port and boot the kernel image.

5. Configure the IP "/> ifconfig eth0 target-IP"

6. Start GDB client "bfin-elf-gdb vmlinux".

7. Connect to the target "(gdb) target remote udp:target-IP:6443".

8. Set software breakpoint "(gdb) break sys_open".

9. Continue "(gdb) c".

10. Run ls in the target console "/> ls".

11. Breakpoint hits. "Breakpoint 1: sys_open(..."

12. Display local variables and function paramters.
    (*) This operation gives wrong results, see known issue 1.

13. Single stepping "(gdb) si".

14. Remove breakpoint 1. "(gdb) del 1"

15. Set hardware breakpoint "(gdb) hbreak sys_open".

16. Continue "(gdb) c".

17. Run ls in the target console "/> ls".

18. Hardware breakpoint hits. "Breakpoint 1: sys_open(...".
    (*) This hardware breakpoint will not be hit, see known issue 2.

19. Continue "(gdb) c".

20. Interrupt the target in GDB "Ctrl+C".

21. Detach from the target "(gdb) detach".

22. Exit GDB "(gdb) quit".


Debug over the UART:

1. Compile and install the cross platform version of gdb for blackfin, which
   can be found at $(BINROOT)/bfin-elf-gdb.

2. Apply this patch to the 2.6.x kernel.  Select the menuconfig option under
   "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
   With this selected, option "Full Symbolic/Source Debugging support" and 
   "Compile the kernel with frame pointers" are also selected.

3. Select option "KGDB: connect over (UART)".  Set "KGDB: UART port number" to be
   a different one from the console.  Don't forget to change the mode of
   blackfin serial driver to PIO.  Otherwise kgdb works incorrectly on UART.
 
4. If you want connect to kgdb when the kernel boots, enable
   "KGDB: Wait for gdb connection early" 

5. Compile kernel.

6. Connect minicom to the serial port of the console and boot the kernel image.

7. Start GDB client "bfin-elf-gdb vmlinux".

8. Set the baud rate in GDB "(gdb) set remotebaud 57600".

9. Connect to the target on the second serial port "(gdb) target remote /dev/ttyS1".

10. Set software breakpoint "(gdb) break sys_open".

11. Continue "(gdb) c". 

12. Run ls in the target console "/> ls". 

13. A breakpoint is hit. "Breakpoint 1: sys_open(..."

14. All other operations are the same as that in KGDB over Ethernet. 


Debug over the same UART as console:

1. Compile and install the cross platform version of gdb for blackfin, which
   can be found at $(BINROOT)/bfin-elf-gdb.

2. Apply this patch to the 2.6.x kernel.  Select the menuconfig option under
   "Kernel hacking" -> "Kernel debugging" -> "KGDB: kernel debug with remote gdb".
   With this selected, option "Full Symbolic/Source Debugging support" and 
   "Compile the kernel with frame pointers" are also selected.

3. Select option "KGDB: connect over UART".  Set "KGDB: UART port number" to console.
   Don't forget to change the mode of blackfin serial driver to PIO.
   Otherwise kgdb works incorrectly on UART.
 
4. If you want connect to kgdb when the kernel boots, enable
   "KGDB: Wait for gdb connection early" 

5. Connect minicom to the serial port and boot the kernel image. 

6. (Optional) Ask target to wait for gdb connection by entering Ctrl+A. In minicom, you should enter Ctrl+A+A.

7. Start GDB client "bfin-elf-gdb vmlinux".

8. Set the baud rate in GDB "(gdb) set remotebaud 57600".

9. Connect to the target "(gdb) target remote /dev/ttyS0".

10. Set software breakpoint "(gdb) break sys_open".

11. Continue "(gdb) c". Then enter Ctrl+C twice to stop GDB connection.

12. Run ls in the target console "/> ls". Dummy string can be seen on the console.

13. Then connect the gdb to target again. "(gdb) target remote /dev/ttyS0".
    Now you will find a breakpoint is hit. "Breakpoint 1: sys_open(..."

14. All other operations are the same as that in KGDB over Ethernet.  The only
    difference is that after continue command in GDB, please stop GDB
    connection by 2 "Ctrl+C"s and connect again after breakpoints are hit or
    Ctrl+A is entered.
