COMMON - Common Utilities#
General purpose utilities and cross-compiler support.
This SDK supports the following compilers/IDEs:
Simplicity Studio
IAR Embedded Workbench
Keil uVision IDE
Plain armgcc
Certain compiler features such as alignment is implemented differently in the tools. Therefore, macros such as SL_ALIGN are provided to enable compiler independent code.
Note
RAM code macros are implemented in RAMFUNC. Cross-compiler RAM code support needs extended documentation and it is therefore implemented as a separate module.
Functions#
Count trailing number of zeros.
Reverse the bits.
Reverse the bits.
Reverse the bits.
Convert logarithm of 2 to division factor.
Macros#
Macros to concatenate.
sl concat paster 3.
sl concat paster 4.
Round n up to closest interval of i.
Round n down to closest interval of i.
Stringify X.
A macro for getting the minimum value.
A macro for getting the maximum value.
A GCC style macro for handling packed structures.
A macro for handling packed structures.
A macro for handling packed structures.
GCC style macro for aligning a variable.
A macro for aligning a variable.
A macro for defining a weak symbol.
A macro for handling non-returning functions.
A macro for placing a variable in a section.
A macro for notifying the compiler of an intended switch case fallthrough.
A macro for notifying the compiler to ignore type limit check.
A MACRO to notify the compiler, limit END.
Function Documentation#
SL_CTZ#
uint32_t SL_CTZ (uint32_t value)
Count trailing number of zeros.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| uint32_t | [in] | value | Data value to check for number of trailing zero bits. |
Use CLZ instruction if available.
Returns
A number of trailing zeros in value.
SL_RBIT#
uint32_t SL_RBIT (uint32_t value)
Reverse the bits.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| uint32_t | [in] | value | Data value to reverse. |
Use the RBIT instruction if available, else process.
Returns
A reversed value.
SL_RBIT16#
uint16_t SL_RBIT16 (uint16_t value)
Reverse the bits.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| uint16_t | [in] | value | 16-bit data value to reverse. |
Use the RBIT instruction if available, else process.
Returns
A 16-bit reversed value.
SL_RBIT8#
uint8_t SL_RBIT8 (uint8_t value)
Reverse the bits.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| uint8_t | [in] | value | 8-bit data value to reverse. |
Use the RBIT instruction if available, else process.
Returns
A 8-bit reversed value.
SL_Log2ToDiv#
uint32_t SL_Log2ToDiv (uint32_t log2)
Convert logarithm of 2 to division factor.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| uint32_t | [in] | log2 | Logarithm of 2. |
Returns
Dividend.
Macro Definition Documentation#
SL_CONCAT_PASTER_2#
#define SL_CONCAT_PASTER_2Value:
(first, second)
Macros to concatenate.
sl concat paster 2.
SL_CONCAT_PASTER_4#
#define SL_CONCAT_PASTER_4Value:
(first, second, third, fourth)
sl concat paster 4.
SL_MIN#
#define SL_MINValue:
(a, b)
A macro for getting the minimum value.
No side-effects, a and b are evaluated one time only.
SL_MAX#
#define SL_MAXValue:
(a, b)
A macro for getting the maximum value.
No side-effects, a and b are evaluated one time only.
SL_ATTRIBUTE_PACKED#
#define SL_ATTRIBUTE_PACKEDValue:
__attribute__ ((packed))
A GCC style macro for handling packed structures.
SL_PACK_START#
#define SL_PACK_START
A macro for handling packed structures.
Use this macro before the structure definition. X denotes the maximum alignment of structure members. X is not supported with GCC. GCC always uses 1 byte maximum alignment.
SL_PACK_END#
#define SL_PACK_END
A macro for handling packed structures.
Use this macro after the structure definition. With GCC, add SL_ATTRIBUTE_PACKED after the closing curly braces of the structure definition.
SL_ALIGN#
#define SL_ALIGN
A macro for aligning a variable.
Use this macro before the variable definition. X denotes the storage alignment value in bytes. To be GCC-compatible, use SL_ATTRIBUTE_ALIGN(X) before the semicolon on normal variables. Use SL_ATTRIBUTE_ALIGN(X) before the opening curly brace on structure variables.
SL_NORETURN#
#define SL_NORETURNValue:
__attribute__ ((noreturn))
A macro for handling non-returning functions.
SL_ATTRIBUTE_SECTION#
#define SL_ATTRIBUTE_SECTIONValue:
(X)
A macro for placing a variable in a section.
Use this macro after the variable definition, before the equal sign or a semicolon. X denotes the section to place the variable in.
SL_FALLTHROUGH#
#define SL_FALLTHROUGH
A macro for notifying the compiler of an intended switch case fallthrough.
SL_IGNORE_TYPE_LIMIT_BEGIN#
#define SL_IGNORE_TYPE_LIMIT_BEGIN
A macro for notifying the compiler to ignore type limit check.