Difference between revisions of "TWR-KV58F220M"

From SEGGER Wiki
Jump to: navigation, search
(Created page with "TBD")
 
Line 1: Line 1:
  +
__TOC__
TBD
 
  +
  +
<!--
  +
The STM32 Series is a popular family of Cortex-M devices by STMicroelectronics.
  +
The following article contains information which applies to all members of the product family (e.g. readout protection).
  +
Information which is more specific to the respective sub-family(e.g. QSPI programming) is provided in family specific articles.
  +
  +
A list of all ST devices supported by SEGGER can be found [https://www.segger.com/jlink_supported_devices.html?m=ST#sel here].
  +
For further information regarding the STM32 product family, please refer to the website and documentation by STMicroelectronics.
  +
  +
= MCU Security =
  +
  +
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 ==
  +
  +
=== 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 [https://www.segger.com/jlink-software.html 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.
  +
  +
{| class="wikitable"
  +
|+STM32 series overview
  +
! Sub-Family
  +
! Core
  +
! J-Link Commander and J-Flash:<br> native Unlock support
  +
! J-Link Commander:<br> Lock via commanderfile
  +
! STM32 Unlock tool support
  +
! J-Flash:<br> Unlock project
  +
! J-Flash<ref>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]]</ref>:<br> native lock support
  +
! J-Flash:<br> Lock project
  +
|-
  +
|STM32F0
  +
|Cortex-M0
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F0_Lock.jlink | STM32F0_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F0_Unlock.jflash|STM32F0_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F0_Lock.jflash|STM32F0_Lock.jflash]]
  +
|-
  +
|STM32F1
  +
|Cortex-M3
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F1_Lock.jlink|STM32F1_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F1_Unlock.jflash|STM32F1_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F1_Lock.jflash|STM32F1_Lock.jflash]]
  +
|-
  +
|STM32F2
  +
|Cortex-M3
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F2_Lock.jlink|STM32F2_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F2_Unlock.jflash|STM32F2_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F2_Lock.jflash|STM32F2_Lock.jflash]]
  +
|-
  +
|STM32F3
  +
|Cortex-M4
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F3_Lock.jlink|STM32F3_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F3_Unlock.jflash|STM32F3_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F3_Lock.jflash|STM32F3_Lock.jflash]]
  +
|-
  +
|[[STM32F4]]
  +
|Cortex-M4
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F4_Lock.jlink|STM32F4_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F4_Unlock.jflash|STM32F4_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F4_Lock.jflash|STM32F4_Lock.jflash]]
  +
|-
  +
|[[STM32F7]]
  +
|Cortex-M7
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F7_Lock.jlink|STM32F7_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32F7_Unlock.jflash|STM32F7_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:NO.png|20px|link=]]
  +
|[[:Media:STM32F7_Lock.jflash|STM32F7_Lock.jflash]]
  +
|-
  +
|STM32H7
  +
|Cortex-M7
  +
|N/A
  +
|N/A
  +
|scope="col" style="text-align:center" | [[File:NO.png|20px|link=]]
  +
|N/A
  +
|scope="col" style="text-align:center" | [[File:NO.png|20px|link=]]
  +
|N/A
  +
|-
  +
|STM32L0
  +
|Cortex-M0
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32L0_Lock.jlink|STM32L0_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32L0_Unlock.jflash|STM32L0_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32L0_Lock.jflash|STM32L0_Lock.jflash]]
  +
|-
  +
|STM32L1
  +
|Cortex-M3
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32L1_Lock.jlink|STM32L1_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32L1_Unlock.jflash|STM32L1_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32L1_Lock.jflash|STM32L1_Lock.jflash]]
  +
|-
  +
|[[STM32L4]]
  +
|Cortex-M4
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32L4_Lock.jlink|STM32L4_Lock.jlink]]
  +
|scope="col" style="text-align:center" | [[File:YES.png|20px|link=]]
  +
|[[:Media:STM32L4_Unlock.jflash|STM32L4_Unlock.jflash]]
  +
|scope="col" style="text-align:center" | [[File:NO.png|20px|link=]]
  +
|[[:Media:STM32L4_Lock.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,
  +
<!-- See http://forum.segger.com/index.php?page=Thread&threadID=4150 -->
  +
'''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.
  +
  +
<references/>
  +
-->

Revision as of 11:46, 22 February 2018


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.


-->