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

📄 h3_hwtest.h

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef H3_HW_TEST_H
#define H3_HW_TEST_H

#include "test_platform.h"


#define	DOCH_USING_8K_WIN

#define DOCH_SET_CUSTOM_PARAM			0x41
#define	DOCH_GET_DISK_USER_ATTR			0x70
#define	DOCH_SET_DISK_USER_ATTR			0x71

/*Register areas*/
/*--------------*/

#ifdef DOCH_USING_8K_WIN

    #define HIB_CORE_ADDRESS            0x0C000000
    #define DOCH_CONT_REG_AREA          (HIB_CORE_ADDRESS + 0x0800)
    #define DOCH_DATA_PORT_AREA         (HIB_CORE_ADDRESS + 0x1000)
    #define DOCH_CONFIG_REG_AREA        (HIB_CORE_ADDRESS + 0x1400)
    
    #define DOCH_MEM_WIN_SIZE           0x2000  /*8KB*/

#else /* DOCH_USING_8K_WIN */

    #define HIB_CORE_ADDRESS            0x0C008000
    #define DOCH_MEM_WIN_SIZE           0x20000 /*128KB*/

    #define DOCH_CONT_REG_AREA          HIB_CORE_ADDRESS
    #define DOCH_DATA_PORT_AREA         (HIB_CORE_ADDRESS + 0x0800)
    #define DOCH_CONFIG_REG_AREA        (HIB_CORE_ADDRESS + 0x1400)
    #define DOCH_PRIMARY_SECONDARY_AREA (HIB_CORE_ADDRESS + 0x1800)


#endif /* DOCH_USING_8K_WIN */


#define HIB_CHIPID1_REG                 (DOCH_CONFIG_REG_AREA)
#define HIB_CHIPID2_REG                 (DOCH_CONFIG_REG_AREA + 0x22)
#define HIB_IPL_CONTROL_REG             (DOCH_CONFIG_REG_AREA + 0x08)
#define HIB_IPL_CONTROL_ADD             (DOCH_CONFIG_REG_AREA + 0x08)

#define	DOCH_DATA_MODE_SINGLE	0
#define	DOCH_DATA_MODE_MULT		1

#define	HIB_OPERATION_MODE_REG			DOCH_CONFIG_REG_AREA + 0x14
#define	HIB_NO_ADDR_SHIFT	0x00
#define	HIB_ADDR_SHIFT		0x02
/*Operation Mode Register*/
#define	HIB_NON_PIPE_ACCESS	0x00
#define	HIB_PIPE_ACCESS		0x01

/* bits for DOCH_DRIVE_HEAD_REG register */
#define DOCH_DEVICE     0x10
#define DOCH_LBA        0x40
#define DOCH_DRIVE_HEAD 0xA0

/* size of DOCH data block in FLBytes */
#define DOCH_SECTOR_SIZE  512
#define	DOCH_SECTOR_SIZE_BITS 9


/* bits in DOCH_STATUS_REG and DOCH_ALT_STATUS_REG registers */
#define DOCH_ERROR      0x01
#define DOCH_DRQ        0x08
#define DOCH_DSC        0x10
#define DOCH_READY      0x40
#define DOCH_BUSY       0x80

#define DOCH_MAX_SECTORS  256


/* all DOCH error codes */
#define DOCH_ATA_ERROR_BASE	0x0
#define DOCH_SDK_ERROR_BASE	0x100
#define DOCH_FS_ERROR_BASE  0x200

#ifdef DOCH_FPGA_SIM
	/* 'long'  DOCH operations can take up to DOCH_LONG_WAIT milliseconds  */
	#define DOCH_LONG_WAIT   5000
	/* 'short' DOCH operations can take up to DOCH_SHORT_WAIT milliseconds */
	#define DOCH_SHORT_WAIT  5000
#else /*DOCH_FPGA_SIM*/
	/* 'long'  DOCH operations can take up to DOCH_LONG_WAIT milliseconds  */
	#define DOCH_LONG_WAIT   500
	/* 'short' DOCH operations can take up to DOCH_SHORT_WAIT milliseconds */
	#define DOCH_SHORT_WAIT  5
#endif /*DOCH_FPGA_SIM*/


typedef enum { DOCH_OK                  = 0,

			   /*ATA Error codes*/
			   DOCH_AtaDeviceNotFound   = DOCH_ATA_ERROR_BASE	+ 6,
			   DOCH_UnknownATACmd		= DOCH_ATA_ERROR_BASE	+ 7,
               DOCH_NoSpaceInVolume     = DOCH_ATA_ERROR_BASE	+ 10,
               DOCH_NoSpaceInDevice     = DOCH_ATA_ERROR_BASE	+ 11,
               DOCH_PartitionNotProtected = DOCH_ATA_ERROR_BASE + 20,
               DOCH_NoWriteAccess       = DOCH_ATA_ERROR_BASE	+ 21,
               DOCH_NoReadAccess        = DOCH_ATA_ERROR_BASE	+ 22,
               DOCH_PartitionProtected  = DOCH_ATA_ERROR_BASE	+ 23,
               DOCH_WrongPasskey		= DOCH_ATA_ERROR_BASE	+ 24,
               DOCH_PartitionOTPEnabled = DOCH_ATA_ERROR_BASE	+ 25,
               DOCH_TimedOut            = DOCH_ATA_ERROR_BASE	+ 30,
               DOCH_PartitionNotFormatted = DOCH_ATA_ERROR_BASE + 35,
               DOCH_SectorExceedsVolume	= DOCH_ATA_ERROR_BASE	+ 40,
               DOCH_AtaVerifyFault      = DOCH_ATA_ERROR_BASE	+ 41,

               /*SDK Error Codes*/
			   DOCH_GeneralFailure      = DOCH_SDK_ERROR_BASE + 5,
               DOCH_AdapterNotFound     = DOCH_SDK_ERROR_BASE + 6,
               DOCH_BadFunction         = DOCH_SDK_ERROR_BASE + 10,
               DOCH_BadParameter        = DOCH_SDK_ERROR_BASE + 15,
               DOCH_DriveNotAvailable   = DOCH_SDK_ERROR_BASE + 20,
               DOCH_DriveNotReady       = DOCH_SDK_ERROR_BASE + 25,
               DOCH_FormattingError     = DOCH_SDK_ERROR_BASE + 30,
               DOCH_NotEnoughMemory     = DOCH_SDK_ERROR_BASE + 35,
               DOCH_ReadFault           = DOCH_SDK_ERROR_BASE + 40,
               DOCH_WriteFault          = DOCH_SDK_ERROR_BASE + 41,
               DOCH_VerifyFault         = DOCH_SDK_ERROR_BASE + 42,
               DOCH_UnknownCmd          = DOCH_SDK_ERROR_BASE + 45,
               DOCH_UnknownMedia        = DOCH_SDK_ERROR_BASE + 50,
               DOCH_DiskNotFound        = DOCH_SDK_ERROR_BASE + 55,
               DOCH_PartitionNotFound	= DOCH_SDK_ERROR_BASE + 60,
               DOCH_FeatureNotSupported	= DOCH_SDK_ERROR_BASE + 65,
			   DOCH_ATABusyNotCleared	= DOCH_SDK_ERROR_BASE + 70,
			   DOCH_ATANotReady			= DOCH_SDK_ERROR_BASE + 71,
			   DOCH_ATAErrorDetected	= DOCH_SDK_ERROR_BASE + 72

} DOCH_Error;

/* Ata registers structure */
typedef struct {  FLByte bFeaturesError;/* DOCH_FEATURES_REG or DOCH_ERROR_REG	*/
				  FLByte bSectorCount;	/* DOCH_SECTOR_CNT_REG	*/
				  FLByte bSectorNumber;	/* DOCH_SECTOR_NO_REG	*/
				  FLByte bCylLow;		/* DOCH_CYLINDER_LOW_REG	*/
				  FLByte bCylHigh;		/* DOCH_CYLINDER_HIGH_REG	*/
				  FLByte bDriveHead;	/* DOCH_DRIVE_HEAD_REG	*/
				  FLByte bCommandStatus;/* DOCH_COMMAND_REG	or DOCH_STATUS_REG*/
} DOCH_Registers;

typedef enum { 
			   DOCH_DATA_REG          = DOCH_CONT_REG_AREA,
			   DOCH_ERROR_REG         = 0x01,
               DOCH_FEATURES_REG      = 0x01,
               DOCH_SECTOR_CNT_REG    = 0x02,
               DOCH_SECTOR_NO_REG     = 0x03,
               DOCH_CYLINDER_LOW_REG  = 0x04,
               DOCH_CYLINDER_HIGH_REG = 0x05,
               DOCH_DRIVE_HEAD_REG    = 0x06,
               DOCH_STATUS_REG        = 0x07,
               DOCH_COMMAND_REG       = 0x07,
               DOCH_ALT_STATUS_REG    = 0x0E,
               DOCH_CONTROL_REG		  = 0x0E
} DOCH_Reg;

/* set of DOCH Vendor-Specific ATA Commands */
typedef enum { 
			   /*I/O*/
			   DOCH_VSCMD_READ_PARTITION		= 0x82,
               DOCH_VSCMD_WRITE_PARTITION		= 0x83,
			   DOCH_VSCMD_WRITE_FLEXI			= 0x84,
			   DOCH_VSCMD_VERIFY				= 0x85,

			   /*Sectors Operations*/
			   DOCH_VSCMD_OPTIMIZE_SECTORS		= 0x86,
			   DOCH_VSCMD_ERASE_SECTORS			= 0x88,

			   /*Hash*/
			   DOCH_VSCMD_READ_CALCULATED_HASH	= 0x8A,
			   DOCH_VSCMD_WRITE_CALCULATED_HASH	= 0x8B,
			   DOCH_VSCMD_READ_ORIGINAL_HASH	= 0x8C,
			   DOCH_VSCMD_WRITE_GIVEN_HASH		= 0x8D,

			   /*Sub-commanded commands*/
			   DOCH_VSCMD_PARTITION_MANAGEMENT	= 0xFA,
			   DOCH_VSCMD_ACCESS_CONTROL		= 0xFB,
               DOCH_VSCMD_EXT_DEVICE_CTRL		= 0xFC,
               DOCH_VSCMD_EXT_SECURITY_CTRL		= 0xFD,

			   /*Supported standard ATA commands*/
			   DOCH_CMD_IDENTIFY_DEV            = 0xEC,
			   DOCH_DOWNLOAD_MICROCODE			= 0x92

} DOCH_Command;


/*	Optional bits in DOCH_DRIVE_HEAD_REG	*/
#define DRIVE_HEAD_OPT1 0x80
#define DRIVE_HEAD_OPT2 0x20

/*	Pattern to add to DOCH_DRIVE_HEAD_REG to 	*/
/*Option1*/
#define CUSTOM_PARAM_TEMP		DRIVE_HEAD_OPT1	/*Temporary value*/
#define CUSTOM_PARAM_DEFAULT	0				/*DEFAULT value*/

/*	Custom Parameters Table	*/
typedef enum { 
	DOCH_CP_BOOT_MODE		= 0x00,	/*Boot Mode (See DOCH_IPLModes)*/
	DOCH_CP_XIP_TEST_MODE	= 0x01,	/*XIP Test Modes (See DOCH_XIPTestModes)*/
	DOCH_CP_XIP_MAX_SIZE	= 0x02,	/*Max XIP Size*/
	DOCH_CP_XIP_ETFFS_SIZE	= 0x03	/*Returns the size of the currently saved ETFFS (required for uploading the ETFFS)*/
} DOCH_CustomParams;

#define DOCH_CUSTOM_PARAM_TEMP		0
#define DOCH_CUSTOM_PARAM_DEFAULT	1

/* IPL Modes */
typedef enum {
	DOCH_IPL_MODE_NORMAL_RAM				= 0x0000,
	DOCH_IPL_MODE_PAGED_RAM					= 0x0001,
	DOCH_IPL_MODE_VIRTUAL_RAM				= 0x0002,
	DOCH_IPL_MODE_CS_DELAY					= 0x1000,	/*Should be Or`ed with 0x0XX0, where bits 4-11 indicating delay*/
	DOCH_IPL_MODE_ADDRESS_SHIFT_IN_AFFECT	= 0x2000,
	DOCH_IPL_MODE_ACTIVE_SWAP_BYTES			= 0x4000,
	DOCH_IPL_MODE_8KB_WINDOW				= 0x8000
} DOCH_IPLModes;

#define	DOCH_IPL_WRITE_FIRST_CHUNK			0x80000000 /*Defines first chunk when writing IPL in chunks*/

⌨️ 快捷键说明

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