📄 nandownload.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 + -