项目作者: lundmar

项目描述 :
OpenOCD patches
高级语言:
项目地址: git://github.com/lundmar/openocd-patches.git
创建时间: 2018-06-13T06:52:50Z
项目社区:https://github.com/lundmar/openocd-patches

开源协议:

下载


OpenOCD patches

This repository is a placeholder for various patches for OpenOCD.

Installation

  1. $ sudo apt install libusb-1.0-0-dev
  2. $ git clone https://git.code.sf.net/p/openocd/code openocd
  3. $ cd openocd
  4. $ wget https://raw.githubusercontent.com/lundmar/openocd-patches/master/0001-Add-PS_TAPIDs-for-various-Xilinx-UltraScale-devices.patch
  5. $ wget https://raw.githubusercontent.com/lundmar/openocd-patches/master/0002-Bypass-armv8-crash.patch
  6. $ git am *.patch
  7. $ ./bootstrap
  8. $ ./configure --prefix=$HOME/opt/openocd
  9. $ make && make install
  10. $ export PATH=$HOME/opt/openocd/bin

Testing with Xilinx ZCU102 development board

Power on your development board and run this command to attach and halt target:

  1. $ openocd -s $HOME/opt/openocd/share/openocd/scripts -f interface/ftdi/digilent_jtag_smt2_nc.cfg -f target/xilinx_ultrascale.cfg -c "adapter_khz 100" -c "reset_config trst_and_srst" -c "init; halt"
  2. Open On-Chip Debugger 0.10.0+dev-00430-g06123153 (2018-06-11-09:11)
  3. Licensed under GNU GPL v2
  4. For bug reports, read
  5. http://openocd.org/doc/doxygen/bugs.html
  6. none separate
  7. Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
  8. core_up
  9. adapter speed: 100 kHz
  10. trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_deassert_srst
  11. Info : clock speed 100 kHz
  12. Info : JTAG tap: uscale.tap tap/device found: 0x5ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x5)
  13. Info : JTAG tap: uscale.ps tap/device found: 0x24738093 (mfg: 0x049 (Xilinx), part: 0x4738, ver: 0x2)
  14. Info : JTAG tap: uscale.tap tap/device found: 0x5ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x5)
  15. Info : JTAG tap: uscale.ps tap/device found: 0x24738093 (mfg: 0x049 (Xilinx), part: 0x4738, ver: 0x2)
  16. Info : uscale.a53.0: hardware has 6 breakpoints, 4 watchpoints
  17. Info : uscale.a53.0 cluster 0 core 0 multi core
  18. Info : Listening on port 3333 for gdb connections
  19. Info : Listening on port 6666 for tcl connections
  20. Info : Listening on port 4444 for telnet connections

If you only want to attach but not halt the target simply remove the “init; halt” command.

Openocd is now attached to target and ready to accept incomming gdb client connections.

For example, to debug u-boot after relocation simply use gdb client available from your toolchain like so:

  1. $ aarch64-poky-linux-gdb
  2. GNU gdb (GDB) 8.0.1
  3. Copyright (C) 2017 Free Software Foundation, Inc.
  4. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  5. This is free software: you are free to change and redistribute it.
  6. There is NO WARRANTY, to the extent permitted by law. Type "show copying"
  7. and "show warranty" for details.
  8. This GDB was configured as "--host=x86_64-pokysdk-linux --target=aarch64-poky-linux".
  9. Type "show configuration" for configuration details.
  10. For bug reporting instructions, please see:
  11. <http://www.gnu.org/software/gdb/bugs></http:>.
  12. Find the GDB manual and other documentation resources online at:
  13. <http://www.gnu.org/software/gdb/documentation></http:>.
  14. For help, type "help".
  15. Type "apropos word" to search for commands related to "word"...
  16. (gdb) add-symbol-file /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/build/u-boot 0x7FED1000
  17. add symbol table from file "/opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/build/u-boot" at
  18. .text_addr = 0x7fed1000
  19. (y or n) y
  20. Reading symbols from /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/build/u-boot...done.
  21. (gdb) break do_version
  22. Breakpoint 1 at 0x7fed4b08: file /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/cmd/version.c, line 19.
  23. (gdb) info break
  24. Num Type Disp Enb Address What
  25. 1 breakpoint keep y 0x000000007fed4b08 in do_version at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/cmd/version.c:19
  26. (gdb) continue
  27. Continuing.
  28. Breakpoint 1, do_version (cmdtp=0x7ff8cb98, flag=0, argc=1, argv=0x7dec3530) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/cmd/version.c:19
  29. 19 {
  30. (gdb) list
  31. 14 #endif
  32. 15
  33. 16 const char __weak version_string[] = U_BOOT_VERSION_STRING;
  34. 17
  35. 18 static int do_version(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  36. 19 {
  37. 20 char buf[DISPLAY_OPTIONS_BANNER_LENGTH];
  38. 21
  39. 22 printf(display_options_get_banner(false, buf, sizeof(buf)));
  40. 23 #ifdef CC_VERSION_STRING
  41. (gdb) info stack
  42. #0 do_version (cmdtp=0x7ff8cb98, flag=0, argc=1, argv=0x7dec3530) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/cmd/version.c:19
  43. #1 0x000000007fef679c in cmd_call (argv=0x7dec3530, argc=1, flag=0, cmdtp=0x7ff8cb98) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/command.c:500
  44. #2 cmd_process (flag=<optimized out>, flag@entry=0, argc=1, argv=0x7dec3530, repeatable=repeatable@entry=0x7ff9c7a4, ticks=ticks@entry=0x0) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-
  45. r0/git/common/command.c:539
  46. #3 0x000000007fee883c in run_pipe_real (pi=0x7dec3460) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/cli_hush.c:1678
  47. #4 run_list_real (pi=<optimized out>) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/cli_hush.c:1876
  48. #5 0x000000007fee89e0 in run_list (pi=0x7dec3460) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/cli_hush.c:2025
  49. #6 parse_stream_outer (inp=inp@entry=0x7dec0d40, flag=flag@entry=2) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/cli_hush.c:3217
  50. #7 0x000000007fee8f20 in parse_file_outer () at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/cli_hush.c:3300
  51. #8 0x000000007fef5d1c in cli_loop () at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/cli.c:218
  52. #9 0x000000007fee6b70 in main_loop () at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/main.c:68
  53. #10 0x000000007fee9500 in run_main_loop () at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/board_r.c:662
  54. #11 0x000000007ff49df8 in initcall_run_list (init_sequence=init_sequence@entry=0x7ff895d0) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/lib/initcall.c:31
  55. #12 0x000000007fee9754 in board_init_r (new_gd=<optimized out>, dest_addr=<optimized out>) at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/common/board_r.c:895
  56. #13 0x000000007fed3470 in _main () at /opt/nocrypt/work/git/z7000-distro-2018.1/build/tmp/work/zcu102_zynqmp-poky-linux/u-boot-xlnx/v2018.01-xilinx-v2018.1+gitAUTOINC+949e5cb9a7-r0/git/arch/arm/lib/crt0_64.S:119
  57. (gdb) info registers
  58. x0 0xf942e4 16335588
  59. x1 0xa 10
  60. x2 0x80a 2058
  61. x3 0xa 10
  62. x4 0xfffd813e 4294803774
  63. x5 0x4 4
  64. x6 0x8ca00 576000
  65. x7 0x5 5
  66. x8 0xad 173
  67. x9 0x80 128
  68. x10 0xfffd 65533
  69. x11 0x64 100
  70. x12 0xfffffe6a 4294966890
  71. x13 0x460c050400048c5 315463424819611845
  72. x14 0x2208081803040107 2452218896326066439
  73. x15 0x5bc421a712040000 6612447154332237824
  74. x16 0x280c820380080c00 2885824412782169088
  75. x17 0xb0238220540d104f 12692131250220896335
  76. x18 0xffff7e90 4294934160
  77. x19 0x5fb33e5 100348901
  78. x20 0x552e4 348900
  79. x21 0x989680 10000000
  80. x22 0xc80020c18400c04 900722176443812868
  81. x23 0xc90240021400288a 14484209729246603402
  82. x24 0x60a0580000100431 6962661780939080753
  83. x25 0xa010142002000010 11533740773400903696
  84. x26 0x6082c1310081284d 6954333190819489869
  85. x27 0x80c7120302c00221 9279405361360536097
  86. x28 0x8201800002040c13 9367909437429517331
  87. x29 0xffff7e30 4294934064
  88. x30 0xfffcab9c 4294749084
  89. sp 0xffff7e30 0xffff7e30
  90. pc 0xfffc0cb8 0xfffc0cb8
  91. cpsr 0x800002cd [ SP=1 EL=2 nRW=0 F I D N ]

Note: To debug u-boot after relocation you need to provide the relocation offset when loading the u-boot symbol file (elf), in this case 0x7FED1000.