Reset is an important aspect of every debugging experience. Reset will put your target in a known working state, accomplish tasks before processor execution begins, or avoid a problematic situation by starting over. The Armv8-A architecture provides very few restrictions on how, when, and where reset is performed.
This lack of restriction in the architecture means that the SoC or board designer determines:
- How the different devices on the SoC are reset
- How the reset requests are distributed and accomplished on the target
- How the reset signals are connected to any physical debug connectors
This lack of restriction in the architecture also means that the debugger determines:
- What reset types are available
- What is invoked when a reset request is made
- Whether the reset is done through hardware or software means
This means that it might be difficult to determine what happens when you perform a reset in a debugger.
For example, when you perform a System Reset on a hardware target in Arm Development Studio, the System Reset (nSRST) pin signal on the target debug connector is toggled. The design of the SoC determines whether the nSRST signal is connected to the devices necessary to create the equivalent of a System Reset on the target.
It is a good idea to consult your debugger and target documentation to determine how the desired reset option can be achieved.