Difference between revisions of "Using J-Link VCOM functionality"
Line 4: | Line 4: | ||
In general, the VCOM feature can be disabled and enabled for debug probes which comes |
In general, the VCOM feature can be disabled and enabled for debug probes which comes |
||
with support for it via J-Link Commander and J-Link Configurator. |
with support for it via J-Link Commander and J-Link Configurator. |
||
− | A small description of how to use them to configure the feature can be found on page 218 of the [https://www.segger.com/downloads/jlink/UM08001 J-Link User Guide]. |
||
+ | Note that VCOM can only be used when debugging via SWD target interface. Pin 5 = J-Link-Tx |
||
− | A list of all ST devices supported by SEGGER can be found [https://www.segger.com/jlink_supported_devices.html?m=ST#sel here]. |
||
+ | (out), Pin 17 = J-Link-Rx (in). |
||
− | For further information regarding the STM32 product family, please refer to the website and documentation by STMicroelectronics. |
||
+ | Currently, only J-Link models with hardware version 9 or newer come with VCOM |
||
+ | capabilities. |
||
− | = |
+ | = Enabling VCOM = |
+ | A small description of how to enable VCOM functionality for J-Link can be found on page 218 of the [https://www.segger.com/downloads/jlink/UM08001 J-Link User Guide]. |
||
− | The STM32 series devices provide option bytes which allow "permanent" configuration as well as readout protection for the device. |
||
− | In order to enable or disable readout protection, a sequence of multiple read / write accesses to special function registers of the STM32 MCU has to be performed. |
||
− | The sequence is different for each sub-family of the STM32 device series and is described in the respective reference manual of the device. |
||
− | A list of example J-Link commander files and J-Flash projects which enable or disable the readout protection of an STM32 device is provided below. |
||
− | Please note that the provided files serves as an example / proof of concept. A user may alter them in order to suit their specific use case, e.g. using smaller timeouts, programming other values, etc. |
||
== Disabling readout protection == |
== Disabling readout protection == |
Revision as of 15:06, 24 November 2017
Contents
In general, the VCOM feature can be disabled and enabled for debug probes which comes
with support for it via J-Link Commander and J-Link Configurator.
Note that VCOM can only be used when debugging via SWD target interface. Pin 5 = J-Link-Tx (out), Pin 17 = J-Link-Rx (in). Currently, only J-Link models with hardware version 9 or newer come with VCOM capabilities.
Enabling VCOM
A small description of how to enable VCOM functionality for J-Link can be found on page 218 of the J-Link User Guide.
Disabling readout protection
J-Link Commander and J-Flash
J-Link Commander and J-Flash automatically detect secured STM32 devices and ask the user if it should be unlocked. Further information regarding this can be found here: Secured_ST_device_detected
Flasher standalone mode
In order to unlock a STM32 device in stand-alone mode, the unlock sequence needs to be configured in the init steps of the J-Flash project (see examples in the table below).
Restoring factory defaults
The standalone software tool STM32 Unlock can be used to reset the Option Bytes of a STM32 device to factory default settings. STM32 Unlock is part of the J-Link software & documentation pack.
Enabling readout protection
All provided J-Link Commander command files and J-Flash projects set the read out protection to level 1 (ROP == Level 1). In order to set ROP Level 2, the value "0xBB" needs to be changed to "0xCC" where indicated in the command file / Exit steps of the J-Flash project. Please note that ROP Level 2 is permanent and can neither be reverted by SEGGER nor by ST.
Sub-Family | Core | J-Link Commander and J-Flash: native Unlock support |
J-Link Commander: Lock via commanderfile |
STM32 Unlock tool support | J-Flash: Unlock project |
J-Flash[1]: native lock support |
J-Flash: Lock project |
---|---|---|---|---|---|---|---|
STM32F0 | Cortex-M0 | STM32F0_Lock.jlink | STM32F0_Unlock.jflash | STM32F0_Lock.jflash | |||
STM32F1 | Cortex-M3 | STM32F1_Lock.jlink | STM32F1_Unlock.jflash | STM32F1_Lock.jflash | |||
STM32F2 | Cortex-M3 | STM32F2_Lock.jlink | STM32F2_Unlock.jflash | STM32F2_Lock.jflash | |||
STM32F3 | Cortex-M4 | STM32F3_Lock.jlink | STM32F3_Unlock.jflash | STM32F3_Lock.jflash | |||
STM32F4 | Cortex-M4 | STM32F4_Lock.jlink | STM32F4_Unlock.jflash | STM32F4_Lock.jflash | |||
STM32F7 | Cortex-M7 | STM32F7_Lock.jlink | STM32F7_Unlock.jflash | STM32F7_Lock.jflash | |||
STM32H7 | Cortex-M7 | N/A | N/A | N/A | N/A | ||
STM32L0 | Cortex-M0 | STM32L0_Lock.jlink | STM32L0_Unlock.jflash | STM32L0_Lock.jflash | |||
STM32L1 | Cortex-M3 | STM32L1_Lock.jlink | STM32L1_Unlock.jflash | STM32L1_Lock.jflash | |||
STM32L4 | Cortex-M4 | STM32L4_Lock.jlink | STM32L4_Unlock.jflash | STM32L4_Lock.jflash |
All command files and J-Flash projects have a specific MCU selected. For the sole purpose of locking the device via J-Link commander changing of the device name is not necessary, but it is mandatory to change the device name to the actual device used when using J-Flash or doing any flash programming in J-Link commander.
Please note that securing a device via J-Link command files is limited in a way that interpretation of return values, if / else branches etc. are not available. Therefore, production programming and securing of devices can only be done with J-Flash or the J-Link SDK. In any case, it is the responsibility of the user to verify that the required read out protection is active before the programming device leaves the production facility.
- ↑ For further information regarding native support in J-Flash and why native support is no longer implemented for new devices, please refer to this article: MCU_Security_Options