nand flash程序问题
1 static void s3c2410_nand_select_chip(void){
int i;
s3c2410nand->NFCONF &= ~(1<<11);
for(i=0; i<10; i++);
}
觉得不用i和for(i=0; i<10; i++);就行啊,为什么还要加它
2 #define NAND_SECTOR_SIZE 512
#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)
/* 读函数 */
void nand_read(unsigned char *buf, unsigned long start_addr, int size)
{
int i, j;
if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {
return ; /* 地址或长度不对齐 */
}
其中if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {
return ; /* 地址或长度不对齐 */
}是怎么实现检测地址和长度不对齐的 请指点 1# 条山之滨
据了解 for(i=0; i<10; i++); 是用来阻止优化用的。
只见过一个举例是:
a+=1;
a+=1;
有可能被计算机操作为 a+=2,因为代码编译时会优化;
在中间几个for循环,可以实现 a 一步一步增加。
你那个怎么对齐的计算问题.........回去看看 & 运算符是怎么运算的。
start_address 和 size 是 NAND_BLOCK_MASK 的倍数,我想。 哎地址你还是不大懂啊,nand flash是一页一页操作的,这才是关键
页:
[1]