📄 global.h
字号:
/****************************************************************************
global project definition file
12.06.1998 -rs
11.02.2002 r.d. Erweiterungen, Ergaenzungen
20.08.2002 SYS TEC electronic -as
Definition Schluesselwort 'GENERIC'
fuer das Erzeugen von Generic Pointer
28.08.2002 r.d. erweiterter SYS TEC Debug Code
16.09.2002 r.d. komplette Uebersetzung in Englisch
11.04.2003 f.j. Ergaenzung fuer Mitsubishi NC30 Compiler
17.06.2003 -rs Definition von Basistypen in <#ifndef _WINDEF_> gesetzt
16.04.2004 r.d. Ergaenzung fuer Borland C++ Builder
30.08.2004 -rs TRACE5 eingef黦t
23.12.2005 d.k. Definitions for IAR compiler
$Id: global.h,v 1.1.1.1 2007/03/12 12:59:09 A.Suess Exp $
****************************************************************************/
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
//---------------------------------------------------------------------------
// elements of defines for development system
//---------------------------------------------------------------------------
// these defines are necessary to check some of characteristics of the development system
#define _DEV_BIGEND_ 0x80000000L // big endian (motorolla format)
#define _DEV_ALIGNMENT_4_ 0x00400000L // the CPU needs alignment of 4 bytes
#define _DEV_ONLY_INT_MAIN_ 0x00004000L // the compiler needs "int main(int)" instead of "void main(void)"
#define _DEV_COMMA_EXT_ 0x00002000L // support of last comma in struct predefinition
#define _DEV_64BIT_SUPPORT_ 0x00001000L // support of 64 bit operations
#define _DEV_BIT64_ 0x00000400L // count of bits: 64 bit
#define _DEV_BIT32_ 0x00000300L // 32 bit
#define _DEV_BIT16_ 0x00000200L // 16 bit
#define _DEV_BIT8_ 0x00000100L // 8 bit
#define _DEV_MPLAB_C30_ 0x00000019L // MPLAB C30 for Microchip dsPIC33F series
#define _DEV_GNUC_TC_ 0x00000018L // GNU for Infineon TriCore
#define _DEV_GNUC_X86_ 0x00000017L // GNU for I386
#define _DEV_IAR_ARM_ 0x00000016L // ARM IAR C/C++ Compiler
#define _DEV_PARADGM_X86 0x00000015L // Paradigm C/C++ for Beck 1x3
#define _DEV_GNUC_CF_ 0x00000014L // GNU for Coldfire
#define _DEV_KEIL_ARM_ 0x00000013L // Keil ARM
#define _DEV_MSEVC_ 0x00000012L // Microsoft embedded Visual C/C++
#define _DEV_HIGHTEC_GNUC_X86_ 0x00000011L // Hightec elf386 gcc
#define _DEV_MSVC_RTX_ 0x00000010L // VC600 + RTX
#define _DEV_MSVC_V1_5_ 0x0000000FL // Microsoft Visual C/C++ V1.5
#define _DEV_GNUC_ARM7_ 0x0000000EL // GNU Compiler gcc for ARM7
#define _DEV_METROWERKS_CW_ 0x0000000DL // Metrowerks Code Warrior
#define _DEV_MITSUBISHIM16C_ 0x0000000CL //compiler from: Mitsubishi
#define _DEV_GNUC_C16X_ 0x0000000BL // GNU Compiler gcc166 for Infineon C16x
#define _DEV_LINUX_GCC_ 0x0000000AL // Linux GNU Compiler gcc
#define _DEV_GNUC_MPC5X5 0x00000009L // GNU for Motorola PPC5x5
#define _DEV_TASKINGM16C_ 0x00000008L // Tasking for Mitsubishi M16C
#define _DEV_FUJITSU_ 0x00000007L // Fujitsu
#define _DEV_TASKING8_ 0x00000006L // Tasking 8051
#define _DEV_TASKING16_ 0x00000005L // Tasking 166
#define _DEV_KEIL8_ 0x00000004L // Keil C51
#define _DEV_KEIL16_ 0x00000003L // Keil C166
#define _DEV_BORLANDC_ 0x00000002L // Borland C/C++
#define _DEV_MSVC16_ 0x00000001L // Microsoft Visual C/C++
#define _DEV_MSVC32_ 0x00000000L // Microsoft Visual C/C++
// these defines can be used to mask previous elements
#define _DEV_MASK_COMPILER 0x000000FFL
#define _DEV_MASK_BITCOUNT 0x00000F00L
#define _DEV_MASK_ADDSUPPORT 0x0000F000L
#define _DEV_MASK_ALIGNMENT 0x00F00000L
//---------------------------------------------------------------------------
// defines for development system (DEV_SYSTEM) including previous elements
//---------------------------------------------------------------------------
#define _DEV_WIN16_ (_DEV_BIT16_ | _DEV_MSVC16_ )
#define _DEV_WIN32_ (_DEV_BIT32_ | _DEV_MSVC32_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_MSVC_DOS_ (_DEV_BIT32_ | _DEV_MSVC_V1_5_ )
#define _DEV_BORLAND_DOS_ (_DEV_BIT32_ | _DEV_BORLANDC_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_KEIL_C51X_ (_DEV_BIT8_ | _DEV_KEIL8_ | _DEV_BIGEND_ | _DEV_COMMA_EXT_) // at least C51 version 7.05 supports comma extension
#define _DEV_KEIL_C16X_ (_DEV_BIT16_ | _DEV_KEIL16_ | _DEV_COMMA_EXT_) // at least C166 version 5.03 supports comma extension
#define _DEV_TASKING_C51X_ (_DEV_BIT8_ | _DEV_TASKING8_ | _DEV_BIGEND_)
#define _DEV_TASKING_C16X_ (_DEV_BIT16_ | _DEV_TASKING16_ )
#define _DEV_FUJITSU_F590_ (_DEV_BIT8_ | _DEV_FUJITSU_ | _DEV_COMMA_EXT_) // softune is not able to support 64 bit variables QWORD !!!
//f.j.29.04.03 M16C kann effektiv mit Bytes umgehen
//#define _DEV_TASKING_M16C_ (_DEV_BIT16_ | _DEV_TASKINGM16C_ )
#define _DEV_TASKING_M16C_ (_DEV_BIT8_ | _DEV_TASKINGM16C_ )
#define _DEV_MITSUBISHI_M16C_ (_DEV_BIT8_ | _DEV_MITSUBISHIM16C_ )
#define _DEV_GNU_MPC5X5_ (_DEV_BIT32_ | _DEV_GNUC_MPC5X5| _DEV_BIGEND_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_LINUX_ (_DEV_BIT32_ | _DEV_LINUX_GCC_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_C16X_ (_DEV_BIT16_ | _DEV_GNUC_C16X_ ) //| _DEV_COMMA_EXT_)
#define _DEV_MCW_MPC5X5_ (_DEV_BIT32_ | _DEV_METROWERKS_CW_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_ARM7_ (_DEV_BIT32_ | _DEV_GNUC_ARM7_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_WIN32_RTX_ (_DEV_BIT32_ | _DEV_MSVC_RTX_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_HIGHTEC_X86_ (_DEV_BIT32_ | _DEV_HIGHTEC_GNUC_X86_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_WIN_CE_ (_DEV_BIT32_ | _DEV_MSEVC_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_KEIL_CARM_ (_DEV_BIT32_ | _DEV_KEIL_ARM_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_IAR_CARM_ (_DEV_BIT32_ | _DEV_IAR_ARM_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_MCW_MCF5XXX_ (_DEV_BIT32_ | _DEV_METROWERKS_CW_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_CF5282_ (_DEV_BIT32_ | _DEV_GNUC_CF_ )
#define _DEV_PAR_BECK1X3_ (_DEV_BIT16_ | _DEV_PARADGM_X86)
#define _DEV_GNU_CF548X_ (_DEV_BIT32_ | _DEV_GNUC_CF_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_I386_ (_DEV_BIT32_ | _DEV_GNUC_X86_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_)
#define _DEV_GNU_TRICORE_ (_DEV_BIT32_ | _DEV_GNUC_TC_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_ | _DEV_ALIGNMENT_4_)
#define _DEV_MPLAB_DSPIC33F_ (_DEV_BIT16_ | _DEV_MPLAB_C30_ ) //| _DEV_COMMA_EXT_)
#define _DEV_ECOS_ (_DEV_BIT32_ | _DEV_GNUC_CF_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
//---------------------------------------------------------------------------
// usefull macros
//---------------------------------------------------------------------------
#define CHECK_IF_ONLY_INT_MAIN() (DEV_SYSTEM & _DEV_ONLY_INT_MAIN_)
#define CHECK_MEMORY_ALINMENT() (DEV_SYSTEM & _DEV_MASK_ALIGNMENT)
//---------------------------------------------------------------------------
// defines for target system (TARGET_SYSTEM)
//---------------------------------------------------------------------------
#define _DOS_ (16 + 0x10000)
#define _WIN16_ 16
#define _WIN32_ 32
#define _WINCE_ (32 + 0x20000)
#define _NO_OS_ 0
#define _LINUX_ 1
#define _PXROS_ 2
#define _ECOSPRO_ 3
#define _ECOS_ 4
//---------------------------------------------------------------------------
// definitions for Keil C51
//---------------------------------------------------------------------------
#ifdef __C51__
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_KEIL_C51X_
#pragma DEBUG OBJECTEXTEND
#pragma WARNINGLEVEL(2) // maximum warning level
#define NEAR idata // variables mapped to internal data storage location
#define FAR xdata // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM code // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC xdata // hardware access through external memory (i.e. CAN)
#define LARGE large // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM xdata // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT reentrant
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for GNU Compiler for Infineon C16x
// - it have to be befor Keil (it has __C166__ too)
//---------------------------------------------------------------------------
#elif defined (__GNUC__) && defined (__C166__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_GNU_C16X_
// #define NEAR idata // variables mapped to internal data storage location
#define NEAR near // variables mapped to internal data storage location
// #define FAR xhuge // variables mapped to external data storage location
#define FAR huge // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
// #define HWACC sdata // hardware access through external memory (i.e. CAN)
#define HWACC huge // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
// #define GENERIC xhuge // generic pointer to point to application data
#define GENERIC huge // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#define ASSERT(p) \
if (p) \
{ \
; \
} \
else \
{ \
PRINTF0("Assert failed: " #p " (file %s line %d)\n", __FILE__, (int) __LINE__ ); \
while (1); \
}
#else
#define ASSERT(p)
#endif
//---------------------------------------------------------------------------
// definitions for Keil C166
//---------------------------------------------------------------------------
#elif defined (__C166__) // 24.01.2005 r.d.: Keil ARM7 needs directive 'defined'
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_KEIL_C16X_
#pragma CODE
#pragma MOD167
#pragma NOINIT
#pragma DEBUG
#pragma WARNINGLEVEL(3) // maximum warning level
#pragma WARNING DISABLE = 47 // warning <unreferenced parameter> = OFF
#pragma WARNING DISABLE = 38 // warning <empty translation unit> = OFF
// #pragma WARNING DISABLE = 102 // warning <different const/volatile qualifiers> = OFF
#pragma WARNING DISABLE = 174 // warning <unreferenced 'static' function> = OFF
#pragma WARNING DISABLE = 183 // warning <dead assignement eliminated> = OFF
#define NEAR idata // variables mapped to internal data storage location
#define FAR xhuge // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
// #define HWACC sdata // hardware access through external memory (i.e. CAN)
#define HWACC huge // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC xhuge // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for MPLAB C30 for dsPIC33F series
//---------------------------------------------------------------------------
#elif defined (__C30__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_MPLAB_DSPIC33F_
#define NEAR // variables mapped to internal data storage location
#define FAR // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
// #ifndef QWORD
// #define QWORD long long
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -