misc: Added a HACKING.md to provide an explanation of nomenclature and how we handle reset terminology

This commit is contained in:
dragonmux 2022-06-26 18:25:31 -04:00 committed by Piotr Esden-Tempski
parent c33d02bc19
commit 09f64b0627
1 changed files with 27 additions and 0 deletions

27
src/target/HACKING.md Normal file
View File

@ -0,0 +1,27 @@
# Information and terminology guide
## Reset nomenclature
Within this code base, we refer to the physical reset pin of a target device by 'nRST'/'nRESET'.
This is because while originally primrily an ARM debugger, the project is now also a debugger for
RISC-V and AVR where the ARM ADIv5 terminology 'SRST' meaning 'System reset' is ambiguous and
oft very confusing.
The history of this is that 'SRST' in AVR and RISC-V mean 'Software Reset' - by which we refer
to a reset initiated over JTAG protocol by poking registers in the target device.
ADIv5 'System Reset' refers to resetting the target using its nRST pin.
A third moving piece to all this is that 'nTRST' (sometimes also referred to as 'JRST') is an
optional pin sometimes found in JTAG interfaces to reset the JTAG machinary itself.
In summary, the following applies:
* In the ADIv5 spec, the physical reset pin is referred to by 'SRST'
* In this code base, we refer to it by 'nRST'
* Refering to it by 'nRST' is also then consistent with the silkscreen naming convention
on probe host boards and in the ARM 10-pin JTAG pinout
* JTAG physical reset is referred to by 'nTRST'
* Software reset as in the case of JTAG-PDI is refered to by 'SRST' if shortened.
The upshot of this is that to inhibit physical reset in the ARM ADIv5/Cortex-M code, set
`CORTEXM_TOPT_INHIBIT_NRST`, which refers to inhibiting the ADIv5 spec 'SRST'.