⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h3_hwtest.h

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 H
📖 第 1 页 / 共 2 页
字号:
/* XIP Test Modes */ /*No default value, will be cleared upon reset*/
typedef enum {
	DOCH_XIP_NORMAL			= 0x0000,
	DOCH_XIP_WRITEABLE		= 0x0001,
	DOCH_XIP_FILL_PATTERN	= 0x0002,	/*"M-Systems" and the rest with consecutive 16bit numbers*/
	DOCH_XIP_PIPELINE		= 0x0003	/*Places the device in pipeline access mode*/
} DOCH_XIPTestModes;


typedef FLByte Reg8bitType;
typedef FLWord Reg16bitType;


/*Max number of devices per ATA socket (defined by ATA standard)*/
#define ATA_MAX_NUM_OF_DEVICES	2

/* 
 * Length of DOCH register 'read' cycle in nanoseconds (default value should
 * do for most systems).
 */

#define DOCH_ACCESS_NANOSEC  15


/*IPL Control Register*/
#define DOCH_IPL_WRITE_DISABLE       0x0000
#define DOCH_IPL_WRITE_READY         0x0001
#define DOCH_IPL_WRITE_ENABLE        0x0002

#define DOCH_IPL_ALL_CS_ENABLED		 0x0000
#define DOCH_IPL_CLOSE_2LOW_IPLS	 0x0010
#define DOCH_IPL_CLOSE_2HIGH_IPLS	 0x0020
#define DOCH_IPL_CLOSE_ALL_IPLS		 0x0030


#ifndef FAR0
#define FAR0 
#endif /* FAR0 */

#ifndef FAR1
#define FAR1
#endif /* FAR1 */


#ifndef FLREAD_IO_WORD
#define FLREAD_IO_WORD(address)           (*((volatile FLWord FAR0*)(address)))
#endif

#ifndef FLWRITE_IO_WORD
#define FLWRITE_IO_WORD(val,address)      *((volatile FLWord FAR0*)(address))=(FLWord)(val)
#endif



#ifndef DBG_PRINT_FLOW
#define DBG_PRINT_FLOW(zone,str)    /* if (zone & (ACTIVE_DEBUG_ZONE)) printf (str) */
#endif
#ifndef DBG_PRINT_ERR
#define DBG_PRINT_ERR(zone,str)     /* if (zone & (ACTIVE_DEBUG_ZONE)) printf (str) */
#endif
#ifndef DBG_PRINT_WRN
#define DBG_PRINT_WRN(zone,str)     /* if (zone & (ACTIVE_DEBUG_ZONE)) printf (str) */
#endif
#ifndef DBG_PRINT_FLOW_PRM
#define DBG_PRINT_FLOW_PRM(zone,str) /* if (zone & (ACTIVE_DEBUG_ZONE)) printf str */
#endif
#ifndef DBG_PRINT_ERR_PRM
#define DBG_PRINT_ERR_PRM(zone,str)  /* if (zone & (ACTIVE_DEBUG_ZONE)) printf str */
#endif
#ifndef DBG_PRINT_WRN_PRM
#define DBG_PRINT_WRN_PRM(zone,str)  /* if (zone & (ACTIVE_DEBUG_ZONE)) printf str */
#endif

#ifndef DFORMAT_PRINT 
#define DFORMAT_PRINT(a)             DBG_PRINT_WRN_PRM(FLZONE_FORMAT,a)
#endif 
#ifndef DEBUG_PRINT
#define DEBUG_PRINT(a)               DBG_PRINT_WRN(FLZONE_FULL,a)
#endif 


/*----------------------------------------------------------------------*/
/*                            I O r e q 2                               */
/*                                                                      */
/* IOreq2 is a common structure passed to all file-system functions.    */
/* Refer to the description of individual functions for specific usage  */
/* of fields. Some fields have different names when used by different   */
/* functions, hence the use of unions.                                  */
/*                                                                      */
/*----------------------------------------------------------------------*/

typedef struct {
  FLByte socketNum;				/*Socket number*/
  FLByte partitionNum;			/*Partition number*/
  FLByte logicalPartitionNum;	/*Logical partition number*/
  FLByte ataDeviceNum;			/*ATA device [0,1]*/
}Ioreq2Handle;

typedef struct {
  Ioreq2Handle   irHandle;         /* Handle of file or drive for operation*/
  FLDword		 irFlags;          /* function-specific flags              */
  void		   * irPath;  	       /* path of file for operation 		*/
  void		   * irData;           /* Pointer to user-buffer for operation */
  FLSDword		 irLength;         /* No. of bytes, size or position for   */
								   /* operation                            */
  FLSDword		 irCount;          /* Count or offset for operaion         */
} IOreq2;


/**************************************************************************/
/* Special ioreq field names:                                             */
/* IOReq structure is the basic IO type used for all TrueFFS calls.       */
/* Some of the fields has additional name for more trivial use of the     */
/* function. The duplicate names are defined below.                       */
/**************************************************************************/
#define irSectorCount   irCount
#define irSectorNo      irLength
#define irByteCount     irCount
#define irAddress       irLength

#ifndef NULL
#define		NULL					0		
#endif

#ifdef FL_BIG_ENDIAN
#define C_16_8(a)	((FLByte)((a)>>8))
#define C_8_16(a)	(((FLWord)(a))<<8) 
#define C_16_16(a)  ((FLWord)((a)<<8) | ((a)>>8))
#else
#define C_16_8(a)	((FLByte)(a))
#define C_8_16(a)	((FLWord)(a))
#define C_16_16(a)  ((FLWord)(a))
#endif /* FL_BIG_ENDIAN */


/* DOCH Access Layer macros */
/*==========================*/
#ifndef DOCHREAD_ATA_REG
#define DOCHREAD_ATA_REG(base, regNum)			flRead8bitUsing16bitsSingleShift(base,(FLWord)regNum)
#endif /*DOCHREAD_ATA_REG*/

#ifndef DOCHWRITE_ATA_REG
#define DOCHWRITE_ATA_REG(base, regNum, val) 	flWrite8bitUsing16bitsSingleShift(base,(FLWord)((regNum)),(FLWord)(C_8_16(val)))
#endif /*DOCHWRITE_ATA_REG*/

#ifndef DOCHREAD_CTRL_REG
#define DOCHREAD_CTRL_REG(base, regNum)			C_16_16(flDirectRead16BitReg((DOCHFlash),(FLWord)(regNum)))
#endif /*DOCHREAD_CTRL_REG*/

#ifndef DOCHWRITE_CTRL_REG
#define DOCHWRITE_CTRL_REG(base, regNum, val) 	flDirectWrite16BitReg((DOCHFlash),(FLWord)(regNum),(FLWord)(C_16_16(val)))
#endif /*DOCHWRITE_CTRL_REG*/

#ifndef DOCHBLK_READ
#define DOCHBLK_READ(address, buf, sectors)		hal_blk_read_nor (	pPointer,					\
																	(FLSNative )DOCH_DATA_REG,	\
																	(FLByte*)buf,				\
																	(FLSNative) (sectors<<9) )
#endif /*DOCHBLK_READ*/

#ifndef DOCHBLK_WRITE
#define DOCHBLK_WRITE(address, buf, sectors) 	hal_blk_write_nor ( (volatile FLByte *)pPointer,					\
																	(FLByte*) buf,				\
																	(FLSNative) sectors )

#define Read16(add ,offset) \
  *(volatile unsigned short*)((unsigned long)add + (unsigned long)offset)

#endif /*DOCHBLK_WRITE*/


DOCH_Error DOCHSetDiskUserAttributes(IOreq2* ioreq);

DOCH_Error DOCHGetDiskUserAttributes(IOreq2* ioreq);

DOCH_Error DOCHSetCustomParameter(IOreq2* ioreq);

extern volatile unsigned short *pPointer;
//volatile unsigned short *pHibBasePointer;
/* 
*	Function prototypes - for function pointers
*/

FLSNative doch_sleep_nor ( FLSNative    socketNo,FLDword millisec);

FLSNative hal_blk_read_nor ( volatile FLWord * base,FLSNative reg,FLByte * buf,FLSNative bytes );

FLSNative hal_blk_write_nor ( volatile FLByte * base, FLByte * src, FLSNative sectors );

void flWrite8bitUsing16bitsSingleShift(volatile  FLWord * win, FLWord offset,Reg8bitType val);

Reg8bitType  flRead8bitUsing16bitsSingleShift(volatile  FLWord * win,FLWord offset);
/*
*	Function prototypes 
*/
DOCH_Error ready ( FLSNative 	   devNum,
                   DOCH_Reg        reg,
                   FLByte		   mask,
                   FLByte		   on_bits,
                   FLDword		   millisec );


DOCH_Error io_output ( FLSNative 		 devNum,
					   DOCH_Registers  * regs,
                       void            * buf, 
					   FLNative		 secNum
					 );


DOCH_Error io_input  ( FLSNative 		 devNum,
					   DOCH_Registers  * regs,
                       void            * buf, 
					   FLNative		     secNum);



DOCH_Error io_ctrl ( FLSNative 		   devNum,
				     DOCH_Registers	 * regs);

#endif /* H3_HW_TEST_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -