Difference between revisions of "ST STM32F0"

From SEGGER Wiki
Jump to: navigation, search
(Option Byte Programming in J-Flash)
(One intermediate revision by the same user not shown)
Line 1: Line 1:
  +
The ST STM32F0 devices are Cortex-M0 based MCUs with low-power functionality.
 
__TOC__
 
__TOC__
   
  +
==Internal Flash==
This article describes device specifics of the ST STM32F0 series devices.
 
  +
The internal flash is divided into 3 different regions:
  +
{| class="seggertable"
  +
|-
  +
! Region name !! Range !! Programmable !! Supported by J-Link
  +
|-
  +
| Main flash memory || 0x0800_0000 - 0x0800_7FFF || {{YES}} || {{YES}}
  +
|-
  +
| Option bytes || 0x1FFF_F800 - 0x1FFF_F80F || {{YES}} || {{YES}}
  +
|}
   
 
== Option Byte Programming in J-Flash ==
 
== Option Byte Programming in J-Flash ==
  +
J-Flash supports programming of the option bytes for STM32F0 devices.
J-Flash supports programming of the option bytes for STM32F0 devices. In order to program the option bytes simply choose the appropriate Device, which allows option byte programming, in the CPU settings tab (e.g. STM32F030CC (allow opt. bytes) ). J-Flash will allow programming a virtual 16-byte sector at address 0x06000000 which represents the 8 option bytes and their complements. You do not have to care about the option bytes complements since they are computated automatically. The following table describes the structure of the option bytes sector:
 
  +
In order to program the option bytes simply choose the appropriate Device, which allows option byte programming, in the CPU settings tab (e.g. STM32F030CC (allow opt. bytes)).
{| class="wikitable"
 
  +
J-Flash will allow programming a virtual 16-byte sector at address 0x06000000 which represents the 8 option bytes and their complements.
  +
You do not have to care about the option bytes complements since they are calculated automatically.
  +
The following table describes the structure of the option bytes sector:
  +
{| class="seggertable"
 
|-
 
|-
 
! Address !! [31:24] !! [23:16] !! [15:08] !! [07:00]
 
! Address !! [31:24] !! [23:16] !! [15:08] !! [07:00]
Line 17: Line 31:
 
| 0x0600000C || complement || Option byte 7 || complement || Option byte 6
 
| 0x0600000C || complement || Option byte 7 || complement || Option byte 6
 
|}
 
|}
  +
{{Note|1=
  +
* Writing a value of 0xFF inside option byte 0 will read-protect the STM32F0. In order to keep the device unprotected you have to write the key value 0xAA into option byte 0.
  +
*The address 0x06000000 is a virtual address only. The option bytes are originally located at address 0x1FFFF800. The remap from 0x06000000 to 0x1FFFF800 is done automatically by J-Flash.
  +
}}
   
  +
=== Example ===
''Note:'' Writing a value of 0xFF inside option byte 0 will read-protect the STM32F0. In order to keep the device unprotected you have to write the key value 0xAA into option byte 0.
 
 
''Note:'' The address 0x06000000 is a virtual address only. The option bytes are originally located at address 0x1FFFF800. The remap from 0x06000000 to 0x1FFFF800 is done automatically by J-Flash.
 
 
'''Example'''
 
 
 
To program the option bytes 2 and 3 with the values 0xAA and 0xBB, but leave the
 
To program the option bytes 2 and 3 with the values 0xAA and 0xBB, but leave the
 
device unprotected your option byte sector (at addr 0x06000000) should look like as
 
device unprotected your option byte sector (at addr 0x06000000) should look like as
 
follows:
 
follows:
{| class="wikitable"
+
{| class="seggertable"
 
|-
 
|-
 
! Address !! [31:24] !! [23:16] !! [15:08] !! [07:00]
 
! Address !! [31:24] !! [23:16] !! [15:08] !! [07:00]

Revision as of 17:03, 18 November 2022

The ST STM32F0 devices are Cortex-M0 based MCUs with low-power functionality.

Internal Flash

The internal flash is divided into 3 different regions:

Region name Range Programmable Supported by J-Link
Main flash memory 0x0800_0000 - 0x0800_7FFF YES.png YES.png
Option bytes 0x1FFF_F800 - 0x1FFF_F80F YES.png YES.png

Option Byte Programming in J-Flash

J-Flash supports programming of the option bytes for STM32F0 devices. In order to program the option bytes simply choose the appropriate Device, which allows option byte programming, in the CPU settings tab (e.g. STM32F030CC (allow opt. bytes)). J-Flash will allow programming a virtual 16-byte sector at address 0x06000000 which represents the 8 option bytes and their complements. You do not have to care about the option bytes complements since they are calculated automatically. The following table describes the structure of the option bytes sector:

Address [31:24] [23:16] [15:08] [07:00]
0x06000000 complement Option byte 1 complement Option byte 0
0x06000004 complement Option byte 3 complement Option byte 2
0x06000008 complement Option byte 5 complement Option byte 4
0x0600000C complement Option byte 7 complement Option byte 6
Note:
  • Writing a value of 0xFF inside option byte 0 will read-protect the STM32F0. In order to keep the device unprotected you have to write the key value 0xAA into option byte 0.
  • The address 0x06000000 is a virtual address only. The option bytes are originally located at address 0x1FFFF800. The remap from 0x06000000 to 0x1FFFF800 is done automatically by J-Flash.

Example

To program the option bytes 2 and 3 with the values 0xAA and 0xBB, but leave the device unprotected your option byte sector (at addr 0x06000000) should look like as follows:

Address [31:24] [23:16] [15:08] [07:00]
0x06000000 0x00 0xFF 0x55 0xAA
0x06000004 0x44 0xBB 0x55 0xAA
0x06000008 0x00 0xFF 0x00 0xFF
0x0600000C 0x00 0xFF 0x00 0xFF

For a detailed description of each option byte, please refer to ST reference manual RM0091, section "Option bytes".

Securing/unsecuring the device

Please refer to the generic wiki-article: STM32#MCU_Security