大家好,关于板子上自带的代码,有几个问题搞不明白,还请大家帮的看看
代码如下
void CopyProgramFromNand(void)
{
const int bLargeBlock = Nand_Init();
const unsigned StartSector = 0;
const unsigned StopSector = 5120;
const unsigned byte_sector_shift = 9;
const unsigned sector_block_shift = bLargeBlock ? 8 : 5; //5
unsigned char *RAM = (unsigned char *)0x30000000;
unsigned Sector, GoodSector;
for (Sector = StartSector, GoodSector = Sector; Sector < StopSector; Sector ++, GoodSector++)
{ // 从第一块开始
if (GoodSector & ( (1 << sector_block_shift) - 1 ) == 0)
{
for (;;)
{
if (!Nand_IsBadBlock(GoodSector >> sector_block_shift, bLargeBlock))
{ //如果不是坏块就跳出循环
break;
}
// try next block 下一个
GoodSector += (1 << sector_block_shift);
}
}
Nand_ReadSector(GoodSector, RAM + (Sector << byte_sector_shift ), bLargeBlock);
}
}
我的问题是,到底从NAND上拷贝了多少到SARAM里?
这个是拷贝到0x30000000地址上的吗?如果是这样的话,下面的代码又怎么理解呢?
RAM + (Sector << byte_sector_shift ).
就这些了,麻烦高手帮我瞅瞅,多谢了。
[ 此帖被朱伟在2010-07-15 16:23重新编辑 ]