Detailed description
This PR addresses several regressions in ARM JTAG handling detailed below and necessarily rewrites the ADIv5 high level remote protocol.
The regressions fixed are as follows:
- Fixed a regression introduced with
6dcc5d41which broke non-multiple-of-8 TDI-TDO sequences - Fixed an issue whereby CMSIS-DAP adaptors such as ORBTrace should never have worked with JTAG ADIv5 devices due to initialising the IR length information too late
- Fixed a timing issue in the TDI sequence function much like the TDI-TDO sequence one
- Fixed the remote protocol going "everything's ok" even when dp->fault is set non-zero and everything is not ok
- Fixed the remote protocol pretending exceptions don't exist and the ADIv5 JTAG and SWD layers can't throw them (they can) resulting in permanent comms loss when one occurs
- Fixed the BMDA side of the remote protocol never doing protocol recovery and driving the remote into a state due to not handling any errors at all
As part of the remote protocol rewrite we have pre-emptively split the high-level component of the protocol into generic high-level commands and ADIv5-specific ones to make organisational space for the RISC-V specific ones when v2.0 happens. This happens to also make reading BMDA probe logs easier.
Your checklist for this pull request
- I've read the Code of Conduct
- I've read the guidelines for contributing to this repository
- It builds for hardware native (
make PROBE_HOST=native) - It builds as BMDA (
make PROBE_HOST=hosted) - I've tested it to the best of my ability
- My commit messages provide a useful short description of what the commits do
Closing issues
Fixes #858