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

📄 nandfdrv.c

📁 PDA上的CF CARD 文件系统的建立程式
💻 C
字号:
/*************************************************************
File Name: NANDfdrv.C
Last Modified Date: 2001/03/19
Programmer: MSC
Compiler:
Platform:
Usage:
	Flash erase & program functions that is loadable to
	RAM for execution.
Other Information:
	Only for intel flash
**************************************************************/
#include <sys/syscall.h>
//#include "../../nflash/include/nflash.h"
//#include "nflash/include/nflash.h"
#ifdef __WIN32__
#include "../../diskEmu/include/nfshEmu.h"
#else
#include "nflash/include/nflash.h"
#endif

#include "../include/FFS_NAND.h"
#include "../include/NANDfdrv.h"



#ifdef NAND_FLASH_DISK_ID



/*************************************************************
Function: NAND_FFS_fshFrameRead
Description:
	read a flash frame
Input:
	frame - the frame number
Output:
	0	SUCCESS
	-1	FAILURE
**************************************************************/
int NAND_FFS_fshFrameRead(int frame, unsigned char *pData)
{
  unsigned long offset;

  offset = frame * NFLASH_FRAME_SIZE;

  sc_disableInt();
  nfshReadFrame(offset, pData);
  sc_enableInt();

  return 0;
}



/*************************************************************
Function: NAND_FFS_fshBlockRead
Description:
	read a flash block
Input:
	block - the block number
Output:
	0	SUCCESS
	-1	FAILURE
**************************************************************/
int NAND_FFS_fshBlockRead(int block, unsigned char *pData)
{
  unsigned long offset;
  unsigned long frameNO;
  unsigned long i;

  offset = block * NAND_FLASH_BLOCK_SIZE;
  frameNO = NAND_FLASH_BLOCK_SIZE / NFLASH_FRAME_SIZE;

  for (i = 0; i < frameNO; i++)
  {
	sc_disableInt();
	nfshReadFrame(offset, pData);
	sc_enableInt();
	offset += NFLASH_FRAME_SIZE;
	pData += NFLASH_FRAME_SIZE;
  }

  return 0;
}



/*************************************************************
Function: NAND_FFS_fshBlockErase
Description:
	erase a flash sector
Input:
	block - the block number
Output:
	0	SUCCESS
	-1	FAILURE
**************************************************************/
int NAND_FFS_fshBlockErase(int block)
{
  unsigned long offset;

  offset = block * NAND_FLASH_BLOCK_SIZE;

  sc_disableInt();
  nfshEraseBlock(offset);
  sc_enableInt();

  return 0;
}



/*************************************************************
Function: NAND_FFS_fshBlockProgram
Description:
	program a flash sector
Input:
	block - the block number
Output:
	0	SUCCESS
	-1	FAILURE
**************************************************************/
int NAND_FFS_fshBlockProgram(int block, unsigned char *pData)
{
  unsigned long offset;
  unsigned long frameNO;
  unsigned long i;

  offset = block * NAND_FLASH_BLOCK_SIZE;
  frameNO = NAND_FLASH_BLOCK_SIZE / NFLASH_FRAME_SIZE;
//	printf("{P_Block=%d}", offset);//jason
  for (i = 0; i < frameNO; i++)
  {
	sc_disableInt();
	nfshProgramFrame(offset, pData);
	sc_enableInt();
	offset += NFLASH_FRAME_SIZE;
	pData += NFLASH_FRAME_SIZE;
  }

  return 0;
}



#endif	// #ifdef NAND_FLASH_DISK_ID


⌨️ 快捷键说明

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