📄 nand.c
字号:
#include "Nand.h"
#include "Uart.h"
void NF_Init(void)
{
;
}
unsigned short NF_CheckId(void)
{
unsigned short id=0xec76;
return id;
}
void NF_ReadPage(U32 iBlock,U32 iPage,U8 *pBuffer)
{
printk("Read block:%d,page:%d\r\n",iBlock,iPage);
U8 *pBasicAddr=(U8 *)0x33200000;
U8 *pAddr=pBasicAddr+((iBlock*32)+iPage)*512;
if(pAddr>=(U8 *)0x33FFC000){
printk("Out of Physical Mem/r/n");
return;
}
if(pAddr>=(U8 *)0x333FC000){
printk("Out of MaxSize/r/n");
return;
}
int i;
for(i=0;i<512;i++)
*(pBuffer+i)=*(pAddr+i);
return;
}
void NF_WritePage(U32 iBlock,U32 iPage,U8 *pBuffer)
{
printk("Write block:%d,page:%d\r\n",iBlock,iPage);
U8 *pBasicAddr=(U8 *)0x33200000;
U8 *pAddr=pBasicAddr+((iBlock*32)+iPage)*512;
if(pAddr>=(U8 *)0x33FFC000){
printk("Out of Physical Mem/r/n");
return;
}
if(pAddr>=(U8 *)0x333FC000){
printk("Out of MaxSize/r/n");
return;
}
int i;
for(i=0;i<512;i++)
*(pAddr+i)=*(pBuffer+i);
return;
}
//参数说明:block 块号
//返回值:0:擦除错误。(若是坏块直接返回0;若擦除出现错误则标记为坏块然后返回0)
// 1:成功擦除。
int NF_EraseBlock(U32 iBlock)
{
U8 *pBasicAddr=(U8 *)0x33200000;
U8 *pAddr=pBasicAddr+iBlock*32*512;
if(pAddr>=(U8 *)0x33FFC000){
printk("Out of Physical Mem/r/n");
return 0;
}
if(pAddr>=(U8 *)0x333FC000){
printk("Out of MaxSize/r/n");
return 0;
}
int i;
for(i=0;i<512*32;i++)
*(pAddr+i)=1;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -