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

📄 nand.c

📁 ADS开发的BOOTLOADER,针对2410,是某培训班出的!
💻 C
字号:
#include "uart.h"
#include "2410addr.h"
#include "nand.h"
#define chipen() (rNFCON&=~(1<<11))
#define chipdis() (rNFCON|=(1<<11))
#define block_size  (512)



void wait()
 {int k;
 for(k=0;k<10;k++); 
 while(!(rNFSTAT&0x1));
 }
 
 

int nand_read(unsigned int addr,unsigned char *buf,int len)
{int i,j,k;
unsigned char * wrbuf;
wrbuf=buf;
chipen();
for(k=0;k<10;k++);
uart_send("\n\rloading:");
for(i=addr;i<(addr+len);)
{uart_send(".");
rNFCMD=0x00;
rNFADD=i&0xff;
rNFADD=(i>>9)&0xff;
rNFADD=(i>>17)&0xff;
rNFADD=(i>>25)&0xff;
wait();
for(j=0;j<block_size;j++,i++)
{
*wrbuf=(rNFDATA&0xff);
wrbuf++;
}
}

chipdis();

return 0;
}



void nand_init()
{chipen();
rNFCMD=0xff;
wait();
chipdis();
}



int nand_earse(unsigned int addr)
{
chipen();

uart_send("Now Earse........\n\r");

rNFCMD=0x60;

rNFADD=(addr>>9)&0xff;
rNFADD=(addr>>17)&0xff;
rNFADD=(addr>>25)&0xff;
rNFCMD=0xD0;

wait();


rNFCMD=0x70;


if(rNFDATA&0xf)
   {chipdis();
    return 0;
    }
  chipdis();  
return 1;
}


int page_write(unsigned int addr , unsigned char * buf)
{int i;
unsigned char *wrbuf;
wrbuf=buf;
chipen();



rNFCMD=0x0;
rNFCMD=0x80;


rNFADD=addr&0xff;
rNFADD=(addr>>9)&0xff;
rNFADD=(addr>>17)&0xff;
rNFADD=(addr>>25)&0xff;

for(i=0;i<block_size;i++)
   { 
   rNFDATA=(*(wrbuf++)&0xff);
   }
   
rNFCMD=0x10;  
wait();


rNFCMD=0x70;

if(rNFDATA&0xf)
  {chipdis();
  return 0;
  }
  
 chipdis();
 return 1;
 }
 
 
int nand_write(unsigned int addr,unsigned char * buf,int len)
{unsigned int i,j;
 unsigned char * wrbuf;
 int wrlen;
i=addr;
 wrbuf=buf;
 wrlen=len;
 uart_send("NOW PROGRAMMING.......\n\r");
 
 
 
 while(i<(addr+len))
 {if(nand_earse(i)==0)
     uart_send("earse eorrer");
  j=0;
  while((j<32)&&(i<(addr+len)))
        {uart_send(".");
        if(page_write(i,wrbuf)==0)
           uart_send("write eorror\n\r");
         i+=512;
         wrbuf+=512;  
                }
    i+=512;
    
    wrbuf+=512;
    }
return 0;
 }
 
 
 
 
 
 
 
  


   



⌨️ 快捷键说明

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