条山之滨 发表于 2010-9-12 11:41:49

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 ;    /* 地址或长度不对齐 */
   }是怎么实现检测地址和长度不对齐的 请指点

天嵌_support1 发表于 2010-9-15 12:00:11

1# 条山之滨


据了解 for(i=0; i<10; i++);    是用来阻止优化用的。
只见过一个举例是:
a+=1;
a+=1;
有可能被计算机操作为 a+=2,因为代码编译时会优化;
在中间几个for循环,可以实现 a 一步一步增加。

你那个怎么对齐的计算问题.........回去看看 & 运算符是怎么运算的。
start_address 和 size 是 NAND_BLOCK_MASK 的倍数,我想。

xiaoqiang08wang 发表于 2011-1-14 20:21:15

哎地址你还是不大懂啊,nand flash是一页一页操作的,这才是关键
页: [1]
查看完整版本: nand flash程序问题