Hi Antonio,
You’re correct, I forgot to mention, I additionally removed the
if (!jaylink_has_cap(caps, JAYLINK_DEV_CAP_READ_CONFIG)) {…} and
if (!jaylink_has_cap(caps, JAYLINK_DEV_CAP_SET_TARGET_POWER)) {…} lines
To skip the checks (otherwise it would fail indeed).
I’ll read the guidelines and hope to be able to contribute well.
I was wondering why the other config_subcommands had the COMMAND_EXEC mode as
well but I just started looking into the OpenOCD code and need to get on track.
I also noted another undocumented command ‘jlink set targetpower’ but command
also has the COMMAND_EXEC mode.
Rolf
Op 10 dec. 2022, om 17:34 heeft Antonio Borneo
<[email protected]<mailto:[email protected]>> het volgende
geschreven:
On Sat, Dec 10, 2022 at 4:03 PM Rolf | Onethinx
<[email protected]<mailto:[email protected]>> wrote:
Hi,
There is a problem with setting JLink power on. JLink has a possibility to feed
the target hardware from the J-Link debugger.
There is a command already in OpenOCD: `jlink config targetpower on`, however
the current implementation does not work. The target power has to be ON before
the `init` command because the init command needs to connect to the chip.
Currently this is not allowed: `The ‘link config targetpower’ command must be
used after ‘init’`. This does not make sense as init will fail when there’s no
power applied to the target chip.
Hi,
thanks for highlighting this issue.
I agree with your analysis, and I add that _every_ command in the
array jlink_config_subcommand_handlers[] has incorrect .mode =
COMMAND_EXEC !
I did some changes to jlink.c in order to make it work, however I’m not
familiar with the OpenOCD development and I’m unsure about the correct coding
style for OpenOCD.
I would like to invite you to contribute to OpenOCD by following the guide in
https://openocd.org/doc/doxygen/html/index.html
where there is the coding style and the Patch Guidelines
If there is anything unclear, we can assist you and also take your
feedback to improve the documentation.
I did these modifications to /jtag/drivers/jlink.c for version 0.12.0-rc2+dev:
Changed the command mode of `jlink config targetpower` from COMMAND_EXEC to
COMMAND_CONFIG (line 1822)
Inserted the following code at line 754 (just after the check of the J-Link
hardware version) to check if the `jlink config targetpower on` has been
issued:
I'm surprised this works, but maybe I didn't checked well the code.
The command 'jlink config targetpower' executes
jlink_handle_config_target_power_command() that has:
if (!jaylink_has_cap(caps, JAYLINK_DEV_CAP_READ_CONFIG)) {
command_print(CMD, "Reading configuration is not
supported by the "
"device");
return ERROR_OK;
}
so the command should return immediately if the command is called before init.
The capabilities in caps are set during init.
Antonio