平台化代码包含头文件说明

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 03:53   34   0

平台化代码中关于头文件包含使用说明:

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP