首先感谢楼主无私地提供自己的学习经验,解决了我对ECC不少的困惑。
其次通过学习楼主的源码我发现修改nandll_read_n_byte函数可以对启动速度提高不少:
把for语句后面的随机读放到for上面去,代码如下:
static void nandll_read_n_byte( uchar* buf, ulong addr, ulong add, ulong size )
{
int i = 0;
NAND_ENABLE_CE();
NFCMD_REG = NAND_CMD_READ0;
NFADDR_REG = 0;
NFADDR_REG = 0;
NFADDR_REG = (addr) & 0xff;
NFADDR_REG = (addr >> 8 ) & 0xff;
NFADDR_REG = ( addr >> 16 ) & 0xff;
NFCMD_REG = 0x30;
NF_TRANSRnB();
NFCMD_REG = 0x05;
NFADDR_REG = (char)((add)&0xff);
NFADDR_REG = (char)(((add)>>8)&0x3f);
NFCMD_REG = 0xe0;
NF_TRANSRnB();
for( i = 0; i < size; i++ )
{
*buf++ = NFDATA8_REG;
}
NAND_DISABLE_CE();
}