/** * @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 % for SECTION_KIND in "_POWER_ON_INIT_","_FAST_","_" do for 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 for end for for DATA_SIZE in "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" do % /* uninitialized variables are a special case (they actually must be zeroed * as C89 requires no initialized static variables to be initialized to 0) */ #ifdef OS_START_SEC_VAR_NOINIT_% !DATA_SIZE % #undef OS_START_SEC_VAR_NOINIT_% !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a .osVarNoInit 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 (".osVarNoInit"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef OS_STOP_SEC_VAR_NOINIT_% !DATA_SIZE % #undef OS_STOP_SEC_VAR_NOINIT_% !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 for % /* * Const, Calibration, Carto, Configuration data sections */ % for SECTION_KIND in "_CONST_","_CALIB_","_CARTO_","_CONFIG_DATA_" do for 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 for end for % /*============================================================================= * 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 OSAPPLICATIONS do % /*---------------------------------------------------------------------------- * Application % !NAME % memory mapping * * Variables sections */ % for SECTION_KIND in "_POWER_ON_INIT_","_FAST_","_" do for DATA_SIZE in "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" do % #ifdef APP_OS_APP_% !NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_OS_APP_% !NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new OS_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_% !NAME %_SEC_VAR% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_OS_APP_% !NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_OS_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 for end for for DATA_SIZE in "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" do % /* uninitialized variables are a special case (they actually must be zeroed * as C89 requires no initialized static variables to be initialized to 0) */ #ifdef APP_OS_APP_% !NAME %_START_SEC_VAR_NOINIT_% !DATA_SIZE % #undef APP_OS_APP_% !NAME %_START_SEC_VAR_NOINIT_% !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new OS_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_% !NAME %_SEC_VAR_NOINIT_% !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_OS_APP_% !NAME %_STOP_SEC_VAR_NOINIT_% !DATA_SIZE % #undef APP_OS_APP_% !NAME %_STOP_SEC_VAR_NOINIT_% !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 for % /* * Const, Calibration, Carto, Configuration data sections */ % for SECTION_KIND in "_CONST_","_CALIB_","_CARTO_","_CONFIG_DATA_" do for DATA_SIZE in "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" do % #ifdef APP_OS_APP_% !NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_OS_APP_% !NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new OS_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_% !NAME %_SEC% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_OS_APP_% !NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_OS_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 for end for end foreach % % foreach PROCESSES do % /*----------------------------------------------------------------------------- * % !PROCESSKIND % % !NAME % memory mapping to sections * * Code section */ #ifdef APP_% !PROCESSKIND %_% !NAME %_START_SEC_CODE #undef APP_% !PROCESSKIND %_% !NAME %_START_SEC_CODE #ifdef CURRENT_LINKER_CODE_SECTION #error "Starting a new % !NAME % % !PROCESSKIND % 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 (".% !PROCESSKIND %_% !NAME %Code"))) #define CURRENT_LINKER_CODE_SECTION #endif #endif #ifdef APP_% !PROCESSKIND %_% !NAME %_STOP_SEC_CODE #undef APP_% !PROCESSKIND %_% !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_% !PROCESSKIND %_% !NAME %_START_SEC_STACK #undef APP_% !PROCESSKIND %_% !NAME %_START_SEC_STACK #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !NAME % % !PROCESSKIND % 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 (".% !PROCESSKIND %_% !NAME %Stack"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !PROCESSKIND %_% !NAME %_STOP_SEC_STACK #undef APP_% !PROCESSKIND %_% !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 */ % for SECTION_KIND in "_NOINIT_","_POWER_ON_INIT_","_FAST_","_" do for DATA_SIZE in "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" do % #ifdef APP_% !PROCESSKIND %_% !NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_% !PROCESSKIND %_% !NAME %_START_SEC_VAR% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !PROCESSKIND % % !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 (".% !PROCESSKIND %_% !NAME %_SEC_VAR% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !PROCESSKIND %_% !NAME %_STOP_SEC_VAR% !SECTION_KIND !DATA_SIZE % #undef APP_% !PROCESSKIND %_% !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 for end for % /* * Const, Calibration, Carto, Configuration data sections */ % for SECTION_KIND in "_CONST_","_CALIB_","_CARTO_","_CONFIG_DATA_" do for DATA_SIZE in "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" do % #ifdef APP_% !PROCESSKIND %_% !NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_% !PROCESSKIND %_% !NAME %_START_SEC% !SECTION_KIND !DATA_SIZE % #ifdef CURRENT_LINKER_DATA_SECTION #error "Starting a new % !PROCESSKIND % % !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 (".% !PROCESSKIND %_% !NAME %_SEC% !SECTION_KIND !DATA_SIZE %"))) #define CURRENT_LINKER_DATA_SECTION #endif #endif #ifdef APP_% !PROCESSKIND %_% !NAME %_STOP_SEC% !SECTION_KIND !DATA_SIZE % #undef APP_% !PROCESSKIND %_% !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 for end for end foreach % #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