Skip to content
  • Tomas Vanek's avatar
    target: improve robustness of reset command · 88258042
    Tomas Vanek authored
    
    
    Before this change jim_target_reset() checked examined state of a target
    and failed without calling .assert_reset in particular target layer
    (and without comprehensible warning to user).
    Cortex-M target (which refuses access to DP under active SRST):
    If connection is lost then reset process fails before asserting SRST
    and connection with MCU is not restored.
    This resulted in:
    1) A lot of Cortex-M MCUs required use of reset button or cycling power
    after firmware blocked SWD access somehow (sleep, misconfigured clock etc).
    If firmware blocks SWD access early during initialization, a MCU could
    become completely inaccessible by SWD.
    2) If OpenOCD is (re)started and a MCU is in a broken state unresponsive
    to SWD, reset command does not work even if it could help to restore communication.
    Hopefully this scenario is not possible under full JTAG.
    
    jim_target_reset() in target.c now does not check examined state
    and delegates this task to a particular target. All targets have been checked
    and xx_assert_reset() (or xx_deassert_reset()) procedures were changed
    to check examined state if needed. Targets except arm11, cortex_a and cortex_m
    just fail if target is not examined although it may be possible to use
    at least hw reset. Left as TODO for developers familiar with these targets.
    
    cortex_m_assert_reset(): memory access errors are stored
    instead of immediate returning them to a higher level.
    Errors from less important reads/writes are ignored.
    Requested reset always leads to a configured action.
    
    arm11_assert_reset() just asserts hw reset in case of not examined target.
    cortex_a_assert_reset() works as usual in case of not examined target.
    
    Change-Id: I84fa869f4f58e2fa83b6ea75de84440d9dc3d929
    Signed-off-by: default avatarTomas Vanek <vanekt@fbl.cz>
    Reviewed-on: http://openocd.zylin.com/2606
    
    
    Tested-by: jenkins
    Reviewed-by: default avatarMatthias Welwarsky <matthias@welwarsky.de>
    Reviewed-by: default avatarPaul Fertser <fercerpav@gmail.com>
    88258042