Using J-Link VCOM functionality
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