/**************************************************************************** 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ügt 23.12.2005 d.k. Definitions for IAR compiler $Id: global.h,v 1.6 2008/11/07 13:55:56 D.Krueger 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_RVCT_ARM_ 0x0000001CL // RealView ARM #define _DEV_RENESASM32C 0x0000001BL // compiler from: Renesas #define _DEV_GNUC_MIPS2_ 0x0000001AL // GNU for MIPS2 #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_ | _DEV_ONLY_INT_MAIN_) #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_RVCT_CARM_ (_DEV_BIT32_ | _DEV_RVCT_ARM_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_) #define _DEV_MCW_MCF5XXX_ (_DEV_BIT32_ | _DEV_METROWERKS_CW_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_) #define _DEV_GNU_CF5282_ (_DEV_BIT32_ | _DEV_GNUC_CF_ | _DEV_BIGEND_) #define _DEV_PAR_BECK1X3_ (_DEV_BIT16_ | _DEV_PARADGM_X86) #define _DEV_GNU_CF548X_ (_DEV_BIT32_ | _DEV_GNUC_CF_ | _DEV_BIGEND_ | _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_GNU_MIPSEL_ (_DEV_BIT32_ | _DEV_GNUC_MIPS2_ | _DEV_BIGEND_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_) #define _DEV_RENESAS_M32C_ (_DEV_BIT32_ | _DEV_RENESASM32C) //--------------------------------------------------------------------------- // 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 //--------------------------------------------------------------------------- // definitions for function inlining //--------------------------------------------------------------------------- #define INLINE_FUNCTION // empty define #undef INLINE_ENABLED // disable actual inlining of functions #undef INLINE_FUNCTION_DEF // disable inlining for all compilers per default //--------------------------------------------------------------------------- // 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 // 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 // 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 = OFF #pragma WARNING DISABLE = 38 // warning = OFF // #pragma WARNING DISABLE = 102 // warning = OFF #pragma WARNING DISABLE = 174 // warning = OFF #pragma WARNING DISABLE = 183 // warning = 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 // 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 // #endif #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for Keil ARM //--------------------------------------------------------------------------- #elif defined (__CA__) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_KEIL_CARM_ #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 #endif #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for RealView ARM compilation tools (provided by recent Keil Microcontroller Development Kits) //--------------------------------------------------------------------------- #elif defined (__ARMCC_VERSION) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_RVCT_CARM_ #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 #endif #ifndef NDEBUG #define ASSERT(expr) if (!(expr)) {\ TRACE0 ("Assertion failed: " #expr );\ while (1);} #else #define ASSERT(expr) #endif #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for ARM IAR C Compiler //--------------------------------------------------------------------------- #elif defined (__ICCARM__) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_IAR_CARM_ #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 #endif // Workaround: // If we use IAR and want to debug but don't want to use C-Spy Debugger // assert() doesn't work in debug mode because it needs support for FILE descriptors // (_DLIB_FILE_DESCRIPTOR == 1). #ifndef NDEBUG #define ASSERT(expr) if (!(expr)) {\ TRACE0 ("Assertion failed: " #expr );\ while (1);} #else #define ASSERT(expr) #endif #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf // #define TRACE PRINTF4 #endif //--------------------------------------------------------------------------- // definitions for Tasking 8051 //--------------------------------------------------------------------------- #elif defined (_CC51) #include #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_TASKING_C51X_ #define NEAR _data // variables mapped to internal data storage location #define FAR _xdat // 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 _xdat // 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 _xdat // Memory attribute to optimize speed and code of pointer access. #define REENTRANT _reentrant #define PUBLIC #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for Tasking C167CR and C164CI //--------------------------------------------------------------------------- #elif defined (_C166) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_TASKING_C16X_ #define NEAR near // variables mapped to internal data storage location #define FAR 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 /* to be defined */ // 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 // Stdio.h has to be alway included here. If printf() is used stdio.h defines NULL // without checking if it is already included. So an error occurs while compiling. // (r.d.) #include // prototype printf() (for TRACE) #ifndef NDEBUG #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for FUJITSU FFMC-16LX MB90590 //--------------------------------------------------------------------------- //#elif (defined (F590) || defined (F543) || defined (F598) || defined (F495) || defined (F350)) #elif defined(__COMPILER_FCC907__) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_FUJITSU_F590_ #define NEAR /* to be defined */ // variables mapped to internal data storage location #define FAR /* to be defined */ // variables mapped to external data storage location #define CONST const // variables mapped to ROM (i.e. flash) #define ROM /* to be defined */ // code or variables mapped to ROM (i.e. flash) // usage: CONST BYTE ROM foo = 0x00; #define HWACC /* to be defined */ // 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. // softune is not able to support 64 bit variables QWORD !!! #define REENTRANT #define PUBLIC #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for Mitsubishi M16C family for TASKING Compiler CM16 //--------------------------------------------------------------------------- #elif defined (_CM16C) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_TASKING_M16C_ #define NEAR _near // variables mapped to internal data storage location #define FAR _far // variables mapped to external data storage location #define CONST _farrom // 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 _near // 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 _far // generic pointer to point to application data // Variables with this attribute can be located in external // or internal data memory. // do you use memory model SMALL, than you have to set _far #define MEM // Memory attribute to optimize speed and code of pointer access. #define REENTRANT #define PUBLIC // Stdio.h has to be alway included here. If printf() is used stdio.h defines NULL // without checking if it is already included. So an error occurs while compiling. // (r.d.) #include // prototype printf() (for TRACE) #ifndef NDEBUG #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for Mitsubishi M16C family for Mitsubishi Compiler NC30 //--------------------------------------------------------------------------- // name NC30, andere Form will der Compiler nicht !! #elif defined (NC30) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_MITSUBISHI_M16C_ #define NEAR near // variables mapped to internal data storage location #define FAR 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 near // 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 far // 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 // prototype printf() (for TRACE) #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for Renesas M32C family for Renesas Compiler //--------------------------------------------------------------------------- #elif defined (NC308) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_RENESAS_M32C_ #define NEAR near // variables mapped to internal data storage location #define FAR 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) #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 far // Memory attribute to optimize speed and code of pointer access. #define REENTRANT #define PUBLIC #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif // #error ("RENESAS o.k.") //--------------------------------------------------------------------------- // definitions for ARM7 family with GNU compiler //--------------------------------------------------------------------------- #elif defined(__GNUC__) && defined(__arm__) && !defined(__LINUX_ARM_ARCH__) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_GNU_ARM7_ #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 HWACC // hardware access through external memory (i.e. CAN) #define REENTRANT #define PUBLIC #ifndef QWORD #define QWORD long long // i.A. durch Herr Kuschel #endif #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for Motorola PowerPC family 5x5 (555/565) // definitions Linux-PC //--------------------------------------------------------------------------- #elif defined (__GNUC__) #if defined (LINUX) || defined (linux) || defined (__linux__) #define LINUX_SYSTEM // define 'LINUX_SYSTEM' uniform for all Linux based systems // r.d.: We will need an other solution here! There are two sections here which do check the preproc-definitions: // LINUX and __linux__ . The first one was Linux for PC, the second one is this section for embedded Linux (MCF5xxx). // But Linux for PC does not need the definitions for embedded Linux. #endif // GNU C compiler supports function inlining #define INLINE_FUNCTION_DEF extern inline // to actually enable inlining just include the following three lines // #undef INLINE_FUNCTION // #define INLINE_FUNCTION INLINE_FUNCTION_DEF // #define INLINE_ENABLED TRUE #ifdef PXROS #define TARGET_SYSTEM _PXROS_ #ifdef __i386__ #undef LINUX // this define seems to be set from compiler #define DEV_SYSTEM _DEV_HIGHTEC_X86_ #elif defined (__tricore__) #define DEV_SYSTEM _DEV_GNU_TRICORE_ #else // MPC5x5 #define DEV_SYSTEM _DEV_GNU_MPC5X5_ #endif #elif defined (LINUX) || defined (__linux__) #define TARGET_SYSTEM _LINUX_ // Linux definition #define DEV_SYSTEM _DEV_LINUX_ #elif defined (GNU_CF5282) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_GNU_CF5282_ #elif defined (ECOSPRO_I386_PEAK_PCI) #define TARGET_SYSTEM _ECOSPRO_ #define DEV_SYSTEM _DEV_GNU_I386_ #elif defined (GNU_CF548X) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_GNU_CF548X_ #else #error 'ERROR: DEV_SYSTEM not found!' #endif #ifndef QWORD #define QWORD long long int #endif #if (TARGET_SYSTEM == _PXROS_) #ifndef __KERNEL__ #include #endif #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 /* to be defined */ // code or variables mapped to ROM (i.e. flash) // usage: CONST BYTE ROM foo = 0x00; #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 HWACC // hardware access through external memory (i.e. CAN) #define REENTRANT #define PUBLIC #ifndef QWORD #define QWORD long long int #endif #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif #endif // ------------------ GNUC for I386 --------------------------------------------- #if (TARGET_SYSTEM == _LINUX_) || (TARGET_SYSTEM == _ECOSPRO_) #ifndef __KERNEL__ #include #endif #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) // 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. #ifndef NEAR #define NEAR // variables mapped to internal data storage location #endif #ifndef FAR #define FAR // variables mapped to external data storage location #endif #ifndef CONST #define CONST const // variables mapped to ROM (i.e. flash) #endif #define LARGE #define REENTRANT #define PUBLIC #ifndef NDEBUG #ifndef __KERNEL__ #include // prototype printf() (for TRACE) #define TRACE printf #else #define TRACE printk #endif #endif #endif // ------------------ GNU without OS --------------------------------------------- #if (TARGET_SYSTEM == _NO_OS_) #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) // 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. #ifndef NEAR #define NEAR // variables mapped to internal data storage location #endif #ifndef FAR #define FAR // variables mapped to external data storage location #endif #ifndef CONST #define CONST const // variables mapped to ROM (i.e. flash) #endif #define LARGE #define REENTRANT #define PUBLIC #ifndef NDEBUG // #include "xuartdrv.h" // #include // prototype printf() (for TRACE) #define TRACE printf // #define TRACE mprintf // #ifndef TRACE // #define TRACE trace // void trace (char *fmt, ...); // #endif #endif #endif //--------------------------------------------------------------------------- // definitions for MPC565 //--------------------------------------------------------------------------- #elif __MWERKS__ #ifdef __MC68K__ #define TARGET_SYSTEM = _MCF548X_ #define DEV_SYSTEM _DEV_MCW_MCF5XXX_ #else #define TARGET_SYSTEM = _MPC565_ #define DEV_SYSTEM _DEV_MCW_MPC5X5_ #endif #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 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 HWACC // hardware access through external memory (i.e. CAN) #define REENTRANT #define PUBLIC #ifndef NDEBUG #include // prototype printf() (for TRACE) #define TRACE printf #endif //--------------------------------------------------------------------------- // definitions for BECK 1x3 //--------------------------------------------------------------------------- #elif defined (__BORLANDC__) && defined (__PARADIGM__) #define TARGET_SYSTEM _NO_OS_ #define DEV_SYSTEM _DEV_PAR_BECK1X3_ #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) // 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 NEAR __near // variables mapped to internal data storage location #define FAR __far // variables mapped to external data storage location #define CONST const // variables mapped to ROM (i.e. flash) #define LARGE #define REENTRANT #define PUBLIC #ifndef NDEBUG #ifndef TRACE #include #define TRACE printf #endif #endif //--------------------------------------------------------------------------- // definitions for PC //--------------------------------------------------------------------------- #elif defined (__BORLANDC__) // ------------------ definition target system -------------------------- #ifdef _WIN32 #define TARGET_SYSTEM _WIN32_ // WIN32 definition #define DEV_SYSTEM _DEV_WIN32_ #else #define TARGET_SYSTEM _DOS_ #define DEV_SYSTEM _DEV_BORLAND_DOS_ #endif // ------------------ WIN32 --------------------------------------------- #if (TARGET_SYSTEM == _WIN32_) #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) // 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. #ifndef NEAR #define NEAR // variables mapped to internal data storage location #endif #ifndef FAR #define FAR // variables mapped to external data storage location #endif #ifndef CONST #define CONST const // variables mapped to ROM (i.e. flash) #endif #define LARGE #define REENTRANT #define PUBLIC __stdcall #ifndef NDEBUG #ifndef TRACE #include #define TRACE printf #endif #endif #elif (TARGET_SYSTEM == _DOS_) #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) // 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 NEAR near // variables mapped to internal data storage location #define FAR far // variables mapped to external data storage location #define CONST const // variables mapped to ROM (i.e. flash) #define LARGE #define REENTRANT #define PUBLIC #ifndef NDEBUG #ifndef TRACE #include #define TRACE printf #endif #endif #endif #elif (_MSC_VER == 800) // PC MS Visual C/C++ for DOS applications #define TARGET_SYSTEM _DOS_ #define DEV_SYSTEM _DEV_MSVC_DOS_ #define ROM // code or variables mapped to ROM (i.e. flash) // usage: CONST BYTE ROM foo = 0x00; #define HWACC near // hardware access through external memory (i.e. CAN) // 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 NEAR near // variables mapped to internal data storage location #define FAR far // variables mapped to external data storage location #define CONST const // variables mapped to ROM (i.e. flash) #define LARGE #define REENTRANT #define PUBLIC #ifndef NDEBUG #ifndef TRACE #include #define TRACE printf #endif #endif //--------------------------------------------------------------------------- // definitions for RTX under WIN32 //--------------------------------------------------------------------------- #elif (defined (UNDER_RTSS) && defined (WIN32)) // ------------------ definition target system -------------------------- #define TARGET_SYSTEM _WIN32_RTX_ #define DEV_SYSTEM _DEV_WIN32_RTX_ #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) // 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. #ifndef NEAR #define NEAR // variables mapped to internal data storage location #endif #ifndef FAR #define FAR // variables mapped to external data storage location #endif #ifndef CONST #define CONST const // variables mapped to ROM (i.e. flash) #endif #define LARGE #define REENTRANT #define PUBLIC __stdcall #ifndef NDEBUG #ifndef TRACE #define TRACE RtPrintf #endif #endif //--------------------------------------------------------------------------- // definitions for WinCE //--------------------------------------------------------------------------- #elif defined (_WIN32_WCE) // ------------------ definition target system -------------------------- #define TARGET_SYSTEM _WINCE_ #define DEV_SYSTEM _DEV_WIN_CE_ #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) // 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. #ifndef NEAR #define NEAR // variables mapped to internal data storage location #endif #ifndef FAR #define FAR // variables mapped to external data storage location #endif #ifndef CONST #define CONST const // variables mapped to ROM (i.e. flash) #endif #define LARGE #ifndef QWORD //#define QWORD long long int // MSVC .NET can use "long long int" too (like GNU) #define QWORD __int64 #endif #define REENTRANT #define PUBLIC __cdecl #ifdef ASSERTMSG #undef ASSERTMSG #endif #ifndef NDEBUG #ifndef TRACE #define TRACE printf // void trace (char *fmt, ...); #endif #endif #else // ===> PC MS Visual C/C++ // ------------------ definition target system -------------------------- #ifdef _WIN32 #define TARGET_SYSTEM _WIN32_ // WIN32 definition #define DEV_SYSTEM _DEV_WIN32_ #else #define TARGET_SYSTEM _WIN16_ // WIN16 definition #define DEV_SYSTEM _DEV_WIN16_ #endif // ------------------ WIN16 --------------------------------------------- #if (TARGET_SYSTEM == _WIN16_) #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) // 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. #ifndef NEAR #define NEAR // variables mapped to internal data storage location #endif #ifndef FAR #define FAR far // variables mapped to external data storage location #endif #ifndef CONST #define CONST const // variables mapped to ROM (i.e. flash) #endif #define LARGE #define REENTRANT #define PUBLIC _far _pascal _export #ifndef NDEBUG #ifndef TRACE #define TRACE trace #ifdef __cplusplus extern "C" { #endif void trace(const char *fmt, ...); #ifdef __cplusplus } #endif #endif #endif #endif // ------------------ WIN32 --------------------------------------------- #if (TARGET_SYSTEM == _WIN32_) #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) // 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. #ifndef NEAR #define NEAR // variables mapped to internal data storage location #endif #ifndef FAR #define FAR // variables mapped to external data storage location #endif #ifndef CONST #define CONST const // variables mapped to ROM (i.e. flash) #endif #define LARGE #define REENTRANT #define PUBLIC __stdcall #ifndef QWORD //#define QWORD long long int // MSVC .NET can use "long long int" too (like GNU) #define QWORD __int64 #endif #ifndef NDEBUG #ifndef TRACE #define TRACE trace #ifdef __cplusplus extern "C" { #endif void trace(const char *fmt, ...); #ifdef __cplusplus } #endif #endif #endif // MS Visual C++ compiler supports function inlining #define INLINE_FUNCTION_DEF __forceinline // to actually enable inlining just include the following two lines// #define INLINE_FUNCTION INLINE_FUNCTION_DEF// #define INLINE_ENABLED TRUE #endif #endif // ===> PC //---------------------------------------------------------------------------// definitions of basic types//--------------------------------------------------------------------------- #ifndef _WINDEF_ // defined in WINDEF.H, included by // --- arithmetic types --- #ifndef SHORT #define SHORT short int #endif #ifndef USHORT #define USHORT unsigned short int #endif #ifndef INT #define INT int #endif #ifndef UINT #define UINT unsigned int #endif #ifndef LONG #define LONG long int #endif #ifndef ULONG #define ULONG unsigned long int #endif // --- logic types --- #ifndef BYTE #define BYTE unsigned char #endif #ifndef WORD #define WORD unsigned short int #endif #ifndef DWORD #define DWORD unsigned long int #endif #ifndef BOOL #define BOOL unsigned char #endif // --- alias types --- #ifndef TRUE #define TRUE 0xFF #endif #ifndef FALSE #define FALSE 0x00 #endif #ifndef NULL #define NULL ((void *) 0) #endif #endif #ifndef _TIME_OF_DAY_DEFINED_ typedef struct { unsigned long int m_dwMs; unsigned short int m_wDays; } tTimeOfDay; #define _TIME_OF_DAY_DEFINED_ #endif //--------------------------------------------------------------------------- // Definition von TRACE //--------------------------------------------------------------------------- #ifndef NDEBUG #ifndef TRACE0 #define TRACE0(p0) TRACE(p0) #endif #ifndef TRACE1 #define TRACE1(p0, p1) TRACE(p0, p1) #endif #ifndef TRACE2 #define TRACE2(p0, p1, p2) TRACE(p0, p1, p2) #endif #ifndef TRACE3 #define TRACE3(p0, p1, p2, p3) TRACE(p0, p1, p2, p3) #endif #ifndef TRACE4 #define TRACE4(p0, p1, p2, p3, p4) TRACE(p0, p1, p2, p3, p4) #endif #ifndef TRACE5 #define TRACE5(p0, p1, p2, p3, p4, p5) TRACE(p0, p1, p2, p3, p4, p5) #endif #ifndef TRACE6 #define TRACE6(p0, p1, p2, p3, p4, p5, p6) TRACE(p0, p1, p2, p3, p4, p5, p6) #endif #else #ifndef TRACE0 #define TRACE0(p0) #endif #ifndef TRACE1 #define TRACE1(p0, p1) #endif #ifndef TRACE2 #define TRACE2(p0, p1, p2) #endif #ifndef TRACE3 #define TRACE3(p0, p1, p2, p3) #endif #ifndef TRACE4 #define TRACE4(p0, p1, p2, p3, p4) #endif #ifndef TRACE5 #define TRACE5(p0, p1, p2, p3, p4, p5) #endif #ifndef TRACE6 #define TRACE6(p0, p1, p2, p3, p4, p5, p6) #endif #endif //--------------------------------------------------------------------------- // definition of ASSERT //--------------------------------------------------------------------------- #ifndef ASSERT #if !defined (__linux__) && !defined (__KERNEL__) #include #ifndef ASSERT #define ASSERT(p) assert(p) #endif #else #define ASSERT(p) #endif #endif //--------------------------------------------------------------------------- // SYS TEC extensions //--------------------------------------------------------------------------- // This macro doesn't print out C-file and line number of the failed assertion // but a string, which exactly names the mistake. #ifndef NDEBUG #define ASSERTMSG(expr,string) if (!(expr)) {\ PRINTF0 ("Assertion failed: " string );\ while (1);} #else #define ASSERTMSG(expr,string) #endif //--------------------------------------------------------------------------- #endif // #ifndef _GLOBAL_H_ // Please keep an empty line at the end of this file.