/** * @file % !FILENAME % * * @section desc File description * * Memory mapping using gcc __attribute__ * Memory Mapping of Application % !CPUNAME % * Automatically generated by goil on % !TIMESTAMP % * from root OIL file % !OILFILENAME % * * @section copyright Copyright * * Trampoline OS * * Trampoline is copyright (c) IRCCyN 2005-2007 * Trampoline is protected by the French intellectual property law. * * This software is distributed under the Lesser GNU Public Licence * * @section infos File informations * * $Date$ * $Rev$ * $Author$ * $URL$ */ #define MEMMAP_ERROR /*============================================================================= * OS memory mapping * * Code section */ #ifdef OS_START_SEC_CODE #undef OS_START_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #error "Starting a .osCode while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".osCode"))) #define CURRENT_LINKER_CODE_SECTION #endif #endif #ifdef OS_STOP_SEC_CODE #undef OS_STOP_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME #else #error "No section .osCode started" #endif #endif % foreach SECTION_KIND in @( "_NOINIT_","_POWER_ON_INIT_","_FAST_","_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef OS_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef OS_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a .osVar data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef OS_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef OS_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach % /* * Const, Calibration, Carto, Configuration data sections */ % foreach SECTION_KIND in @( "_CONST_","_CALIB_","_CARTO_","_CONFIG_DATA_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef OS_START_SEC% !SECTION_KIND !DATA_SIZE % #undef OS_START_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a .osConst data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef OS_STOP_SEC% !SECTION_KIND !DATA_SIZE % #undef OS_STOP_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach % /*============================================================================= * API code and const memory mapping */ #ifdef API_START_SEC_CODE #undef API_START_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #error "Starting a .osApiCode section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".osApiCode"))) #define CURRENT_LINKER_CODE_SECTION #endif #endif #ifdef API_STOP_SEC_CODE #undef API_STOP_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME #else #error "No section .osApiCode started" #endif #endif #ifdef API_START_SEC_CONST_UNSPECIFIED #undef API_START_SEC_CONST_UNSPECIFIED #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a .osApiConst section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osApiConst"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef API_STOP_SEC_CONST_UNSPECIFIED #undef API_STOP_SEC_CONST_UNSPECIFIED #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section .osApiConst started" #endif #endif /*============================================================================ * Common library */ #ifdef APP_COMMON_START_SEC_CODE #undef APP_COMMON_START_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #error "Starting a .appCommonCode section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".appCommonCode"))) #define CURRENT_LINKER_CODE_SECTION #endif #endif #ifdef APP_COMMON_STOP_SEC_CODE #undef APP_COMMON_STOP_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME #else #error "No section .appCommonCode started" #endif #endif /*============================================================================= * Application objects (Tasks and ISRs) Memory mapping */ % foreach app in APPLICATIONS do % /*---------------------------------------------------------------------------- * Application % !app::NAME % memory mapping * * Variables sections */ % foreach SECTION_KIND in @( "_NOINIT_","_POWER_ON_INIT_","_FAST_","_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef APP_OS_APP_% !app::NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_OS_APP_% !app::NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new OS_APP % !app::NAME % data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".OS_APP_% !app::NAME %_SEC_VAR% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_OS_APP_% !app::NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_OS_APP_% !app::NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach % /* * Const, Calibration, Carto, Configuration data sections */ % foreach SECTION_KIND in @( "_CONST_","_CALIB_","_CARTO_","_CONFIG_DATA_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef APP_OS_APP_% !app::NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_OS_APP_% !app::NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new OS_APP % !app::NAME % data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".OS_APP_% !app::NAME %_SEC% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_OS_APP_% !app::NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_OS_APP_% !app::NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach end foreach % % foreach proc in PROCESSES do % /*----------------------------------------------------------------------------- * % !proc::KIND % % !proc::NAME % memory mapping to sections * * Code section */ #ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_CODE #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #error "Starting a new % !proc::NAME % % !proc::KIND % code section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %Code"))) #define CURRENT_LINKER_CODE_SECTION #endif #endif #ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_CODE #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME #else #error "No section started" #endif #endif /* * Stack section */ #ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_STACK #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_STACK #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !proc::NAME % % !proc::KIND % stack section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %Stack"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_STACK #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_STACK #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif /* * Variables sections */ % foreach SECTION_KIND in @( "_NOINIT_","_POWER_ON_INIT_","_FAST_","_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !proc::KIND % % !proc::NAME % data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %_SEC_VAR% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach % /* * Const, Calibration, Carto, Configuration data sections */ % foreach SECTION_KIND in @( "_CONST_","_CALIB_","_CARTO_","_CONFIG_DATA_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !proc::KIND % % !proc::NAME % data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %_SEC% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach end foreach % % foreach isr in ISRS1 do % /*----------------------------------------------------------------------------- * ISR1 % !isr::NAME % memory mapping to sections * * Code section */ #ifdef APP_ISR_% !isr::NAME %_START_SEC_CODE #undef APP_ISR_% !isr::NAME %_START_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #error "Starting a new % !isr::NAME % ISR code section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".ISR_% !isr::NAME %Code"))) #define CURRENT_LINKER_CODE_SECTION #endif #endif #ifdef APP_ISR_% !isr::NAME %_STOP_SEC_CODE #undef APP_ISR_% !isr::NAME %_STOP_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME #else #error "No section started" #endif #endif /* * Variables sections */ % foreach SECTION_KIND in @( "_NOINIT_","_POWER_ON_INIT_","_FAST_","_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef APP_ISR_% !isr::NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_ISR_% !isr::NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new ISR % !isr::NAME % data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".ISR_% !isr::NAME %_SEC_VAR% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_ISR_% !isr::NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_ISR% !isr::NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach % /* * Const, Calibration, Carto, Configuration data sections */ % foreach SECTION_KIND in @( "_CONST_","_CALIB_","_CARTO_","_CONFIG_DATA_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef APP_ISR_% !isr::NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_ISR_% !isr::NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new ISR % !isr::NAME % data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".ISR_% !isr::NAME %_SEC% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_ISR_% !isr::NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_ISR_% !isr::NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach end foreach % % loop core from 0 to OS::NUMBER_OF_CORES - 1 do let proc::KIND := "Task" if OS::NUMBER_OF_CORES == 1 then let proc::NAME := "IDLE_TASK" else let proc::NAME := "IDLE_TASK_"+[core string] end if % /*----------------------------------------------------------------------------- * % !proc::KIND % % !proc::NAME % memory mapping to sections * * Code section */ #ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_CODE #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #error "Starting a new % !proc::NAME % % !proc::KIND % code section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %Code"))) #define CURRENT_LINKER_CODE_SECTION #endif #endif #ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_CODE #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION #undef CURRENT_LINKER_CODE_SECTION_NAME #define CURRENT_LINKER_CODE_SECTION_NAME #else #error "No section started" #endif #endif /* * Stack section */ #ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_STACK #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_STACK #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !proc::NAME % % !proc::KIND % stack section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %Stack"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_STACK #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_STACK #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif /* * Variables sections */ % foreach SECTION_KIND in @( "_NOINIT_","_POWER_ON_INIT_","_FAST_","_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !proc::KIND % % !proc::NAME % data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %_SEC_VAR% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach % /* * Const, Calibration, Carto, Configuration data sections */ % foreach SECTION_KIND in @( "_CONST_","_CALIB_","_CARTO_","_CONFIG_DATA_" ) do foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do % #ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !proc::KIND % % !proc::NAME % data section while a section is already started" #else #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %_SEC% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_DATA_SECTION #undef CURRENT_LINKER_DATA_SECTION_NAME #define CURRENT_LINKER_DATA_SECTION_NAME #else #error "No section started" #endif #endif % end foreach end foreach end loop % #ifdef MEMMAP_ERROR #error "MemMap.h, wrong section command" #endif /*============================================================================= * Published informations */ #define MEMMAP_VENDOR_ID 48 #define MEMMAP_AR_MAJOR_VERSION 3 #define MEMMAP_AR_MINOR_VERSION 0 #define MEMMAP_AR_PATCH_VERSION 0 #define MEMMAP_SW_MAJOR_VERSION 1 #define MEMMAP_SW_MINOR_VERSION 0 #define MEMMAP_SW_PATCH_VERSION 0