aboutsummaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2021-02-26 22:35:39 +0100
committerAntonio Borneo <borneo.antonio@gmail.com>2021-03-04 14:58:58 +0000
commit23d8831391bbd167e0061388c87e7ecf7b9891a7 (patch)
tree12b2426944538239b577a8230229e1d84c93279b /NEWS
parentba0f382137749b78b27ac58238735cc20a6fa847 (diff)
downloadriscv-openocd-23d8831391bbd167e0061388c87e7ecf7b9891a7.zip
riscv-openocd-23d8831391bbd167e0061388c87e7ecf7b9891a7.tar.gz
riscv-openocd-23d8831391bbd167e0061388c87e7ecf7b9891a7.tar.bz2
target: avoid polling during 'resumed' event handler
OpenOCD is based on a single main loop that schedules all the activities. At the execution of a TCL command, the timestamp is checked to eventually trigger the polling of the targets. This means that by executing a TCL command the polling can be triggered and detect a change of target's state. When openocd 'resumes' a target, the target can halt again by hitting a breakpoint. The 'resumed' event handler is started just after the target has been resumed, but it triggers a polling before the execution of its very first instruction. If the polling finds the target halted, it will run the 'halted' event handler, that will then be executed 'before' the pending 'resumed' handler. In case of gdb, a 'continue' command will restart the target but, polling (and halt detection) executed before the end of the resume process will hide the halt. As a consequence, the gdb will not be informed of the halt and will remains waiting as if the target is still running without showing the prompt. This can be verified by running on the target a firmware with a loop, run openocd with a dummy 'resumed' event, and let gdb to set a breakpoint in the loop. A 'continue' command will cause the target to halt again by hitting the breakpoint at the next loop iteration, but gdb will loose it and will not return the prompt. openocd -f board/st_nucleo_f4.cfg -c \ 'stm32f4x.cpu configure -event resumed {echo hello}' arm-none-eabi-gdb -ex 'target remote :3333' -ex 'b *$pc' -ex c Disable the polling while executing target's resume(). Document it and provide hints to developers to cope with future implementation. Change-Id: I3be830a8e7c2ef6278617cb4547a4d676b0ddeb5 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reported-by: Габитов Александр Фаритович <gabitov@planarchel.ru> Reviewed-on: http://openocd.zylin.com/6074 Reviewed-by: Tomas Vanek <vanekt@fbl.cz> Tested-by: jenkins
Diffstat (limited to 'NEWS')
0 files changed, 0 insertions, 0 deletions