关于2440test工程中 nand.c 文件中的 void CopyProgramFromNand(void) 函数
在函数 void CopyProgramFromNand(void) 中 对于 k9f1g08 为 2K的 大页
1:for (Sector = StartSector, GoodSector = Sector; Sector < StopSector; Sector ++, GoodSector++)
2:{ // begin of a block
3: if (GoodSector & ( (1 << sector_block_shift) - 1 ) == 0)
4: {
5: // found a good block
6: for (;;)
7: {
8: if (!Nand_IsBadBlock(GoodSector >> sector_block_shift, bLargeBlock))
9: {
10: // Is good Block
11: break;
12: }
13: // try next block
14: GoodSector += (1 << sector_block_shift);
15: }
16: }
17: Nand_ReadSector(GoodSector, RAM + (Sector << byte_sector_shift ), bLargeBlock);
18:}
问题一:第一行中的 Sector = StartSector,这里的扇区指的是什么?
k9f1g08 数据手册上 ,1块是64页,每页是2048 字节,还有 额外的64字节 ,这里的 扇区指点什么意思啊?一页2048 字节中的 512 字节吗?
问题二:第三行中, sector_block_shift 定义为 8 ,2^8 = 256,减一就是 255,0xff,1111 1111 ,这句是判断GoodSector 是256的倍数吗?是256 的倍数,进行坏块检测?
问题三: Nand_ReadSector函数,里面,尽管是对2048的页进行读取,最终调用的函数是__RdPage512(),为什么只是读取 512 字节?
[ 此帖被cheng105在2011-06-06 22:45重新编辑 ]