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

📄 compactflash.h

📁 (1)基于部分u-boot代码自己调试的vxworks BSP (2)实现了nand/nor flash的tffs文件系统 (3)实现了对spi dataflash的访问 (4)实现了对启动参数
💻 H
字号:
#if 0
//*----------------------------------------------------------------------------
//*         ATMEL Microcontroller Software Support  -  ROUSSET  -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name           : CompactFlash.h
//* Object              : main application written in C
//* Creation            : GGi   12/11/2002
//*
//*----------------------------------------------------------------------------
#endif
#ifndef COMPACTFLASH_H
#define COMPACTFLASH_H

/*
#include "PRODUCT/AT91RM9200/AT91RM9200.h"
#include "PRODUCT/AT91RM9200/lib_AT91RM9200.h"

#define SANDISK8M

#ifdef FUJI16M
#include "Fuji16M.h"
#endif
#ifdef SANDISK8M
#include "Sandisk8M.h"
#endif
#ifdef HITACHI8M
#include "Hitachi8M.h"
#endif
*/

/*---------------------------  Constants definition -------------------------*/



/*---------------------------  Structure definition -------------------------*/



/*/Configuration Option Register*/

#define	CF_COR_MEMMAP	(0)
#define	CF_COR_IO16		(1)
#define	CF_COR_IO_1		(2) 		/*/I/O mapped 1F0h-1F7h/3F6h-3F7h*/
#define	CF_COR_IO_2		(3) 		/*/I/O mapped 170h-177h/376h-377h*/
#define	CF_COR_LEVIRQ	(1 << 6) 	/*/IRQ level mode*/
#define	CF_COR_PULIRQ	(0 << 6) 	/*/IRQ pulse mode*/
#define	CF_COR_SRESET	(1 << 7)	/*/Soft reset*/
#define	CF_COR_HRESET	(0 << 7)	/*/Hard reset*/
/*/to be defined for CF+*/


/*/Card Configuration and Status Register*/

#define	CF_CCSR_INT		(1 << 1)	/*/internal state of interrupt request*/
#define	CF_CCSR_PWRDWN	(1 << 2)	/*/power down*/
#define	CF_CCSR_AUDIO	(1 << 3)	/*/Audio, only for CF+*/
#define	CF_CCSR_WE		(1 << 4)	/*/Power Level 1 feature, only for CF+*/
#define	CF_CCSR_IO8		(1 << 5)	/*/I/O on 8 bits*/
#define	CF_CCSR_SIGCHG	(1 << 6)	/*/State change signal*/
#define	CF_CCSR_CH		(1 << 7)	/*/changed*/

/*/Pin Replacement Register*/
#define	CF_PRR_WPROT	(0)			/*/always zero*/
#define	CF_PRR_MWPROT	(1)			/*/acts as a mask for writing CWPROT*/
#define	CF_PRR_RDY_BSY	(1 << 1)	/*/Ready/-Busy signal*/
#define	CF_PRR_MRDY_BSY	(1 << 1)	/*/acts as a mask for writing CRDY_BSY*/
#define	CF_PRR_CWPROT	(1 << 4)	/*/set to one when RWprot state changes*/
#define	CF_PRR_CRDY_BSY	(1 << 5)	/*/set to one when RRDY_BSY state changes*/

/*/Socket and Copy Register*/
#define	CF_SCR_DRIVE(x)	(x&1 << 4)	/*/drive number*/
#define	CF_SCR_RESERVED	(0 << 7)	/*/must be 0 when the register is written*/



#define CF_ATA_DATA_OFFSET		0
#define CF_ATA_ERROR_OFFSET		1

#define CF_ATA_ALT_TRUE_IDE_STATUS_OFFSET	6

#define CF_ATA_STATUS_OFFSET	7
#define CF_ATA_EVEN_DATA_OFFSET	8
#define CF_ATA_ODD_DATA_OFFSET	9

#define CF_ATA_ST_ERR			(1)
#define CF_ATA_ST_CORR			(1 << 2)
#define CF_ATA_ST_DRQ			(1 << 3)
#define CF_ATA_ST_DSC			(1 << 4)
#define CF_ATA_ST_DWF			(1 << 5)
#define CF_ATA_ST_RDY			(1 << 6)
#define CF_ATA_ST_BUSY			(1 << 7)

/*-------------------  CompactFlash command set  -------------------------*/

#define CHK_POWMOD			0xe5 
#define DRIVE_DIAG			0x90
#define ERASE_SECTOR		0xc0
#define FORMAT_TRACK		0x50
#define DRIVE_ID			0xec
#define CF_IDLE				0xe3 
#define IDLE_IMM			0xe1 
#define INIT_DRIVE_PARAM	0x91
#define READ_BUF			0xe4
#define READ_LONG_SECTOR	0x22 
#define READ_MULT			0xc4
#define READ_SECTOR			0x20 
#define READ_VERIF_SECTOR	0x40 
#define RECALIBRATE			0x10 
#define REQ_SENSE			0x03
#define SECU_DIS_PASS		0xf6
#define SECU_ERASE_PREP		0xf3
#define SECU_ERASE_UNIT		0xf4
#define SECU_FREEZE_LOCK	0xf5
#define SECU_SET_PASS		0xf1
#define SECU_UNLOCK			0xf2
#define SEEK				0x70 
#define SET_FEATURES		0xef
#define SET_MULT_MODE		0xc6
#define SET_SLEEP_MODE		0xe6 
#define STAND_BY			0xe2 
#define STAND_BY_IMM		0xe0 
#define TRANS_SECTOR		0x87
#define WEAR_LEVEL			0xf5
#define WRITE_BUF			0xe8
#define WRITE_LONG_SECTOR	0x32 
#define WRITE_MULT			0xc5
#define WRITE_MULT_WO_ER	0xcd
#define WRITE_SECTOR		0x30 
#define WRITE_SECTOR_WO_ER	0x38
#define WRITE_VERIFY		0x3c

//memory mapping structures

#define CF_NORMAL_RWH		(2 << 28)
#define CF_NORMAL_RWS		(2 << 24)
#define CF_NORMAL_TDF		(6 << 8)
#define CF_NORMAL_NWS		(16)
#define CF_IO_RWH			(3 << 28)//2
#define CF_IO_RWS			(5 << 24)//4
#define CF_IO_TDF			(0 << 8) 
#define CF_IO_NWS			(10)

#define ATTRIBUTE	0
#define	IO_1		1
#define	IO_2		2
#define	IO_16		3
#define	MEMORY		4
#define	MEMORY16	5
#define	IO_IDE		6
#define	MEM_BY_IO	7
#define	IO_BY_MEM	8
#define	IDE			9
#define	NB_MEM_CFG	10

typedef struct{
	int type;
	int cor;
	int base;
	int smc_cfg;
}AT91S_CF_MemMap;



/*---------------------------  Function Prototyping -------------------------*/
extern volatile char *CompactFlash_BASE;
extern volatile short *CompactFlash_BASE_16;

extern int space_type ;

extern int AT91F_CF_Read(unsigned char *,int);
extern int AT91F_CF_Write(unsigned char *,int);
extern void AT91F_CF_Open(void);
extern int AT91F_CF_READ_ID (unsigned char *);
extern int AT91F_CF_READ_IDE_ID (unsigned short *);
extern void AT91F_CF_READ_CIS (unsigned char *,int);
extern int AT91F_CF_WRITE_SECTOR (unsigned char *, char, char, char, char);
extern int AT91F_CF_READ_SECTOR (unsigned char *, char, char, char, char);
extern int AT91F_CF_WRITE_BUF (unsigned char *, char, char, char, char);
extern int AT91F_CF_READ_BUF (unsigned char *, char, char, char, char);
extern int AT91F_CF_ERASE_SECTOR (char, char, char, char);

extern int AT91F_CF_SetMemType (int);
extern char AT91F_GetStatus (void);

/*/16 bitwitdh databus functions*/
extern int AT91F_CF_READ16_ID (unsigned short *);
extern int AT91F_CF_WRITE16_SECTOR (unsigned short *, char, char, char, char);
extern int AT91F_CF_READ16_SECTOR (unsigned short *, char, char, char, char);

extern int AT91F_CF_Read16(unsigned short *,int);
extern int AT91F_CF_Write16(unsigned short *,int);

/* MACROS */
extern void AT91F_CF_WriteReg(int, char);
extern int AT91F_CF_WriteCommand(char *, int , int);
extern int AT91F_CF_Write16Command(short *, int , int);

extern int AT91F_CF_Card_OK (void);

#define OFFSET_SECTORS 7
#define OFFSET_MODEL 27
#define LENGTH_MODEL 20




#endif /*/ COMPACTFLASH_H*/


⌨️ 快捷键说明

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