/** * @file % !FILENAME % * * @section desc File description * * Memory mapping using Cosmic compiler pragmas * 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 % let section_kind_hash := @( ) let section_kind_hash["_NOINIT_"] := "NI" let section_kind_hash["_POWER_ON_INIT_"] := "PI" let section_kind_hash["_FAST_"] := "FS" let section_kind_hash["_CONST_"] := "CS" let section_kind_hash["_CALIB_"] := "CL" let section_kind_hash["_CARTO_"] := "CR" let section_kind_hash["_CONFIG_DATA_"] := "CF" let section_kind_hash["_"] := "__" let data_size_hash := @( ) let data_size_hash["32BIT"] := "32" let data_size_hash["16BIT"] := "16" let data_size_hash["8BIT"] := "08" let data_size_hash["32BITS"] := "32" # Alias let data_size_hash["16BITS"] := "16" # Alias let data_size_hash["8BITS"] := "08" # Alias let data_size_hash["32"] := "32" # Alias let data_size_hash["16"] := "16" # Alias let data_size_hash["8"] := "08" # Alias let data_size_hash["BOOLEAN"] := "BO" let data_size_hash["UNSPECIFIED"] := "UN" # Create a default application if there is none if [APPLICATIONS length] == 0 then let default_application := @{ NAME : "DefaultApplication" } let APPLICATIONS += default_application end if % /*============================================================================= * OS memory mapping * * Code section */ #ifdef OS_START_SEC_BOOT #undef OS_START_SEC_BOOT #ifdef CURRENT_LINKER_CODE_SECTION #error "Starting a .osBoot while a section is already started" #else #undef MEMMAP_ERROR #pragma section (osBoot) #define CURRENT_LINKER_CODE_SECTION #endif #endif #ifdef OS_STOP_SEC_BOOT #undef OS_STOP_SEC_BOOT #ifdef CURRENT_LINKER_CODE_SECTION #undef MEMMAP_ERROR #undef CURRENT_LINKER_CODE_SECTION #pragma section () #else #error "No section .osBoot started" #endif #endif #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 #pragma 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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") 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 #pragma section [osVarNoInit] #pragma 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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") 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 #pragma section const {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 #pragma section () #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 #pragma 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 #pragma section () #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 #pragma section const {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 #pragma section () #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 #pragma section (appCmonCode) #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 #pragma section () #else #error "No section .appCommonCode started" #endif #endif /*============================================================================= * Application objects (Tasks and ISRs) Memory mapping */ % foreach app in APPLICATIONS do let pragma_app_name := [("000" + [INDEX string]) rightSubString: 3] % /*---------------------------------------------------------------------------- * 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","32BITS","16BITS","8BITS","32","16","8") do let pragma_section_kind := section_kind_hash[SECTION_KIND] let pragma_data_size := data_size_hash[DATA_SIZE] % #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 #pragma section [osApV% !pragma_app_name !section_kind_hash["_NOINIT_"] !pragma_data_size %] % if SECTION_KIND != "_NOINIT_" then% #pragma section {osApV% !pragma_app_name !pragma_section_kind !pragma_data_size %}% end if% #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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") do let pragma_section_kind := section_kind_hash[SECTION_KIND] let pragma_data_size := data_size_hash[DATA_SIZE] % #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 #pragma section const {osApC% !pragma_app_name !pragma_section_kind !pragma_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 #pragma section () #else #error "No section started" #endif #endif % end foreach end foreach end foreach % % foreach proc in PROCESSES do let pragma_proc_kind := [proc::KIND leftSubString: 2] let pragma_proc_name := [("000" + [INDEX string]) rightSubString: 3] % /*----------------------------------------------------------------------------- * % !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 #pragma section (Cde% !pragma_proc_kind !pragma_proc_name %) #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 #pragma section () #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 #pragma section [Stk% !pragma_proc_kind !pragma_proc_name %] #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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") do let pragma_section_kind := section_kind_hash[SECTION_KIND] let pragma_data_size := data_size_hash[DATA_SIZE] % #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 #pragma section [Var% !pragma_proc_kind !pragma_proc_name !section_kind_hash["_NOINIT_"] !pragma_data_size %] % if SECTION_KIND != "_NOINIT_" then% #pragma section {Var% !pragma_proc_kind !pragma_proc_name !pragma_section_kind !pragma_data_size %}% end if% #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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") do let pragma_section_kind := section_kind_hash[SECTION_KIND] let pragma_data_size := data_size_hash[DATA_SIZE] % #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 #pragma section const {Cst% !pragma_proc_kind !pragma_proc_name !pragma_section_kind !pragma_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 #pragma section () #else #error "No section started" #endif #endif % end foreach end foreach end foreach % % foreach isr in ISRS1 do let pragma_isr_name := [("000" + [INDEX string]) rightSubString: 3] % /*----------------------------------------------------------------------------- * 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 #pragma section (IrCd% !pragma_isr_name %) #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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") do let pragma_section_kind := section_kind_hash[SECTION_KIND] let pragma_data_size := data_size_hash[DATA_SIZE] % #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 #pragma section [IrVr% !pragma_isr_name !section_kind_hash["_NOINIT_"] !pragma_data_size %] % if SECTION_KIND != "_NOINIT_" then% #pragma section {IrVr% !pragma_isr_name !pragma_section_kind !pragma_data_size %}% end if% #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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") do let pragma_section_kind := section_kind_hash[SECTION_KIND] let pragma_data_size := data_size_hash[DATA_SIZE] % #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 #pragma section const {IrCs% !pragma_isr_name !pragma_section_kind !pragma_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 #pragma section () #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" let pragma_proc_kind := "T" let pragma_proc_name := "" if OS::NUMBER_OF_CORES == 1 then let proc::NAME := "IDLE_TASK" let pragma_proc_name := "Idl" else let proc::NAME := "IDLE_TASK_"+[core string] let pragma_proc_name := "Id"+[[core string] rightSubString: 1] 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 #pragma section (Cde% !pragma_proc_kind !pragma_proc_name %) #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 #pragma section () #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 #pragma section [Stk% !pragma_proc_kind !pragma_proc_name %] #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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") do let pragma_section_kind := section_kind_hash[SECTION_KIND] let pragma_data_size := data_size_hash[DATA_SIZE] % #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 #pragma section [Var% !pragma_proc_kind !pragma_proc_name !section_kind_hash["_NOINIT_"] !pragma_data_size %] % if SECTION_KIND != "_NOINIT_" then% #pragma section {Var% !pragma_proc_kind !pragma_proc_name !pragma_section_kind !pragma_data_size %}% end if% #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 #pragma section () #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","32BITS","16BITS","8BITS","32","16","8") do let pragma_section_kind := section_kind_hash[SECTION_KIND] let pragma_data_size := data_size_hash[DATA_SIZE] % #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 #pragma section const {Cst% !pragma_proc_kind !pragma_proc_name !pragma_section_kind !pragma_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 #pragma section () #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 */ #if 0 /* TODO */ #define MEMMAP_VENDOR_ID #define MEMMAP_AR_MAJOR_VERSION #define MEMMAP_AR_MINOR_VERSION #define MEMMAP_AR_PATCH_VERSION #define MEMMAP_SW_MAJOR_VERSION #define MEMMAP_SW_MINOR_VERSION #define MEMMAP_SW_PATCH_VERSION #endif