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

📄 nand.c

📁 可以兼容MS-DOS的文件系统和指令的S3C2410平台的DOS部分源代码,加以修改可以使用在S3C2440 S3C44B0等ARM7、ARM9上
💻 C
字号:
/*************************************Seekfor Embedded DOS v1.0***************************************************
 ******                   ***          *****                                    ******     ****     ****** v1.0
**   **                    **         **  **                                     **  **   **  **   **   ** 
**   **                    **         **                                         **   ** **    **  **   ** 
**                         **         **                                         **   ** **    **  **      
 **       *****    *****   ** ****  *******   *****  ********            *****   **   ** **    **   **     
  ***    **   **  **   **  ** **      **     **   **   *** **           **   **  **   ** **    **    ***   
    **   *******  *******  ****       **     **   **   **               *******  **   ** **    **      **  
     **  **       **       *****      **     **   **   **               **       **   ** **    **       ** 
**   **  **       **       ** **      **     **   **   **               **       **   ** **    **  **   ** 
**   **  **   **  **   **  **  **     **     **   **   **               **   **  **  **   **  **   **   ** 
******    *****    *****  ********  ******    *****  ******              *****  ******     ****    ******  
<1)基本描述
	Seekfor Embedded DOS v1.0是嵌入式的一个类DOS操作系统,支持FAT16/FAT32.
<2)文件描述
	文件名:nand.c
	功能:k9f1208操作
<3>如需更新版本软件,请联系:
	QQ:82054357
	Mail:Seek_for@163.com
	MSN:sfrad32@hotmail.com
**************************************************************************************************************/
#ifndef __NAND_C__
#define __NAND_C__
#include "dos.h"
/**BOOL NAND_erase(DWORD dwSectors,DWORD dwBytesPerSector,void*user_data)*********************
功能:
	NAND扇区擦除
入口:
	DWORD dwSectors:逻辑扇区号
	DWORD dwBytesPerSector:每扇区字节数
	void*user_data:用户数据
出口:
	成功返回1,否则返回0
调用者:
	任意
备注:
***********************************************************************************************/
BOOL NAND_erase(DWORD dwSectors,DWORD dwBytesPerSector,void*user_data)
{
	BYTE addr;
	rNFCMD=0x60;
	dwSectors<<=5;
	addr=(BYTE)dwSectors;
	rNFADDR=addr;
	addr=(BYTE)(dwSectors>>8);
	rNFADDR=addr;
	addr=(BYTE)((dwSectors>>16)&0x01);
	rNFADDR=addr;
	rNFCMD=0xd0;
	rNFCMD=0x70;
	while (!(rNFSTAT&0x01));
	return 1;
}

BOOL NAND_read(DWORD dwSectors,BYTE*buffer,DWORD dwBytesPerSector,void*user_data)
{
	
	DWORD i,j;
	BYTE addr;
	dwSectors<<=5;
	rNFCMD=0x00;
	rNFADDR=0x00;
	addr=(BYTE)(dwSectors);
	rNFADDR=addr;
	addr=(BYTE)((dwSectors>>8));
	rNFADDR=addr;
	addr=(BYTE)((dwSectors>>16)&0x01);
	rNFADDR=addr;
	for(i=0;i<32;i++)
	{
		while(!(rNFSTAT&0x01));
		for(j=0;j<512;j++)
		{
			*buffer++=rNFDATA;
		}
		while(j++<528) addr=rNFDATA;
	}
	return 1;
}
 
BOOL NAND_write(DWORD dwSectors,BYTE*buffer,DWORD dwBytesPerSector,void*user_data)
{

	DWORD i,j;
	BYTE addr;
	dwSectors<<=5;
	
	for(i=0;i<32;i++,dwSectors++)
	{
		rNFCMD=0x80;
		rNFADDR=0x00;
		addr=(BYTE)(dwSectors);
		rNFADDR=addr;
		addr=(BYTE)(dwSectors>>8);
		rNFADDR=addr;
		addr=(BYTE)((dwSectors>>16)&0x01);
		rNFADDR=addr;
		for(j=0;j<512;j++) rNFDATA=*buffer++;
		for(;j<528;j++) rNFDATA=0xff;
		rNFCMD=0x10;
		while(!(rNFSTAT&0x01));
		
	}
	return 1;

}

#endif

⌨️ 快捷键说明

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