IAR PLATFORM_HEADER Configuration#

Compiler and Platform specific definitions and typedefs for the IAR ARM C compiler.

Note

  • iar.h should be included first in all source files by setting the preprocessor macro PLATFORM_HEADER to point to it. iar.h automatically includes platform-common.h.

See iar.h and platform-common.h for source code.

Master Variable Types#

LEGACY_PHY_BUILDThese are a set of typedefs to make the size of all variable declarations explicitly known.

typedef bool

A typedef to make the size of the variable explicitly known.

typedef unsigned char

Denotes that this platform supports 64-bit data-types.

typedef signed char

Denotes that this platform supports 64-bit data-types.

typedef unsigned short

Denotes that this platform supports 64-bit data-types.

typedef signed short

Denotes that this platform supports 64-bit data-types.

typedef unsigned int

Denotes that this platform supports 64-bit data-types.

typedef signed int

Denotes that this platform supports 64-bit data-types.

typedef unsigned long long

Denotes that this platform supports 64-bit data-types.

typedef signed long long

Denotes that this platform supports 64-bit data-types.

typedef unsigned int

Denotes that this platform supports 64-bit data-types.

#define
HAL_HAS_INT64

Denotes that this platform supports 64-bit data-types.

#define
_HAL_USE_COMMON_PGM_

Use the Master Program Memory Declarations from platform-common.h.

Miscellaneous Macros#

void
halInternalAssertFailed(const char *filename, int linenumber)

A prototype definition for use by the assert macro. (see hal/micro/micro.h)

void

Macro to reset the watchdog timer. Note: be very very careful when using this as you can easily get into an infinite loop if you are not careful.

#define
BIGENDIAN_CPU false

A convenient method for code to know what endiannes processor it is running on. For the Cortex-M3, we are little endian.

#define
NTOHS (val)

Define intrinsics for NTOHL and NTOHS to save code space by making endian.c compile to nothing.

#define
NTOHL (val)

A convenient method for code to know what endiannes processor it is running on. For the Cortex-M3, we are little endian.

#define
NO_STRIPPING __root

A friendlier name for the compiler's intrinsic for not stripping.

#define
EEPROM errorerror

A friendlier name for the compiler's intrinsic for eeprom reference.

#define
__SOURCEFILE__ __FILE__

The SOURCEFILE macro is used by asserts to list the filename if it isn't otherwise defined, set it to the compiler intrinsic which specifies the whole filename and path of the sourcefile.

#define
assert (condition)

A custom implementation of the C language assert macro. This macro implements the conditional evaluation and calls the function halInternalAssertFailed(). (see hal/micro/micro.h)

#define
halResetWatchdog ()

A convenient method for code to know what endiannes processor it is running on. For the Cortex-M3, we are little endian.

#define
UNUSED

Declare a variable as unused to avoid a warning. Has no effect in IAR builds.

#define
SIGNED_ENUM

Some platforms need to cast enum values that have the high bit set.

#define
STACK_FILL_VALUE 0xCDCDCDCDU

Define the magic value that is interpreted by IAR C-SPY's Stack View.

#define
RAMFUNC __ramfunc

Define a generic RAM function identifier to a compiler specific one.

#define
NO_OPERATION ()

Define a generic no operation identifier to a compiler specific one.

#define
SET_REG_FIELD (reg, field, value)

A convenience macro that makes it easy to change the field of a register to any unsigned value.

#define
SET_CMSIS_REG (reg, mask, value)

A convenience macro that makes it easy to change a register using the provided mask(s) and value(s). Example: SET_CMSIS_REG(GPIO->P[1].CFGH, (_GPIO_P_CFGH_Px5_MASK | _GPIO_P_CFGH_Px6_MASK), (GPIO_P_CFGH_Px5_OUT | GPIO_P_CFGH_Px6_OUT));.

#define
SET_CMSIS_REG_FIELD (reg, field, value)

A convenience macro that makes it easy to change the field of a register, as defined in CMSIS Device headers, to any unsigned value. Example using EM35xx: SET_CMSIS_REG_FIELD(GPIO->P[0].CFGL, GPIO_P_CFGL_Px0, _GPIO_P_CFGL_Px0_OUT);.

#define
simulatedTimePasses ()

Stub for code not running in simulation.

#define
simulatedTimePassesMs (x)

Stub for code not running in simulation.

#define
simulatedSerialTimePasses ()

Stub for code not running in simulation.

#define
_HAL_USE_COMMON_DIVMOD_

Use the Divide and Modulus Operations from platform-common.h.

#define
VAR_AT_SEGMENT (__variableDeclaration, __segmentName)

Provide a portable way to specify the segment where a variable lives.

#define
STRINGIZE (X)

Convinience macro for turning a token into a string.

#define
ALIGNMENT (X)

Provide a portable way to align data.

#define
WEAK (__symbol)

Provide a portable way to specify a symbol as weak.

#define
NO_INIT (__symbol)

Provide a portable way to specify a non initialized symbol.

#define
STATIC_ASSERT (__condition, __errorstr)

Provide a portable way to specify a compile time assert.

External Declarations#

If the line below is uncommented we will use Ember memory APIs, otherwise, we will use the C Standard library (memset,memcpy,memmove) APIs.These are routines that are defined in certain header files that we don't want to include, e.g. stdlib.h

int
abs(int I)

Returns the absolute value of I (also called the magnitude of I). That is, if I is negative, the result is the opposite of I, but if I is nonnegative the result is I.

#define
PLATCOMMONOKTOINCLUDE

Include platform-common.h last to pick up defaults and common definitions.

#define
MAIN_FUNCTION_PARAMETERS void

The kind of arguments the main function takes.

#define
MAIN_FUNCTION_ARGUMENTS

Include platform-common.h last to pick up defaults and common definitions.

Portable segment names#

#define
__NO_INIT__ ".noinitlegacy"

Portable segment names.

#define
__DEBUG_CHANNEL__ "DEBUG_CHANNEL"

Portable segment names.

#define
__INTVEC__ ".intvec"

Portable segment names.

#define
__CSTACK__ "CSTACK"

Portable segment names.

#define
__RESETINFO__ "RESETINFO"

Portable segment names.

#define
__DATA_INIT__ ".data_init"

Portable segment names.

#define
__DATA__ ".data"

Portable segment names.

#define
__BSS__ ".bss"

Portable segment names.

#define
__CONST__ ".rodata"

Portable segment names.

#define
__TEXT__ ".text"

Portable segment names.

#define
__TEXTRW_INIT__ ".textrw_init"

Portable segment names.

#define
__TEXTRW__ ".textrw"

Portable segment names.

#define
__AAT__ "AAT"

Portable segment names.

#define
__BAT__ "BAT"

Portable segment names.

#define
__BAT_INIT__ "BAT"

Portable segment names.

#define
__FAT__ "FAT"

Portable segment names.

#define
__RAT__ "RAT"

Portable segment names.

#define
__SIMEE__ "SIMEE"

Portable segment names.

#define
__PSSTORE__ "PSSTORE"

Portable segment names.

#define
__LONGTOKEN__ "LONGTOKEN"

Portable segment names.

#define
__EMHEAP__ "EMHEAP"

Portable segment names.

#define
__GUARD_REGION__ "GUARD_REGION"

Portable segment names.

#define
__DLIB_PERTHREAD_INIT__ "__DLIB_PERTHREAD_init"

Portable segment names.

#define
__DLIB_PERTHREAD_INITIALIZED_DATA__ "DLIB_PERTHREAD_INITIALIZED_DATA"

Portable segment names.

#define
__DLIB_PERTHREAD_ZERO_DATA__ "DLIB_PERTHREAD_ZERO_DATA"

Portable segment names.

#define
__INTERNAL_STORAGE__ "INTERNAL_STORAGE"

Portable segment names.

#define
__LOCKBITS_IN_MAINFLASH__ "LOCKBITS_IN_MAINFLASH"

Portable segment names.

#define
__UNRETAINED_RAM__ "UNRETAINED_RAM"

Portable segment names.

#define
_NO_INIT_SEGMENT_BEGIN __segment_begin(__NO_INIT__)

Portable segment names.

#define
_DEBUG_CHANNEL_SEGMENT_BEGIN __segment_begin(__DEBUG_CHANNEL__)

Portable segment names.

#define
_INTVEC_SEGMENT_BEGIN __segment_begin(__INTVEC__)

Portable segment names.

#define
_CSTACK_SEGMENT_BEGIN __segment_begin(__CSTACK__)

Portable segment names.

#define
_RESETINFO_SEGMENT_BEGIN __segment_begin(__RESETINFO__)

Portable segment names.

#define
_DATA_INIT_SEGMENT_BEGIN __segment_begin(__DATA_INIT__)

Portable segment names.

#define
_DATA_SEGMENT_BEGIN __segment_begin(__DATA__)

Portable segment names.

#define
_BSS_SEGMENT_BEGIN __segment_begin(__BSS__)

Portable segment names.

#define
_CONST_SEGMENT_BEGIN __segment_begin(__CONST__)

Portable segment names.

#define
_TEXT_SEGMENT_BEGIN __segment_begin(__TEXT__)

Portable segment names.

#define
_TEXTRW_INIT_SEGMENT_BEGIN __segment_begin(__TEXTRW_INIT__)

Portable segment names.

#define
_TEXTRW_SEGMENT_BEGIN __segment_begin(__TEXTRW__)

Portable segment names.

#define
_AAT_SEGMENT_BEGIN __segment_begin(__AAT__)

Portable segment names.

#define
_BAT_SEGMENT_BEGIN __segment_begin(__BAT__)

Portable segment names.

#define
_BAT_INIT_SEGMENT_BEGIN __segment_begin(__BAT_INIT__)

Portable segment names.

#define
_FAT_SEGMENT_BEGIN __segment_begin(__FAT__)

Portable segment names.

#define
_RAT_SEGMENT_BEGIN __segment_begin(__RAT__)

Portable segment names.

#define
_SIMEE_SEGMENT_BEGIN __segment_begin(__SIMEE__)

Portable segment names.

#define
_PSSTORE_SEGMENT_BEGIN __segment_begin(__PSSTORE__)

Portable segment names.

#define
_LONGTOKEN_SEGMENT_BEGIN __segment_begin(__LONGTOKEN__)

Portable segment names.

#define
_EMHEAP_SEGMENT_BEGIN __segment_begin(__EMHEAP__)

Portable segment names.

#define
_GUARD_REGION_SEGMENT_BEGIN __segment_begin(__GUARD_REGION__)

Portable segment names.

#define
_DLIB_PERTHREAD_INIT_SEGMENT_BEGIN __segment_begin(__DLIB_PERTHREAD_INIT__)

Portable segment names.

#define
_DLIB_PERTHREAD_INITIALIZED_DATA_SEGMENT_BEGIN __segment_begin(__DLIB_PERTHREAD_INITIALIZED_DATA__)

Portable segment names.

#define
_DLIB_PERTHREAD_ZERO_DATA_SEGMENT_BEGIN __segment_begin(__DLIB_PERTHREAD_ZERO_DATA__)

Portable segment names.

#define
_INTERNAL_STORAGE_SEGMENT_BEGIN __segment_begin(__INTERNAL_STORAGE__)

Portable segment names.

#define
_LOCKBITS_IN_MAINFLASH_SEGMENT_BEGIN __segment_begin(__LOCKBITS_IN_MAINFLASH__)

Portable segment names.

#define
_UNRETAINED_RAM_SEGMENT_BEGIN __segment_begin(__UNRETAINED_RAM__)

Portable segment names.

#define
_NO_INIT_SEGMENT_END __segment_end(__NO_INIT__)

Portable segment names.

#define
_DEBUG_CHANNEL_SEGMENT_END __segment_end(__DEBUG_CHANNEL__)

Portable segment names.

#define
_INTVEC_SEGMENT_END __segment_end(__INTVEC__)

Portable segment names.

#define
_CSTACK_SEGMENT_END __segment_end(__CSTACK__)

Portable segment names.

#define
_RESETINFO_SEGMENT_END __segment_end(__RESETINFO__)

Portable segment names.

#define
_DATA_INIT_SEGMENT_END __segment_end(__DATA_INIT__)

Portable segment names.

#define
_DATA_SEGMENT_END __segment_end(__DATA__)

Portable segment names.

#define
_BSS_SEGMENT_END __segment_end(__BSS__)

Portable segment names.

#define
_CONST_SEGMENT_END __segment_end(__CONST__)

Portable segment names.

#define
_TEXT_SEGMENT_END __segment_end(__TEXT__)

Portable segment names.

#define
_TEXTRW_INIT_SEGMENT_END __segment_end(__TEXTRW_INIT__)

Portable segment names.

#define
_TEXTRW_SEGMENT_END __segment_end(__TEXTRW__)

Portable segment names.

#define
_AAT_SEGMENT_END __segment_end(__AAT__)

Portable segment names.

#define
_BAT_SEGMENT_END __segment_end(__BAT__)

Portable segment names.

#define
_BAT_INIT_SEGMENT_END __segment_end(__BAT_INIT__)

Portable segment names.

#define
_FAT_SEGMENT_END __segment_end(__FAT__)

Portable segment names.

#define
_RAT_SEGMENT_END __segment_end(__RAT__)

Portable segment names.

#define
_SIMEE_SEGMENT_END __segment_end(__SIMEE__)

Portable segment names.

#define
_PSSTORE_SEGMENT_END __segment_end(__PSSTORE__)

Portable segment names.

#define
_LONGTOKEN_SEGMENT_END __segment_end(__LONGTOKEN__)

Portable segment names.

#define
_EMHEAP_SEGMENT_END __segment_end(__EMHEAP__)

Portable segment names.

#define
_GUARD_REGION_SEGMENT_END __segment_end(__GUARD_REGION__)

Portable segment names.

#define
_DLIB_PERTHREAD_INIT_SEGMENT_END __segment_end(__DLIB_PERTHREAD_INIT__)

Portable segment names.

#define
_DLIB_PERTHREAD_INITIALIZED_DATA_SEGMENT_END __segment_end(__DLIB_PERTHREAD_INITIALIZED_DATA__)

Portable segment names.

#define
_DLIB_PERTHREAD_ZERO_DATA_SEGMENT_END __segment_end(__DLIB_PERTHREAD_ZERO_DATA__)

Portable segment names.

#define
_INTERNAL_STORAGE_SEGMENT_END __segment_end(__INTERNAL_STORAGE__)

Portable segment names.

#define
_LOCKBITS_IN_MAINFLASH_SEGMENT_END __segment_end(__LOCKBITS_IN_MAINFLASH__)

Portable segment names.

#define
_UNRETAINED_RAM_SEGMENT_END __segment_end(__UNRETAINED_RAM__)

Portable segment names.

#define
_NO_INIT_SEGMENT_SIZE __segment_size(__NO_INIT__)

Portable segment names.

#define
_DEBUG_CHANNEL_SEGMENT_SIZE __segment_size(__DEBUG_CHANNEL__)

Portable segment names.

#define
_INTVEC_SEGMENT_SIZE __segment_size(__INTVEC__)

Portable segment names.

#define
_CSTACK_SEGMENT_SIZE __segment_size(__CSTACK__)

Portable segment names.

#define
_RESETINFO_SEGMENT_SIZE __segment_size(__RESETINFO__)

Portable segment names.

#define
_DATA_INIT_SEGMENT_SIZE __segment_size(__DATA_INIT__)

Portable segment names.

#define
_DATA_SEGMENT_SIZE __segment_size(__DATA__)

Portable segment names.

#define
_BSS_SEGMENT_SIZE __segment_size(__BSS__)

Portable segment names.

#define
_CONST_SEGMENT_SIZE __segment_size(__CONST__)

Portable segment names.

#define
_TEXT_SEGMENT_SIZE __segment_size(__TEXT__)

Portable segment names.

#define
_TEXTRW_INIT_SEGMENT_SIZE __segment_size(__TEXTRW_INIT__)

Portable segment names.

#define
_TEXTRW_SEGMENT_SIZE __segment_size(__TEXTRW__)

Portable segment names.

#define
_AAT_SEGMENT_SIZE __segment_size(__AAT__)

Portable segment names.

#define
_BAT_SEGMENT_SIZE __segment_size(__BAT__)

Portable segment names.

#define
_BAT_INIT_SEGMENT_SIZE __segment_size(__BAT_INIT__)

Portable segment names.

#define
_FAT_SEGMENT_SIZE __segment_size(__FAT__)

Portable segment names.

#define
_RAT_SEGMENT_SIZE __segment_size(__RAT__)

Portable segment names.

#define
_SIMEE_SEGMENT_SIZE __segment_size(__SIMEE__)

Portable segment names.

#define
_PSSTORE_SEGMENT_SIZE __segment_size(__PSSTORE__)

Portable segment names.

#define
_LONGTOKEN_SEGMENT_SIZE __segment_size(__LONGTOKEN__)

Portable segment names.

#define
_EMHEAP_SEGMENT_SIZE __segment_size(__EMHEAP__)

Portable segment names.

#define
_GUARD_REGION_SEGMENT_SIZE __segment_size(__GUARD_REGION__)

Portable segment names.

#define
_DLIB_PERTHREAD_INIT_SEGMENT_SIZE __segment_size(__DLIB_PERTHREAD_INIT__)

Portable segment names.

#define
_DLIB_PERTHREAD_INITIALIZED_DATA_SEGMENT_SIZE __segment_size(__DLIB_PERTHREAD_INITIALIZED_DATA__)

Portable segment names.

#define
_DLIB_PERTHREAD_ZERO_DATA_SEGMENT_SIZE __segment_size(__DLIB_PERTHREAD_ZERO_DATA__)

Portable segment names.

#define
_INTERNAL_STORAGE_SEGMENT_SIZE __segment_size(__INTERNAL_STORAGE__)

Portable segment names.

#define
_LOCKBITS_IN_MAINFLASH_SEGMENT_SIZE __segment_size(__LOCKBITS_IN_MAINFLASH__)

Portable segment names.

#define
_UNRETAINED_RAM_SEGMENT_SIZE __segment_size(__UNRETAINED_RAM__)

Portable segment names.

Functions#

Master Variable Types Documentation#

boolean#

typedef bool boolean

A typedef to make the size of the variable explicitly known.


Definition at line 82 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

int8u#

typedef unsigned char int8u

Denotes that this platform supports 64-bit data-types.


Definition at line 83 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

int8s#

typedef signed char int8s

Denotes that this platform supports 64-bit data-types.


Definition at line 84 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

int16u#

typedef unsigned short int16u

Denotes that this platform supports 64-bit data-types.


Definition at line 85 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

int16s#

typedef signed short int16s

Denotes that this platform supports 64-bit data-types.


Definition at line 86 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

int32u#

typedef unsigned int int32u

Denotes that this platform supports 64-bit data-types.


Definition at line 87 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

int32s#

typedef signed int int32s

Denotes that this platform supports 64-bit data-types.


Definition at line 88 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

int64u#

typedef unsigned long long int64u

Denotes that this platform supports 64-bit data-types.


Definition at line 89 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

int64s#

typedef signed long long int64s

Denotes that this platform supports 64-bit data-types.


Definition at line 90 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

PointerType#

typedef unsigned int PointerType

Denotes that this platform supports 64-bit data-types.


Definition at line 91 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

Miscellaneous Macros Documentation#

halInternalAssertFailed#

void halInternalAssertFailed (const char * filename, int linenumber)

A prototype definition for use by the assert macro. (see hal/micro/micro.h)

Parameters
N/Afilename
N/Alinenumber

Definition at line 152 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

halInternalResetWatchDog#

void halInternalResetWatchDog (void )

Macro to reset the watchdog timer. Note: be very very careful when using this as you can easily get into an infinite loop if you are not careful.

Parameters
N/A

Definition at line 184 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

External Declarations Documentation#

abs#

int abs (int I)

Returns the absolute value of I (also called the magnitude of I). That is, if I is negative, the result is the opposite of I, but if I is nonnegative the result is I.

Parameters
N/AI

An integer.

Returns

  • A nonnegative integer.


Definition at line 527 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h

Portable segment names Documentation#

Function Documentation#

_executeBarrierInstructions#

void _executeBarrierInstructions (void )
Parameters
N/A

Definition at line 501 of file /mnt/raid/workspaces/ws.2dqDELv9z/overlay/gsdk/platform/base/hal/micro/cortexm3/compiler/iar.h