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

📄 common.h

📁 应用ADS下载nand flash源代码
💻 H
字号:
/*************************************************************************/
/*                                                                       */
/* FILE NAME                                      VERSION                */
/*                                                                       */
/* source\common.h                                 1.0                   */
/*                                                                       */
/* DESCRIPTION : Nand.c header file                                      */
/*  - Flash Command                                                      */
/*  - Host PC interface command                                          */
/*  - Registers define                                                   */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/* FUNCTIONS :                                                           */
/*                                                                       */
/* CPU DEPENDENCES                                                       */
/*                                                                       */
/* Made by Song Seun Keun                                                */
/*                                                                       */
/*                                Copyrigth (C) 2001 AIJISYSTEM CO.,LTD  */
/*************************************************************************/

#define		uchar	unsigned char
#define		uint	unsigned int
#define		ushort	unsigned short 
#define		ulong	unsigned long

#define	RESET_CTRL		 (ulong)0xff
#define	READ_STATUS		 (ulong)0x70
#define	READ_FLAG		 (ulong)0x00000001 // spare area
#define	PROGRAM_FIRST	 (ulong)0x80
#define	PROGRAM_SECOND	 (ulong)0x10
#define	ERASE_CMD_FIRST  (ulong)0x60
#define	ERASE_CMD_SECOND (ulong)0xD0
#define	ID_CMD			 (ulong)0x90
#define WRITE_RESET      (ulong)0x00
#define READ             (ulong)0x00
#define	ERASE_CONFIRM	 (uchar)0xD0
#define	STATUS_CMD		 (ulong)0x00000006
#define	RESET_CMD		 (ulong)0x00000007
#define READ_CMD         (ulong)0x50

/* Nand Flash Registers */
#define rNFCONF		(*(volatile unsigned *)0x4E000000)      //NAND Flash configuration
#define rNFCONT		(*(volatile unsigned *)0x4E000004)      //NAND Flash control
#define rNFCMD		(*(volatile unsigned *)0x4E000008)      //NAND Flash command
#define rNFADDR		(*(volatile unsigned *)0x4E00000C)      //NAND Flash address
#define rNFDATA		(*(volatile unsigned char *)0x4E000010) //NAND Flash data
#define rNFSTAT		(*(volatile unsigned *)0x4E000020)      //NAND Flash operation status

/* 2410 Hardware Configure */
// HCLK=100Mhz
#define TACLS		7	// 1-clk(0ns) 
#define TWRPH0		7	// 3-clk(25ns)
#define TWRPH1		7	// 1-clk(10ns)  //TACLS+TWRPH0+TWRPH1>=50ns

#define FPROGRAM	0
#define FERASEALL	1
#define FERASESEC	2
#define FREADID		3
#define FREADMEM	4
#define FWRITE_BIB	5
#define FINIT		6


#define BUFFER_SIZE		0x100000
typedef struct  {
	ulong Command;
	ulong Result;
	ulong Reserved1[4];
	ulong Reserved2;
	ulong TargetAddr;
	ulong Length;
	ulong Reserved3;
	ulong Reserved4;
	ulong Reserved5;
	ulong Reserved6;
	ulong Reserved7;
	ulong Reserved8;
	uchar Buf[BUFFER_SIZE];
	volatile uchar BadBlockTable[4095];
} FLASH_INFO;

// flash.c
extern void Main(void);
extern void Program(void);
extern void EraseAll(void);
extern void EraseSector(void);
extern void ReadChipID(void);
extern int BlankCheck(ulong *targetP,ulong targetSize);
extern int Verification(ulong *targetP, ulong limit, ulong *srcAddr);
extern int OneBlockErase(ulong targetAddr);
extern int WriteChar(uchar *data, ulong page_addr);
extern int ReadChar(uchar *data, ulong targetAddr, ulong size);
extern void ReadMem(void);
extern void InitFlash(void);
extern int Bad_Block_Check(ulong block);
extern ulong PrepareBlock(void);
extern void FlashConfig(void);
extern void NF_Reset(void);
extern void NF_CHECKID(void);
extern void MMU_Init(void);
extern void MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr);
extern __inline void MMU_DisableMMU(void);
extern __inline void MMU_SetTTBase(int base);
extern __inline void MMU_SetDomain(int domain);
extern __inline void MMU_DisableDCache(void);
extern __inline void MMU_DisableICache(void);
extern __inline void MMU_CleanInvalidateDCacheIndex(ulong index);
extern __inline void MMU_InvalidateICache(void);
extern __inline void MMU_InvalidateTLB(void);
extern __inline void MMU_EnableMMU(void);
extern __inline void MMU_EnableDCache(void);
extern __inline void MMU_EnableICache(void);
extern __inline void MMU_SetProcessId(ulong pid);
extern __inline void MMU_EnableAlignFault(void) ;

⌨️ 快捷键说明

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