libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
desig.h File Reference
Include dependency graph for desig.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

uint16_t desig_get_flash_size (void)
 Read the on board flash size. More...
 
void desig_get_unique_id (uint32_t *result)
 Read the full 96 bit unique identifier Note: ST specifies that bits 31..16 are also reserved for future use. More...
 
void desig_get_unique_id_as_string (char *string, unsigned int string_len)
 Read the full 96 bit unique identifier and return it as a zero-terminated string. More...
 
void desig_get_unique_id_as_dfu (char *string)
 Generate the same serial number from the unique id registers as the DFU bootloader. More...
 

Function Documentation

◆ desig_get_flash_size()

uint16_t desig_get_flash_size ( void  )

Read the on board flash size.

Returns
flash size in KB

Definition at line 24 of file desig.c.

References cm3_assert_not_reached, DBGMCU_IDCODE, DBGMCU_IDCODE_DEV_ID_MASK, DESIG_FLASH_SIZE_BASE_CAT12, and DESIG_FLASH_SIZE_BASE_CAT3456.

◆ desig_get_unique_id()

void desig_get_unique_id ( uint32_t *  result)

Read the full 96 bit unique identifier Note: ST specifies that bits 31..16 are also reserved for future use.

Parameters
resultpointer to at least 3xuint32_ts (96 bits)

Definition at line 45 of file desig.c.

References cm3_assert_not_reached, DBGMCU_IDCODE, DBGMCU_IDCODE_DEV_ID_MASK, DESIG_UNIQUE_ID_BASE_CAT12, and DESIG_UNIQUE_ID_BASE_CAT3456.

Referenced by desig_get_unique_id_as_dfu(), and desig_get_unique_id_as_string().

Here is the caller graph for this function:

◆ desig_get_unique_id_as_dfu()

void desig_get_unique_id_as_dfu ( char *  string)

Generate the same serial number from the unique id registers as the DFU bootloader.

This document: http://www.usb.org/developers/docs/devclass_docs/usbmassbulk_10.pdf says that the serial number has to be at least 12 digits long and that the last 12 digits need to be unique. It also stipulates that the valid character set is that of upper-case hexadecimal digits. The onboard DFU bootloader produces a 12-digit serial based on the 96-bit unique ID. Show the serial with dfu-util -l while the MCU is in DFU mode.

See also
https://my.st.com/52d187b7 for the algorithim used.
Parameters
stringpointer to store serial in, must be at least 13 bytes

Definition at line 43 of file desig_common_all.c.

References desig_get_unique_id().

Here is the call graph for this function:

◆ desig_get_unique_id_as_string()

void desig_get_unique_id_as_string ( char *  string,
unsigned int  string_len 
)

Read the full 96 bit unique identifier and return it as a zero-terminated string.

Parameters
stringmemory region to write the result to
string_lenthe size of string in bytes

Definition at line 22 of file desig_common_all.c.

References desig_get_unique_id().

Here is the call graph for this function: