📄 flash.c
字号:
#include "config.h"
#include "2410addr.h"
#include "2410lib.h"
#include "flash.h"
__inline void NFChipEn() { rNFCONF &= ~0x800; }
__inline void NFChipDis() { rNFCONF |= 0x800; }
__inline void WrNFCmd(unsigned char cmd) { rNFCMD = cmd; }
__inline void WrNFAddr(unsigned char addr) { rNFADDR = addr; }
__inline void WrNFData(unsigned char data) { rNFDATA = data; }
__inline unsigned char RdNFStat(void) { return rNFSTAT; }
__inline unsigned char RdNFData(void) { return rNFDATA; }
void Flash_fill_mem_addr(unsigned int linear_addr, flash_mem *f_addr)
{
f_addr->linear_addr = linear_addr;
f_addr->column = linear_addr & 0xFF;
f_addr->row = linear_addr >> 9;
f_addr->half = (linear_addr >> 8) & 1;
}
unsigned int Flash_ReadID(void)
{
unsigned short id = 0;
NFChipEn();
WrNFCmd(NAND_FLASH_CMD_RDID);
WrNFAddr(0);
while(!RdNFStat());
id = (unsigned short)(RdNFData());
id <<= 8;
id |= RdNFData();
NFChipDis();
return id;
}
// return value == 0 -> BUSY
// return value != 0 -> READY
unsigned char Flash_ReadStatus(void)
{
unsigned char status;
NFChipEn();
WrNFCmd(NAND_FLASH_CMD_READ_STATUS);
status = RdNFData();
NFChipDis();
return status;
}
static unsigned char Flash_Busywait()
{
unsigned char status;
unsigned int count = 0;
WrNFCmd(NAND_FLASH_CMD_READ_STATUS); // Command
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -