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

📄 nandownload.c

📁 凌阳MP3 spSPCA755yuanma
💻 C
字号:

#include "general.h"
#include "cardopt.h"
#include "doslink.h"
#include "dosusr.h"
#include "cardlink.h"

#if (NANDF_OPTION)

extern BYTE SMC_SearchValidBlock(ULONG *pPhyAddr);
extern BYTE CF_CardDetect(void);
extern UCHAR SD_CardDetect(void);
extern UCHAR SMC_EraseOneBlock(ULONG startAddress);
extern UCHAR SMC_Sram2Card(ULONG startAddress, USHORT blockAddress);
extern UCHAR SMC_Card2Sram(ULONG startAddress);
extern void SMC_HwInitialize(void);
extern BYTE SMC_CardDetect(void);
BYTE NANDF_FindReserveBlock(BYTE blkNum, ULONG *pPhyAddr);

extern xdata WORD G_Card_TotalSizeMB;
extern xdata WORD G_Card_BlockSize;		// nand256M
extern xdata BYTE G_Card_PagePerBlock;


BYTE NANDF_FindReserveBlock(BYTE blkNum, ULONG *pPhyAddr) USING_0
{
	BYTE j;
	ULONG phyAddr;
	ULONG phyMaxAddr;
	
	if (G_Card_Type != K_MEDIA_NANDF && G_Card_Type !=K_MEDIA_SMC)
		G_Card_Type = K_MEDIA_NANDF;
	
	SMC_HwInitialize();
	if (SMC_CardDetect())
	{
		phyMaxAddr = (ULONG) G_Card_TotalSizeMB << 20;
		phyAddr = 0;
		for (j = 0; j < G_NAND_ReservBlockTotal;)
		{
			if (SMC_SearchValidBlock(&phyAddr))
			{
				if (j==blkNum)
				{
					*pPhyAddr = phyAddr;
					return TRUE;
				}
				else
				{
					j++;
					phyAddr += G_Card_BlockSize;
				}
			}
			if (phyAddr >= phyMaxAddr)
				return FALSE;
		}
	}
	return FALSE;
}

#if 0
BYTE NANDF_AccessReserveBlock(BYTE path, BYTE blkNum, BYTE pageNum, BYTE pageCount, ULONG ramAddr) USING_0
{
	BYTE saveCardType;
	BYTE sts;
	ULONG phyAddr;
	ULONG pageAddr;
	BYTE k;
	BYTE maxPageNum;
	
	if (blkNum < G_NAND_ReservBlockTotal)
	{
		saveCardType = G_Card_Type;
		sts = NANDF_FindReserveBlock(blkNum, &phyAddr);
		if (sts)
		{
			if (	path == K_NANDF_Reserve_SramToFlash)
				sts = SMC_EraseOneBlock(phyAddr);
				
			if (sts)
			{
				maxPageNum = G_Card_PagePerBlock-1;
				if (pageNum > maxPageNum)
					pageNum = maxPageNum;
				if (pageNum + pageCount > G_Card_PagePerBlock)
					pageCount = G_Card_PagePerBlock - pageNum;
					
				for (k = 0; sts && (k < pageCount); k++) 
				{
					pageAddr = phyAddr+((ULONG)(pageNum+k)<<9);
					if (path == K_NANDF_Reserve_SramToFlash)
						sts = SMC_Sram2Card(pageAddr, 0);
					else
						sts = SMC_Card2Sram(pageAddr);
					ramAddr += 256L;
				}
			}
		}
	        G_Card_Type = saveCardType;
		if (G_Card_Type != K_MEDIA_NANDF)
		{
			XBYTE[0x2401] &= 0xF0;
			XBYTE[0x2405] &= 0xF0;

		        #if (SMC_OPTION)
		        if (G_Card_Type == K_MEDIA_SMC)
		        {
				SMC_HwInitialize();
				SMC_CardDetect();
		        }
		        #endif
		        
		        #if (CFC_OPTION)
		        if (G_Card_Type == K_MEDIA_CFC)
		        	CF_CardDetect();
		        #endif
		        
		        #if (SDF_OPTION || MMC_OPTION)
		        if (G_Card_Type == K_MEDIA_SDF || G_Card_Type == K_MEDIA_MMC)
		        {
		        	if (Card_Detect()==0)
		        	{
		        		G_Card_Type = K_MEDIA_MMC;
		        	}
		        }
		        #endif
	        }
	}
	return sts;

}
#endif

#endif

⌨️ 快捷键说明

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