|
平台化代码中关于头文件包含使用说明:
1,平台化代码需要考虑将”#pragma code section“部分放在头文件中包含及修改该#pragma部分代码,其中该头文件需要重复被包含,故此头文件前不能添加类似如下
#ifndef _MEMMAP_H_
#define _MEMMAP_H_
...
#endif
头文件防止重复包含的预计了,否则会出现第一次使用该文件后,在后边其他文件包含该头文件时,由于已经包含了该头文件,故该文件下方的#pragma不会被执行到,导致在链接文件时提示找不到指定的section而报出错误;
以下文件仅做参考:
/********************************************************************************************************************** * COMM START *********************************************************************************************************************/ /******* CODE sections **********************************************************************************************/ #ifdef COMM_START_SEC_CODE #undef COMM_START_SEC_CODE #define START_SEC_CODE /* mapped to default code section */ #endif #ifdef COMM_STOP_SEC_CODE #undef COMM_STOP_SEC_CODE #define STOP_SEC_CODE /* default code stop section */ #endif #ifdef COMM_START_SEC_APPL_CODE #undef COMM_START_SEC_APPL_CODE #define START_SEC_CODE /* mapped to default code section */ #endif #ifdef COMM_STOP_SEC_APPL_CODE #undef COMM_STOP_SEC_APPL_CODE #define STOP_SEC_CODE /* default code stop section */ #endif /******* CONST sections ********************************************************************************************/ /* CONST sections */ #ifdef COMM_START_SEC_CONST_8BIT # undef COMM_START_SEC_CONST_8BIT # define START_SEC_CONST_8BIT /* mapped to default const 8bit section */ #endif #ifdef COMM_STOP_SEC_CONST_8BIT # undef COMM_STOP_SEC_CONST_8BIT # define STOP_SEC_CONST /* default const stop section */ #endif #ifdef COMM_START_SEC_CONST_16BIT # undef COMM_START_SEC_CONST_16BIT # define START_SEC_CONST_16BIT #endif #ifdef COMM_STOP_SEC_CONST_16BIT # undef COMM_STOP_SEC_CONST_16BIT # define STOP_SEC_CONST #endif #ifdef COMM_START_SEC_CONST_32BIT # undef COMM_START_SEC_CONST_32BIT # define START_SEC_CONST_32BIT #endif #ifdef COMM_STOP_SEC_CONST_32BIT # undef COMM_STOP_SEC_CONST_32BIT # define STOP_SEC_CONST #endif #ifdef COMM_START_SEC_CONST_UNSPECIFIED # undef COMM_START_SEC_CONST_UNSPECIFIED # define START_SEC_CONST_UNSPECIFIED #endif #ifdef COMM_STOP_SEC_CONST_UNSPECIFIED # undef COMM_STOP_SEC_CONST_UNSPECIFIED # define STOP_SEC_CONST #endif /******* VAR sections **********************************************************************************************/ /* VAR NOINIT sections */ #ifdef COMM_START_SEC_VAR_NOINIT_8BIT # undef COMM_START_SEC_VAR_NOINIT_8BIT # define START_SEC_VAR_NOINIT_8BIT #endif #ifdef COMM_STOP_SEC_VAR_NOINIT_8BIT # undef COMM_STOP_SEC_VAR_NOINIT_8BIT # define STOP_SEC_VAR #endif #ifdef COMM_START_SEC_VAR_NOINIT_16BIT # undef COMM_START_SEC_VAR_NOINIT_16BIT # define START_SEC_VAR_NOINIT_16BIT #endif #ifdef COMM_STOP_SEC_VAR_NOINIT_16BIT # undef COMM_STOP_SEC_VAR_NOINIT_16BIT # define STOP_SEC_VAR #endif #ifdef COMM_START_SEC_VAR_NOINIT_32BIT # undef COMM_START_SEC_VAR_NOINIT_32BIT # define START_SEC_VAR_NOINIT_32BIT #endif #ifdef COMM_STOP_SEC_VAR_NOINIT_32BIT # undef COMM_STOP_SEC_VAR_NOINIT_32BIT # define STOP_SEC_VAR #endif #ifdef COMM_START_SEC_VAR_NOINIT_UNSPECIFIED # undef COMM_START_SEC_VAR_NOINIT_UNSPECIFIED # define START_SEC_VAR_NOINIT_UNSPECIFIED #endif #ifdef COMM_STOP_SEC_VAR_NOINIT_UNSPECIFIED # undef COMM_STOP_SEC_VAR_NOINIT_UNSPECIFIED # define STOP_SEC_VAR #endif /* VAR ZERO INIT sections */ #ifdef COMM_START_SEC_VAR_ZERO_INIT_UNSPECIFIED # undef COMM_START_SEC_VAR_ZERO_INIT_UNSPECIFIED # define START_SEC_VAR_ZERO_INIT_UNSPECIFIED #endif #ifdef COMM_STOP_SEC_VAR_ZERO_INIT_UNSPECIFIED # undef COMM_STOP_SEC_VAR_ZERO_INIT_UNSPECIFIED # define STOP_SEC_VAR #endif /* VAR NVRAM sections */ #ifdef COMM_START_SEC_VAR_SAVED_ZONE0_UNSPECIFIED # undef COMM_START_SEC_VAR_SAVED_ZONE0_UNSPECIFIED # define START_SEC_VAR_FAST_NOINIT_UNSPECIFIED #endif #ifdef COMM_STOP_SEC_VAR_SAVED_ZONE0_UNSPECIFIED # undef COMM_STOP_SEC_VAR_SAVED_ZONE0_UNSPECIFIED # define STOP_SEC_VAR #endif /* Postbuild CFG CONST sections */ /* Root pointer to postbuild data */ #ifdef COMM_START_SEC_PBCFG_ROOT # undef COMM_START_SEC_PBCFG_ROOT # define START_SEC_CONST_PBCFG #endif #ifdef COMM_STOP_SEC_PBCFG_ROOT # undef COMM_STOP_SEC_PBCFG_ROOT # define STOP_SEC_CONST #endif /********************************************************************************************************************** * COMM END *********************************************************************************************************************/
/*------------------------------GLOBAL-SECTIONS-----------------------------*/ /* Check code sections */ #if ( (defined CODE_SEC_OPEN) && \ ((defined START_SEC_CODE ) || \ (defined START_SEC_CODE_FAST ) || \ (defined START_SEC_CODE_ISR ) \ )) #error "MemMap.h: Close the former code segment before opening a new one." #endif /* Check const sections */ #if ( (defined CONST_SEC_OPEN) && \ ((defined START_SEC_CONST_8BIT ) || \ (defined START_SEC_CONST_16BIT ) || \ (defined START_SEC_CONST_32BIT ) || \ (defined START_SEC_CONST_UNSPECIFIED ) || \ (defined START_SEC_CONST_FAST_8BIT ) || \ (defined START_SEC_CONST_FAST_16BIT ) || \ (defined START_SEC_CONST_FAST_32BIT ) || \ (defined START_SEC_CONST_FAST_UNSPECIFIED ) || \ (defined START_SEC_CONST_PBCFG ) \ )) #error "MemMap.h: Close the former const segment before opening a new one." #endif /* Check data sections */ #if ( (defined VAR_SEC_OPEN) && \ ((defined START_SEC_VAR_INIT_8BIT ) || \ (defined START_SEC_VAR_INIT_16BIT ) || \ (defined START_SEC_VAR_INIT_32BIT ) || \ (defined START_SEC_VAR_INIT_UNSPECIFIED ) || \ (defined START_SEC_VAR_NOINIT_8BIT ) || \ (defined START_SEC_VAR_NOINIT_16BIT ) || \ (defined START_SEC_VAR_NOINIT_32BIT ) || \ (defined START_SEC_VAR_NOINIT_UNSPECIFIED ) || \ (defined START_SEC_VAR_ZERO_INIT_8BIT ) || \ (defined START_SEC_VAR_ZERO_INIT_16BIT ) || \ (defined START_SEC_VAR_ZERO_INIT_32BIT ) || \ (defined START_SEC_VAR_ZERO_INIT_UNSPECIFIED ) || \ (defined START_SEC_VAR_FAST_INIT_8BIT ) || \ (defined START_SEC_VAR_FAST_INIT_16BIT ) || \ (defined START_SEC_VAR_FAST_INIT_32BIT ) || \ (defined START_SEC_VAR_FAST_INIT_UNSPECIFIED ) || \ (defined START_SEC_VAR_FAST_NOINIT_8BIT ) || \ (defined START_SEC_VAR_FAST_NOINIT_16BIT ) || \ (defined START_SEC_VAR_FAST_NOINIT_32BIT ) || \ (defined START_SEC_VAR_FAST_NOINIT_UNSPECIFIED ) || \ (defined START_SEC_VAR_FAST_ZERO_INIT_8BIT ) || \ (defined START_SEC_VAR_FAST_ZERO_INIT_16BIT ) || \ (defined START_SEC_VAR_FAST_ZERO_INIT_32BIT ) || \ (defined START_SEC_VAR_FAST_ZERO_INIT_UNSPECIFIED) \ )) #error "MemMap.h: Close the former variable segment before opening a new one." #endif /*------------------------------GLOBAL-START-SECTIONS------------------------------*/ /* Code section */ #ifdef START_SEC_CODE #define CODE_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CODE #undef MEMMAP_ERROR #endif #ifdef START_SEC_CODE_FAST #define CODE_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CODE_FAST #undef MEMMAP_ERROR #endif #ifdef START_SEC_CODE_ISR #define CODE_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CODE_ISR #undef MEMMAP_ERROR #endif /* Const section */ #ifdef START_SEC_CONST_8BIT #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_8BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_CONST_16BIT #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_16BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_CONST_32BIT #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_32BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_CONST_UNSPECIFIED #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_UNSPECIFIED #undef MEMMAP_ERROR #endif #ifdef START_SEC_CONST_FAST_8BIT #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_FAST_8BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_CONST_FAST_16BIT #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_FAST_16BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_CONST_FAST_32BIT #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_FAST_32BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_CONST_FAST_UNSPECIFIED #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_FAST_UNSPECIFIED #undef MEMMAP_ERROR #endif #ifdef START_SEC_CONST_PBCFG #define CONST_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_CONST_PBCFG #undef MEMMAP_ERROR #endif /* Var section */ #ifdef START_SEC_VAR_INIT_8BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_INIT_8BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_INIT_16BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_INIT_16BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_INIT_32BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_INIT_32BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_INIT_UNSPECIFIED #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_INIT_UNSPECIFIED #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_NOINIT_8BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_NOINIT_8BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_NOINIT_16BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_NOINIT_16BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_NOINIT_32BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_NOINIT_32BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_NOINIT_UNSPECIFIED #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_NOINIT_UNSPECIFIED #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_ZERO_INIT_8BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_ZERO_INIT_8BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_ZERO_INIT_16BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_ZERO_INIT_16BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_ZERO_INIT_32BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_ZERO_INIT_32BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_ZERO_INIT_UNSPECIFIED #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_ZERO_INIT_UNSPECIFIED #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_INIT_8BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_INIT_8BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_INIT_16BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_INIT_16BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_INIT_32BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_INIT_32BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_INIT_UNSPECIFIED #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_INIT_UNSPECIFIED #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_NOINIT_8BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_NOINIT_8BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_NOINIT_16BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_NOINIT_16BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_NOINIT_32BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_NOINIT_32BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_NOINIT_UNSPECIFIED #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_NOINIT_UNSPECIFIED #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_ZERO_INIT_8BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_ZERO_INIT_8BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_ZERO_INIT_16BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_ZERO_INIT_16BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_ZERO_INIT_32BIT #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_ZERO_INIT_32BIT #undef MEMMAP_ERROR #endif #ifdef START_SEC_VAR_FAST_ZERO_INIT_UNSPECIFIED #define VAR_SEC_OPEN /* Enter here a #pragma command for opening the specified section */ /* #pragma */ #undef START_SEC_VAR_FAST_ZERO_INIT_UNSPECIFIED #undef MEMMAP_ERROR #endif /*------------------------------GENERAL-STOP-SECTIONS-------------------------------*/ /*default segment for Code*/ #ifdef STOP_SEC_CODE #undef CODE_SEC_OPEN /* Enter here a #pragma command for closing the specified section */ /* This should switch back to the default section */ /* #pragma */ #undef STOP_SEC_CODE #undef MEMMAP_ERROR #endif /*default segment for Constants*/ #ifdef STOP_SEC_CONST #undef CONST_SEC_OPEN /* Enter here a #pragma command for closing the specified section */ /* This should switch back to the default section */ /* #pragma */ #undef STOP_SEC_CONST #undef MEMMAP_ERROR #endif /*default segment for Datas*/ #ifdef STOP_SEC_VAR #undef VAR_SEC_OPEN /* Enter here a #pragma command for closing the specified section */ /* This should switch back to the default section */ /* #pragma */ #undef STOP_SEC_VAR #undef MEMMAP_ERROR #endif #ifdef MEMMAP_ERROR /*#error "MemMap.h, wrong pragma command"*/ #endif |