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

📄 nand.h

📁 三星公司S3c2443的测试程序源码
💻 H
字号:
#ifndef __NAND_H
#define __NAND_H

#ifdef __cplusplus
extern "C" {
#endif


#define FAIL 0
#define OK   1



#define NF_MECC_UnLock()         {rNFCONT&=~(1<<7);}
#define NF_MECC_Lock()         {rNFCONT|=(1<<7);}
#define NF_SECC_UnLock()         {rNFCONT&=~(1<<6);}
#define NF_SECC_Lock()         {rNFCONT|=(1<<6);}
#define NF_CMD(cmd)			{rNFCMD=cmd;}
#define NF_ADDR(addr)		{rNFADDR=addr;}	
#define NF_nCS1_L()			{rNFCONT&=~(1<<2);}
#define NF_nCS1_H()			{rNFCONT|=(1<<2);}
#define NF_nFCE_L()			{rNFCONT&=~(1<<1);}
#define NF_nFCE_H()			{rNFCONT|=(1<<1);}
#define NF_RSTECC()			{rNFCONT|=(1<<5)|(1<<4);}
#define NF_RDDATA() 			(rNFDATA)
#define NF_RDDATA8() 		((*(volatile unsigned char*)0x4E000010) )
#define NF_RDDATA16() 		((*(volatile unsigned short*)0x4E000010) )
#define NF_WRDATA(data) 	{rNFDATA=data;}
#define NF_WRDATA8(data) 	{rNFDATA8=data;}

// RnB Signal
#define NF_CLEAR_RB()    		{rNFSTAT |= (1<<4);}	// Have write '1' to clear this bit.
#define NF_DETECT_RB()    		{while(!(rNFSTAT&(1<<4)));}


#define ID_K9S1208V0M	0xec76
#define ID_KMXD64P3 	0x9876
#define ID_K9K2G08U0M	0xecda
#define ID_K9K2G16U0M	0xecca

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

#define BAD_MARK	(0x44444444)

////////////////////////////// 8-bit ////////////////////////////////
// Main function
void Test_NAND(void);

// Sub function
void Test_K9S1208(void);
void NF8_Program(void);
void PrintSubMessage(void);
void Test_NF8_Rw(void);
void Test_NF8_Page_Write(void);
void Test_NF8_Page_Read(void);
void Test_NF8_Block_Erase(void);
void NF8_PrintBadBlockNum(void);
void Test_NF8_Lock(void);
void Test_NF8_SoftUnLock(void);

void Test_K9F2G08(void);
void Adv_NF8_Program(void);
void Adv_PrintSubMessage(void);
void Test_Adv_NF8_Rw(void);
void Test_Adv_NF8_Page_Write(void);
void Test_Adv_NF8_Page_Read(void);
void Test_Adv_NF8_Block_Erase(void);
void Adv_NF8_PrintBadBlockNum(void);
void Test_Adv_NF8_Lock(void);
void Test_Adv_NF8_SoftUnLock(void);
void Test_MLC_Adv_ECC(void);

void Test_MLC_ECC(void);

U8 Read_Status(void);

//*************** H/W dependent functions ***************
// Assembler code for speed

void Nand_Reset(void);
void InputTargetBlock(void);
void NF8_Print_Id(void);
static U16 NF8_CheckId(void);
static int NF8_EraseBlock(U32 blockNum);
static int NF8_ReadPage(U32 block,U32 page,U8 *buffer);
static int NF8_WritePage(U32 block,U32 page,U8 *buffer);
static int NF8_IsBadBlock(U32 block);
static int NF8_MarkBadBlock(U32 block);




void NF8_Print_Id(void);
static U16 NF8_CheckId(void);
void InputTargetBlock_Adv(void);
static int Adv_NF8_EraseBlock(U32 blockNum);
static int Adv_NF8_ReadPage(U32 block,U32 page,U8 *buffer);
static int Adv_NF8_WritePage(U32 block,U32 page,U8 *buffer);
static int Adv_NF8_IsBadBlock(U32 block);
static int Adv_NF8_MarkBadBlock(U32 block);

static void NF8_Init(void);

void SRAM_Test(int Print_msg);


//*******************************************************

#ifdef __cplusplus
}
#endif

#endif /*__NAND_H*/

⌨️ 快捷键说明

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