README: write documentation
This commit is contained in:
parent
e37dfe81eb
commit
8ab6dc1ab5
135
README.md
135
README.md
|
@ -1,4 +1,4 @@
|
||||||
This firmware template is designed for development boards based around [STM32 F4 series micro-controller](https://www.st.com/en/microcontrollers-microprocessors/stm32f4-series.html).
|
firmware is for the SWJ finder.
|
||||||
|
|
||||||
project
|
project
|
||||||
=======
|
=======
|
||||||
|
@ -6,31 +6,142 @@ project
|
||||||
summary
|
summary
|
||||||
-------
|
-------
|
||||||
|
|
||||||
*describe project purpose*
|
this tools allow to find JTAG and SWD (SWJ) interface on up to 16 channels.
|
||||||
|
|
||||||
|
usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
connect the pins or test points of the target device to the SWJ finder channels pins on the connector.
|
||||||
|
select the first and last channel to probe using the `start <CH>` ans `stop <CH>` commands.
|
||||||
|
this prevents sending data on the unselected channels.
|
||||||
|
this will also make the scan faster, else it needs up to 5 seconds.
|
||||||
|
|
||||||
|
also connect the target voltage pin to the SWJ finder in order to use the right signal voltage level.
|
||||||
|
alternatively, the SWJ finder can supply 5V or 3.3V to the target voltage pin using the `voltage 5` or `voltage 3` command.
|
||||||
|
to revert to using the externally provided target voltage, use the `voltage 0` command.
|
||||||
|
to measure the target voltage, use the `voltage` command.
|
||||||
|
|
||||||
|
to scan for JTAG interfaces, use the `jtag` command.
|
||||||
|
to scan for SWD interfaces, use the `swd` command.
|
||||||
|
the scan results and found SWJ pins will be displayed as they are found.
|
||||||
|
it will also try to identify the target debug core.
|
||||||
|
the scanning will take up to 5 seconds.
|
||||||
|
WARNING: data will be sent on the selected channels (see limitations).
|
||||||
|
|
||||||
|
you can also reset the target board if you connected to target reset pin to the SWJ finder.
|
||||||
|
you can select of to drive the reset pin (OD for open-drain, PP for push-pull) and active level (H for high, L for low) using the `reset [ODL|ODH|PPL|PPH]` command.
|
||||||
|
to assert or release the reset, us the `reset 1` or `reset 0` commands.
|
||||||
|
alternatively, pressing/releasing the button on the SWJ finder asserts/releases the reset signal
|
||||||
|
|
||||||
|
use the `help` command to list all commands.
|
||||||
|
this will also list the shortcuts for the commands.
|
||||||
|
|
||||||
technology
|
technology
|
||||||
----------
|
----------
|
||||||
|
|
||||||
*described electronic details*
|
to scan for JTAG interfaces, it will use all 2-pin combinations as TCK and TMS signals to:
|
||||||
|
|
||||||
|
- switch the target to JTAG mode (in case it is in SWD mode)
|
||||||
|
- put in reset state (TEST-LOGIC-RESET)
|
||||||
|
- go into SHIFT-DR state to have the target output the IDCODE
|
||||||
|
|
||||||
|
any activity on one the other pins could be the IDCODE output on TDO.
|
||||||
|
this allows to identify the TCk, TMS, and TDO pins.
|
||||||
|
|
||||||
|
it will than send a patterns on each of the other pins.
|
||||||
|
if this pattern is found on the TDO will, the TDI pin is identified.
|
||||||
|
|
||||||
|
|
||||||
|
to scan for SWD interfaces, it will use all 2-pin combinations as SWCLK and SWDIO pins to:
|
||||||
|
|
||||||
|
- switch the target to SWD mode (in case it is in JTAG mode)
|
||||||
|
- put in reset state (using line reset)
|
||||||
|
- request the DPIDR (e.g. IDCODE)
|
||||||
|
|
||||||
|
if the target replies, the SWCLK and SWDIO have been successfully identified.
|
||||||
|
|
||||||
|
limitation
|
||||||
|
----------
|
||||||
|
|
||||||
|
the target voltage should not be higher than 5.5V (board I/O-pins limitation).
|
||||||
|
but I am not sure a SWJ target with signals higher than 3.3V even exist.
|
||||||
|
it can operate down to 1.5V (BSS138-based level shifter limitation).
|
||||||
|
|
||||||
|
all channel pins are pulled to by a 10 kOhm to the target voltage.
|
||||||
|
this is required to operate the level shifter.
|
||||||
|
this also means all channel pins are inter-connected by a 20 kOhm resistor when no target voltage is provided.
|
||||||
|
|
||||||
|
all channel pins have a 150 Ohm inline resistor protection.
|
||||||
|
this means the SWJ finder will sink up to 22 mA when transmitting a low level signal (high level is provided by the pull up resistor).
|
||||||
|
|
||||||
|
the reset pin has no inline protection resistor and can sink up to 25 mA.
|
||||||
|
in open drain mode, an external pull-up resistor is required, most often provide by the target device.
|
||||||
|
in push-pull mode it can only source 3.3V up to 25 mA.
|
||||||
|
|
||||||
|
when the IDCODE seems corrupted and the decoded manufacturer looks wrong, it might be due to too low impedance on the clock (SWCLK/TCK) line.
|
||||||
|
the clock signal needs a very sharp rising edge, but we are limited by the voltage shifter.
|
||||||
|
try shorter cables, or remove any other device (e.g. logic analyzer) from the test points.
|
||||||
|
|
||||||
board
|
board
|
||||||
=====
|
=====
|
||||||
|
|
||||||
The underlying template also supports following board:
|
the underlying hardware uses a [WeAct MiniF4](https://github.com/WeActTC/MiniF4-STM32F4x1) board, based on a STM32F401CCU6.
|
||||||
|
the bi-directional level shifter are BSS138 n-channel MOSFET based.
|
||||||
- [WeAct MiniF4](https://github.com/WeActTC/MiniF4-STM32F4x1), based on a STM32F401CCU6
|
switching the target voltage are done using BSS84 p-channel MOSFET.
|
||||||
|
|
||||||
**Which board is used is defined in the Makefile**.
|
|
||||||
This is required to map the user LED and button provided on the board
|
|
||||||
|
|
||||||
connections
|
connections
|
||||||
===========
|
===========
|
||||||
|
|
||||||
Connect the peripherals the following way (STM32F4xx signal; STM32F4xx pin; peripheral pin; peripheral signal; comment):
|
channel pins:
|
||||||
|
|
||||||
- *list board to peripheral pin connections*
|
- PB12, high voltage side of level shifter, low voltage side goes to CH0
|
||||||
|
- PB13, high voltage side of level shifter, low voltage side goes to CH1
|
||||||
|
- PB14, high voltage side of level shifter, low voltage side goes to CH2
|
||||||
|
- PB15, high voltage side of level shifter, low voltage side goes to CH3
|
||||||
|
- PA8, high voltage side of level shifter, low voltage side goes to CH4
|
||||||
|
- PA9, high voltage side of level shifter, low voltage side goes to CH5
|
||||||
|
- PA10, high voltage side of level shifter, low voltage side goes to CH6
|
||||||
|
- PA15, high voltage side of level shifter, low voltage side goes to CH7
|
||||||
|
- PB3, high voltage side of level shifter, low voltage side goes to CH8
|
||||||
|
- PB4, high voltage side of level shifter, low voltage side goes to CH9
|
||||||
|
- PB5, high voltage side of level shifter, low voltage side goes to CH10
|
||||||
|
- PB6, high voltage side of level shifter, low voltage side goes to CH11
|
||||||
|
- PB7, high voltage side of level shifter, low voltage side goes to CH12
|
||||||
|
- PB8, high voltage side of level shifter, low voltage side goes to CH13
|
||||||
|
- PB9, high voltage side of level shifter, low voltage side goes to CH14
|
||||||
|
- PB10, high voltage side of level shifter, low voltage side goes to CH15
|
||||||
|
|
||||||
All pins are configured using `define`s in the corresponding source code.
|
BSS138 n-channel MOSFET based bi-directional level shifter:
|
||||||
|
|
||||||
|
- high voltage supply is 5V
|
||||||
|
- low voltage supply is connected to drain of BSS84 p-channel MOSFET
|
||||||
|
- source of BSS84 p-channel MOSFET is target voltage pin
|
||||||
|
- gate of BSS84 p-channel MOSFET is connected to PA5, pulled up to target voltage using 100 kOhm resistor
|
||||||
|
|
||||||
|
BSS84 p-channel MOSFET to supply target voltage with 5V:
|
||||||
|
|
||||||
|
- source is connected 5V
|
||||||
|
- drain is connected to target voltage
|
||||||
|
- gate is connected to PA7, pulled up to target voltage using 100 kOhm resistor
|
||||||
|
|
||||||
|
BSS84 p-channel MOSFET to supply target voltage with 3.3V:
|
||||||
|
|
||||||
|
- source is connected 3.3V
|
||||||
|
- drain is connected to target voltage
|
||||||
|
- gate is connected to PB0, pulled up to target voltage using 100 kOhm resistor
|
||||||
|
|
||||||
|
target voltage measure:
|
||||||
|
|
||||||
|
- PA1 is connected to target voltage through 22 kOhm inline resistor
|
||||||
|
- PA1 is connected to ground through 22 kOhm inline resistor
|
||||||
|
- this creates a /2 voltage divider, allowing to measure up the 6.6V
|
||||||
|
|
||||||
|
other:
|
||||||
|
|
||||||
|
- PA6 is connected target reset pin
|
||||||
|
- reset button is connected to PA0 on one side, ground on the other.
|
||||||
|
|
||||||
|
all pins are configured using `define`s in the corresponding source code.
|
||||||
|
|
||||||
code
|
code
|
||||||
====
|
====
|
||||||
|
|
Loading…
Reference in New Issue