finish removing deprecated/obsolete commands
authorDavid Brownell <dbrownell@users.sourceforge.net>
Mon, 9 Nov 2009 21:16:32 +0000 (13:16 -0800)
committerDavid Brownell <dbrownell@users.sourceforge.net>
Mon, 9 Nov 2009 21:16:32 +0000 (13:16 -0800)
It's been about a year since these were deprecated and, in most
cases, removed.  There's no point in carrying that documentation,
or backwards compatibility for "jtag_device" and "jtag_speed",
around forever.  (Or a few remnants of obsolete code...)

Removed a few obsolete uses of "jtag_speed":

 - The Calao stuff hasn't worked since July 2008.  (Those Atmel
   targets need to work with a 32KHz core clock after reset until
   board-specific init-reset code sets up the PLL and enables a
   faster JTAg clock.)
 - Parport speed controls don't actually work (tops out at about
   1 MHz on typical HW).
 - In general, speed controls need to live in board.cfg files (or
   sometimes target.cfg files), not interface.cfg ...

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
13 files changed:
doc/openocd.texi
src/jtag/core.c
src/jtag/jtag.h
src/jtag/tcl.c
src/target/arm7_9_common.c
src/target/arm7_9_common.h
src/target/target.c
tcl/board/topas910.cfg
tcl/board/topasa900.cfg
tcl/interface/calao-usb-a9260.cfg
tcl/interface/openocd-usb.cfg
tcl/interface/parport.cfg
tcl/interface/parport_dlc5.cfg

index 8e1d1a8f60614d51c9d70fbc74d128f100dd4cd7..86f5748f6076c27b705e8e845ba6c55c110620fe 100644 (file)
@@ -81,7 +81,6 @@ Free Documentation License''.
 * TFTP::                             TFTP
 * GDB and OpenOCD::                  Using GDB and OpenOCD
 * Tcl Scripting API::                Tcl Scripting API
 * TFTP::                             TFTP
 * GDB and OpenOCD::                  Using GDB and OpenOCD
 * Tcl Scripting API::                Tcl Scripting API
-* Upgrading::                        Deprecated/Removed Commands
 * FAQ::                              Frequently Asked Questions
 * Tcl Crash Course::                 Tcl Crash Course
 * License::                          GNU Free Documentation License
 * FAQ::                              Frequently Asked Questions
 * Tcl Crash Course::                 Tcl Crash Course
 * License::                          GNU Free Documentation License
@@ -6507,91 +6506,6 @@ We should add support for a variable like Tcl variable
 is jim, not real tcl).
 @end quotation
 
 is jim, not real tcl).
 @end quotation
 
-@node Upgrading
-@chapter Deprecated/Removed Commands
-@cindex Deprecated/Removed Commands
-Certain OpenOCD commands have been deprecated or
-removed during the various revisions.
-
-Upgrade your scripts as soon as possible.
-These descriptions for old commands may be removed
-a year after the command itself was removed.
-This means that in January 2010 this chapter may
-become much shorter.
-
-@itemize @bullet
-@item @b{arm7_9 fast_writes}
-@cindex arm7_9 fast_writes
-@*Use @command{arm7_9 fast_memory_access} instead.
-@xref{arm7_9 fast_memory_access}.
-@item @b{endstate}
-@cindex endstate
-@*An buggy old command that would not really work since background polling would wipe out the global endstate
-@item @b{arm7_9 force_hw_bkpts}
-@*Use @command{gdb_breakpoint_override} instead. Note that GDB will use hardware breakpoints
-for flash if the GDB memory map has been set up(default when flash is declared in
-target configuration). @xref{gdb_breakpoint_override}.
-@item @b{arm7_9 sw_bkpts}
-@*On by default. @xref{gdb_breakpoint_override}.
-@item @b{daemon_startup}
-@*this config option has been removed, simply adding @option{init} and @option{reset halt} to
-the end of your config script will give the same behaviour as using @option{daemon_startup reset}
-and @option{target cortex_m3 little reset_halt 0}.
-@item @b{dump_binary}
-@*use @option{dump_image} command with same args. @xref{dump_image}.
-@item @b{flash erase}
-@*use @option{flash erase_sector} command with same args. @xref{flash erase_sector}.
-@item @b{flash write}
-@*use @option{flash write_bank} command with same args. @xref{flash write_bank}.
-@item @b{flash write_binary}
-@*use @option{flash write_bank} command with same args. @xref{flash write_bank}.
-@item @b{flash auto_erase}
-@*use @option{flash write_image} command passing @option{erase} as the first parameter. @xref{flash write_image}.
-
-@item @b{jtag_device}
-@*use the @command{jtag newtap} command, converting from positional syntax
-to named prefixes, and naming the TAP.
-@xref{jtag newtap}.
-Note that if you try to use the old command, a message will tell you the
-right new command to use; and that the fourth parameter in the old syntax
-was never actually used.
-@example
-OLD: jtag_device 8 0x01 0xe3 0xfe
-NEW: jtag newtap CHIPNAME TAPNAME \
-           -irlen 8 -ircapture 0x01 -irmask 0xe3
-@end example
-
-@item @b{jtag_speed} value
-@*@xref{JTAG Speed}.
-Usually, a value of zero means maximum
-speed. The actual effect of this option depends on the JTAG interface used.
-@itemize @minus
-@item wiggler: maximum speed / @var{number}
-@item ft2232: 6MHz / (@var{number}+1)
-@item amt jtagaccel: 8 / 2**@var{number}
-@item jlink: maximum speed in kHz (0-12000), 0 will use RTCK
-@item rlink: 24MHz / @var{number}, but only for certain values of @var{number}
-@comment end speed list.
-@end itemize
-
-@item @b{load_binary}
-@*use @option{load_image} command with same args. @xref{load_image}.
-@item @b{run_and_halt_time}
-@*This command has been removed for simpler reset behaviour, it can be simulated with the
-following commands:
-@smallexample
-reset run
-sleep 100
-halt
-@end smallexample
-@item @b{target} <@var{type}> <@var{endian}> <@var{jtag-position}>
-@*use the create subcommand of @option{target}.
-@item @b{target_script} <@var{target#}> <@var{eventname}> <@var{scriptname}>
-@*use <@var{target_name}> configure -event <@var{eventname}> "script <@var{scriptname}>"
-@item @b{working_area}
-@*use the @option{configure} subcommand of @option{target} to set the work-area-virt, work-area-phy, work-area-size, and work-area-backup properties of the target.
-@end itemize
-
 @node FAQ
 @chapter FAQ
 @cindex faq
 @node FAQ
 @chapter FAQ
 @cindex faq
index 8bb45bcdf53dd791cbd9843cf44f787f8054bf91..bbe7425fbe8d8ecf4ad4c0f177a93e7046305e91 100644 (file)
@@ -1569,13 +1569,6 @@ static int jtag_set_speed(int speed)
        return jtag ? jtag->speed(speed) : ERROR_OK;
 }
 
        return jtag ? jtag->speed(speed) : ERROR_OK;
 }
 
-int jtag_config_speed(int speed)
-{
-       LOG_DEBUG("handle jtag speed");
-       clock_mode = CLOCK_MODE_SPEED;
-       return jtag_set_speed(speed);
-}
-
 int jtag_config_khz(unsigned khz)
 {
        LOG_DEBUG("handle jtag khz");
 int jtag_config_khz(unsigned khz)
 {
        LOG_DEBUG("handle jtag khz");
index c5bee07576e6262058875b62373e9fb390877dc0..1dfefdef595da991ce8836dfe9d8e0fb5716a382 100644 (file)
@@ -254,31 +254,25 @@ int jtag_call_event_callbacks(enum jtag_event event);
 
 /// @returns The current JTAG speed setting.
 int jtag_get_speed(void);
 
 /// @returns The current JTAG speed setting.
 int jtag_get_speed(void);
+
 /**
  * Given a @a speed setting, use the interface @c speed_div callback to
  * adjust the setting.
  * @param speed The speed setting to convert back to readable KHz.
  * @returns ERROR_OK if the interface has not been initialized or on success;
 /**
  * Given a @a speed setting, use the interface @c speed_div callback to
  * adjust the setting.
  * @param speed The speed setting to convert back to readable KHz.
  * @returns ERROR_OK if the interface has not been initialized or on success;
- *     otherwise, the error code produced by the @c speed_div callback.
+ *     otherwise, the error code produced by the @c speed_div callback.
  */
 int jtag_get_speed_readable(int *speed);
  */
 int jtag_get_speed_readable(int *speed);
-/**
- * Set the JTAG speed. This routine will call the underlying
- * interface @c speed callback, if the interface has been initialized.
- * @param speed The new speed setting.
- * @returns ERROR_OK during configuration or on success, or an error
- *   code returned from the interface @c speed callback.
- */
-int jtag_config_speed(int speed);
-
 
 /// Attempt to configure the interface for the specified KHz.
 int jtag_config_khz(unsigned khz);
 
 /// Attempt to configure the interface for the specified KHz.
 int jtag_config_khz(unsigned khz);
+
 /**
  * Attempt to enable RTCK/RCLK. If that fails, fallback to the
  * specified frequency.
  */
 int jtag_config_rclk(unsigned fallback_speed_khz);
 /**
  * Attempt to enable RTCK/RCLK. If that fails, fallback to the
  * specified frequency.
  */
 int jtag_config_rclk(unsigned fallback_speed_khz);
+
 /// Retreives the clock speed of the JTAG interface in KHz.
 unsigned jtag_get_speed_khz(void);
 
 /// Retreives the clock speed of the JTAG interface in KHz.
 unsigned jtag_get_speed_khz(void);
 
index c064a825613bae5de8473d973f016fb3aa88cabc..574f266ee4081da3e58f27c6987bf3c246d290d1 100644 (file)
@@ -55,10 +55,8 @@ extern jtag_interface_t *jtag_interface;
 static int handle_interface_list_command(struct command_context_s *cmd_ctx,
                char *cmd, char **args, int argc);
 static int handle_interface_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_interface_list_command(struct command_context_s *cmd_ctx,
                char *cmd, char **args, int argc);
 static int handle_interface_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_speed_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_jtag_rclk_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_jtag_rclk_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int handle_jtag_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_reset_config_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_jtag_nsrst_delay_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_reset_config_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_jtag_nsrst_delay_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
@@ -615,15 +613,11 @@ int jtag_register_commands(struct command_context_s *cmd_ctx)
        register_command(cmd_ctx, NULL,
                "interface_list", &handle_interface_list_command,
                COMMAND_ANY, "list all built-in interfaces");
        register_command(cmd_ctx, NULL,
                "interface_list", &handle_interface_list_command,
                COMMAND_ANY, "list all built-in interfaces");
-       register_command(cmd_ctx, NULL, "jtag_speed", handle_jtag_speed_command,
-               COMMAND_ANY, "(DEPRECATED) set jtag speed (if supported)");
        register_command(cmd_ctx, NULL, "jtag_khz", handle_jtag_khz_command,
                COMMAND_ANY, "set maximum jtag speed (if supported); "
                "parameter is maximum khz, or 0 for adaptive clocking (RTCK).");
        register_command(cmd_ctx, NULL, "jtag_rclk", handle_jtag_rclk_command,
                COMMAND_ANY, "fallback_speed_khz - set JTAG speed to RCLK or use fallback speed");
        register_command(cmd_ctx, NULL, "jtag_khz", handle_jtag_khz_command,
                COMMAND_ANY, "set maximum jtag speed (if supported); "
                "parameter is maximum khz, or 0 for adaptive clocking (RTCK).");
        register_command(cmd_ctx, NULL, "jtag_rclk", handle_jtag_rclk_command,
                COMMAND_ANY, "fallback_speed_khz - set JTAG speed to RCLK or use fallback speed");
-       register_command(cmd_ctx, NULL, "jtag_device", handle_jtag_device_command,
-               COMMAND_CONFIG, "(DEPRECATED) jtag_device <ir_length> <ir_expected> <ir_mask>");
        register_command(cmd_ctx, NULL, "reset_config", handle_reset_config_command,
                COMMAND_ANY,
                "reset_config "
        register_command(cmd_ctx, NULL, "reset_config", handle_reset_config_command,
                COMMAND_ANY,
                "reset_config "
@@ -748,67 +742,6 @@ static int handle_interface_list_command(struct command_context_s *cmd_ctx,
        return ERROR_OK;
 }
 
        return ERROR_OK;
 }
 
-static int handle_jtag_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
-       int e;
-       char buf[1024];
-       Jim_Obj *newargs[ 10 ];
-       /*
-        * CONVERT SYNTAX
-        * argv[-1] = command
-        * argv[ 0] = ir length
-        * argv[ 1] = ir capture
-        * argv[ 2] = ir mask
-        * argv[ 3] = not actually used by anything but in the docs
-        */
-
-       if (argc < 4) {
-               command_print(cmd_ctx, "OLD DEPRECATED SYNTAX: Please use the NEW syntax");
-               return ERROR_OK;
-       }
-       command_print(cmd_ctx, "OLD SYNTAX: DEPRECATED - translating to new syntax");
-       command_print(cmd_ctx, "jtag newtap CHIP TAP -irlen %s -ircapture %s -irvalue %s",
-                                  args[0],
-                                  args[1],
-                                  args[2]);
-       command_print(cmd_ctx, "Example: STM32 has 2 taps, the cortexM3(len4) + boundaryscan(len5)");
-       command_print(cmd_ctx, "jtag newtap stm32 cortexm3 ....., thus creating the tap: \"stm32.cortexm3\"");
-       command_print(cmd_ctx, "jtag newtap stm32 boundary ....., and the tap: \"stm32.boundary\"");
-       command_print(cmd_ctx, "And then refer to the taps by the dotted name.");
-
-       newargs[0] = Jim_NewStringObj(interp, "jtag", -1);
-       newargs[1] = Jim_NewStringObj(interp, "newtap", -1);
-       sprintf(buf, "chip%d", jtag_tap_count());
-       newargs[2] = Jim_NewStringObj(interp, buf, -1);
-       sprintf(buf, "tap%d", jtag_tap_count());
-       newargs[3] = Jim_NewStringObj(interp, buf, -1);
-       newargs[4] = Jim_NewStringObj(interp, "-irlen", -1);
-       newargs[5] = Jim_NewStringObj(interp, args[0], -1);
-       newargs[6] = Jim_NewStringObj(interp, "-ircapture", -1);
-       newargs[7] = Jim_NewStringObj(interp, args[1], -1);
-       newargs[8] = Jim_NewStringObj(interp, "-irmask", -1);
-       newargs[9] = Jim_NewStringObj(interp, args[2], -1);
-
-       command_print(cmd_ctx, "NEW COMMAND:");
-       sprintf(buf, "%s %s %s %s %s %s %s %s %s %s",
-                        Jim_GetString(newargs[0], NULL),
-                        Jim_GetString(newargs[1], NULL),
-                        Jim_GetString(newargs[2], NULL),
-                        Jim_GetString(newargs[3], NULL),
-                        Jim_GetString(newargs[4], NULL),
-                        Jim_GetString(newargs[5], NULL),
-                        Jim_GetString(newargs[6], NULL),
-                        Jim_GetString(newargs[7], NULL),
-                        Jim_GetString(newargs[8], NULL),
-                        Jim_GetString(newargs[9], NULL));
-
-       e = jim_jtag_command(interp, 10, newargs);
-       if (e != JIM_OK) {
-               command_print(cmd_ctx, "%s", Jim_GetString(Jim_GetResult(interp), NULL));
-       }
-       return e;
-}
-
 static int handle_scan_chain_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
        jtag_tap_t *tap;
 static int handle_scan_chain_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
        jtag_tap_t *tap;
@@ -1106,29 +1039,6 @@ static int handle_jtag_ntrst_assert_width_command(struct command_context_s *cmd_
        return ERROR_OK;
 }
 
        return ERROR_OK;
 }
 
-static int handle_jtag_speed_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
-       int retval = ERROR_OK;
-
-       command_print(cmd_ctx, "OLD SYNTAX: DEPRECATED - "
-                       "use jtag_khz, not jtag_speed");
-
-       if (argc > 1)
-               return ERROR_COMMAND_SYNTAX_ERROR;
-       if (argc == 1)
-       {
-               LOG_DEBUG("handle jtag speed");
-
-               unsigned cur_speed = 0;
-               COMMAND_PARSE_NUMBER(uint, args[0], cur_speed);
-
-               retval = jtag_config_speed(cur_speed);
-       }
-       command_print(cmd_ctx, "jtag_speed: %d", jtag_get_speed());
-
-       return retval;
-}
-
 static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
        if (argc > 1)
 static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
        if (argc > 1)
index 2a0aefca4c8a54035bd279fd37c9dd7b1e24e7d7..b251ec5b9bd51e95be7569f3fcb503a03cd7f427 100644 (file)
@@ -38,7 +38,6 @@
 
 
 int arm7_9_debug_entry(target_t *target);
 
 
 int arm7_9_debug_entry(target_t *target);
-int arm7_9_enable_sw_bkpts(struct target_s *target);
 
 /* command handler forward declarations */
 int handle_arm7_9_write_xpsr_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 
 /* command handler forward declarations */
 int handle_arm7_9_write_xpsr_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
index 9c42b6b0841733268296f3cacaef823e4ed4a3b5..c0145d95e375f950a96b678d069e9c9da0a3c8ad 100644 (file)
@@ -47,7 +47,6 @@ typedef struct arm7_9_common_s
 
        uint32_t arm_bkpt; /**< ARM breakpoint instruction */
        uint16_t thumb_bkpt; /**< Thumb breakpoint instruction */
 
        uint32_t arm_bkpt; /**< ARM breakpoint instruction */
        uint16_t thumb_bkpt; /**< Thumb breakpoint instruction */
-       bool force_hw_bkpts;
 
        int sw_breakpoints_added; /**< Specifies which watchpoint software breakpoints are setup on */
        int sw_breakpoint_count; /**< keep track of number of software breakpoints we have set */
 
        int sw_breakpoints_added; /**< Specifies which watchpoint software breakpoints are setup on */
        int sw_breakpoint_count; /**< keep track of number of software breakpoints we have set */
index 3e4c00d0b96007dcaa20fe62228b4ba276ab2ac4..90c143ff541ed0d59508dec1e20b30fad93ff191 100644 (file)
@@ -1282,10 +1282,10 @@ void target_free_all_working_areas(struct target_s *target)
 int target_register_commands(struct command_context_s *cmd_ctx)
 {
 
 int target_register_commands(struct command_context_s *cmd_ctx)
 {
 
-       register_command(cmd_ctx, NULL, "targets", handle_targets_command, COMMAND_EXEC, "change the current command line target (one parameter) or lists targets (with no parameter)");
-
-
-
+       register_command(cmd_ctx, NULL, "targets",
+                       handle_targets_command, COMMAND_EXEC,
+                       "change current command line target (one parameter) "
+                       "or list targets (no parameters)");
 
        register_jim(cmd_ctx, "target", jim_target, "configure target");
 
 
        register_jim(cmd_ctx, "target", jim_target, "configure target");
 
index 01ace63e729ac2141bfdecdb678de2fe1e096979..ce7c87a49a1fbeb2f68b330ec39522c11e1d53f1 100644 (file)
@@ -99,7 +99,7 @@ proc topas910_init { } {
        mww 0xf4300004 0x00000000
 
        sleep 10
        mww 0xf4300004 0x00000000
 
        sleep 10
-#      jtag_speed 10000
+#      jtag_khz NNNN
 
 # remap off in case of IROM boot
        mww 0xf0000004 0x00000001
 
 # remap off in case of IROM boot
        mww 0xf0000004 0x00000001
index 699b42eacf34df7245ed00059ee50f1a730aa90f..a8a6caf6652a4c47696a2f313c7b4b6bb5f4cc54 100644 (file)
@@ -105,7 +105,7 @@ proc topasa900_init { } {
        mww 0xf4300004 0x00000000
 
        sleep 10
        mww 0xf4300004 0x00000000
 
        sleep 10
-#      jtag_speed 10000
+#      jtag_khz NNNN
 
 # remap off in case of IROM boot
        mww 0xf0000004 0x00000001
 
 # remap off in case of IROM boot
        mww 0xf0000004 0x00000001
index 57c68d6138aa3e1f87f118ac441dcd2078dc1df9..a9d7dec44234998f02364f39f90f6df768e6682d 100644 (file)
@@ -5,12 +5,7 @@
 #
 # See calao-usb-a9260-c01.cfg and calao-usb-a9260-c02.cfg.
 #
 #
 # See calao-usb-a9260-c01.cfg and calao-usb-a9260-c02.cfg.
 #
-# Note: You must have an OpenOCD version where jtag_speed sets two values.
-#       trunk r606 contains the fix for this particular issue which can
-#       be seen if jtag_speed does not set two separate values.
-#
 
 
-jtag_speed 1200 0
 jtag_nsrst_delay 200
 jtag_ntrst_delay 200
 
 jtag_nsrst_delay 200
 jtag_ntrst_delay 200
 
index 8bb9ffe6f413d99ddf7379f2369b9d28420b8fc2..4000b23fb1c6cf8ae2dee0844bb159b1a32bd27f 100644 (file)
@@ -9,6 +9,3 @@ ft2232_vid_pid 0x0403 0x6010
 ft2232_device_desc "Dual RS232"
 ft2232_layout "oocdlink"
 ft2232_latency 2
 ft2232_device_desc "Dual RS232"
 ft2232_layout "oocdlink"
 ft2232_latency 2
-# 6/(1+n) Mhz TCLK
-jtag_speed 1
-
index 6aaf80b7bb857a78ec17708d94f2cb88fc2b0193..2a2668d520289732b83423d297b980863f393e2a 100644 (file)
@@ -5,5 +5,4 @@
 interface parport
 parport_port 0xc8b8
 parport_cable wiggler
 interface parport
 parport_port 0xc8b8
 parport_cable wiggler
-jtag_speed 0
 
 
index defda3f3f105deb82f8a9ad9896bd81bc8748204..0f94c656203865bb1f0abe978187e80e963c4ba9 100644 (file)
@@ -7,5 +7,4 @@
 interface parport
 parport_port /dev/parport0
 parport_cable dlc5
 interface parport
 parport_port /dev/parport0
 parport_cable dlc5
-jtag_speed 0
 
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)