standalone.h
来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· C头文件 代码 · 共 173 行
H
173 行
/*****************************************************************************
* File: StandAlone.h
* Author: Naresh Gupta (nkgupta@hotmail.com)
* Organization: Hitachi Semiconductor America Inc.
* Purpose: This file is used to include in programs that are not supposed
* to run with Windows CE OS loaded. An example of such programs
* is SDBTESTS. It would replace windows.h.
****************************************************************************/
#ifndef _STANDALONE_H
#define _STANDALONE_H
/********* User modifiable parameters *********/
/*****************************************************************************
* Define REG_ACCESS_WAIT if you want to put a wait before every READ_REGISTER...
****************************************************************************/
// #define REG_ACCESS_WAIT
#define REG_WAIT RegWait() /* Function to be called for waiting. */
/*****************************************************************************
* Define NON_WINCE if you are not using Microsoft Compiler, libraries
****************************************************************************/
// #define NON_WINCE /* The compiler used is not Microsoft Compiler */
/*****************************************************************************
* To make a release version, just undef DEBUG below.
****************************************************************************/
// #undef DEBUG
/********* End of User modifiable parameters. *********/
/* Typedefs */
typedef unsigned char * ADDR;
typedef unsigned (*func_ptr_t)();
typedef unsigned long SIZE_T;
#define VOID void
typedef unsigned short WCHAR;
typedef unsigned char BYTE;
typedef short SHORT;
typedef unsigned short WORD;
typedef int BOOL;
typedef unsigned long DWORD;
typedef unsigned long REGISTER;
typedef unsigned long ULONG;
typedef unsigned int UINT;
typedef ULONG *PULONG;
typedef unsigned short USHORT;
typedef USHORT *PUSHORT;
typedef unsigned char UCHAR;
typedef UCHAR *PUCHAR;
typedef BYTE *PBYTE;
typedef char *PSZ;
typedef volatile BYTE *PVBYTE;
typedef volatile SHORT *PVSHORT;
typedef volatile USHORT *PVUSHORT;
typedef volatile ULONG *PVULONG;
typedef volatile DWORD *PVDWORD;
#define FAR
#define NEAR
#define WINAPI
typedef int (FAR WINAPI *FARPROC)();
#ifndef NULL
#define NULL (VOID *) 0
#endif NULL
#define TRUE 1
#define FALSE 0
#define printf OutputFormatString
/* I suspect that inline is not supported in .c. Trying it out */
#define inline
/* Functions for Reading and Writing Memory/Registers. */
#ifdef REG_ACCESS_WAIT
#define READ_REGISTER_ULONG(reg) (REG_WAIT,(*(volatile unsigned long * const)(reg)))
#define WRITE_REGISTER_ULONG(reg, val) (REG_WAIT,(*(volatile unsigned long * const)(reg)) = (val))
#define READ_REGISTER_USHORT(reg) (REG_WAIT,(*(volatile unsigned short * const)(reg)))
#define WRITE_REGISTER_USHORT(reg, val) (REG_WAIT,(*(volatile unsigned short * const)(reg)) = (val))
#define READ_REGISTER_UCHAR(reg) (REG_WAIT,(*(volatile unsigned char * const)(reg)))
#define WRITE_REGISTER_UCHAR(reg, val) (REG_WAIT,(*(volatile unsigned char * const)(reg)) = (val))
#define MASK_REGISTER_ULONG(reg, val, mask) \
WRITE_REGISTER_ULONG((reg),(READ_REGISTER_ULONG(reg) & (mask)) | (val) )
#define MASK_REGISTER_USHORT(reg, val, mask) \
WRITE_REGISTER_USHORT((reg),(READ_REGISTER_USHORT(reg) & (mask)) | (val) )
#define MASK_REGISTER_UCHAR(reg, val, mask) \
WRITE_REGISTER_UCHAR((reg),(READ_REGISTER_UCHAR(reg) & (mask)) | (val) )
#else REG_ACCESS_WAIT
#define READ_REGISTER_ULONG(reg) (*(volatile unsigned long * const)(reg))
#define WRITE_REGISTER_ULONG(reg, val) (*(volatile unsigned long * const)(reg)) = (val)
#define READ_REGISTER_USHORT(reg) (*(volatile unsigned short * const)(reg))
#define WRITE_REGISTER_USHORT(reg, val) (*(volatile unsigned short * const)(reg)) = (val)
#define READ_REGISTER_UCHAR(reg) (*(volatile unsigned char * const)(reg))
#define WRITE_REGISTER_UCHAR(reg, val) (*(volatile unsigned char * const)(reg)) = (val)
#define MASK_REGISTER_ULONG(reg, val, mask) \
WRITE_REGISTER_ULONG((reg),(READ_REGISTER_ULONG(reg) & (mask)) | (val) )
#define MASK_REGISTER_USHORT(reg, val, mask) \
WRITE_REGISTER_USHORT((reg),(READ_REGISTER_USHORT(reg) & (mask)) | (val) )
#define MASK_REGISTER_UCHAR(reg, val, mask) \
WRITE_REGISTER_UCHAR((reg),(READ_REGISTER_UCHAR(reg) & (mask)) | (val) )
#endif REG_ACCESS_WAIT
// Additional definitions put in by Naresh.
#ifndef READ_REGISTER_ULONG
# define READ_REGISTER_ULONG(reg) (*(volatile unsigned long * const)(reg))
# define WRITE_REGISTER_ULONG(reg, val) (*(volatile unsigned long * const)(reg)) = (val)
# define READ_REGISTER_USHORT(reg) (*(volatile unsigned short * const)(reg))
# define WRITE_REGISTER_USHORT(reg, val) (*(volatile unsigned short * const)(reg)) = (val)
# define READ_REGISTER_UCHAR(reg) (*(volatile unsigned char * const)(reg))
# define WRITE_REGISTER_UCHAR(reg, val) (*(volatile unsigned char * const)(reg)) = (val)
#endif
#ifdef RETAILMSG
#undef RETAILMSG
#undef TEXT
#undef DEBUGMSG
#undef ERRORMSG
#endif RETAILMSG
#define TEXT(x) x
#ifdef DEBUG
# define DEBUGMSG(x,y) WriteDbgOutput(x,y)
#else DEBUG
# define DEBUGMSG(x,y) // WriteDbgOutput(x,y)
#endif DEBUG
#define RETAILMSG(x,y) WriteOutput y
#define ERRORMSG(x,y) WriteOutput y
#if 0
#ifdef NON_WINCE
# define F_L "%08x"
# define F_S "%04x"
# define F_B "%02x"
#else NON_WINCE
/* SDBTESTS and Bootloader use these formats for printf */
# define F_L "%X"
# define F_S "%H"
# define F_B "%B"
#endif NON_WINCE
#ifdef STAND_ALONE
# define WriteOutput printf
extern int printf();
extern char *gets();
char Buf[512]; // Dummy buffer of 512 bytes to do read/write operations.
#else
void OutputFormatString(const unsigned char *sz, ...);
# define WriteOutput OutputFormatString
#ifdef DEBUG
# define WriteDbgOutput(a,b) { if(a) OutputFormatString b; }
#else
# define WriteDbgOutput(a,b) {} // Do nothing if DEBUG is not defined.
#endif
#endif
#endif 0
#endif _STANDALONE_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?