天嵌 ARM开发社区

 找回密码
 注册
查看: 2316|回复: 2

nand flash程序问题

[复制链接]
条山之滨 发表于 2010-9-12 11:41:49 | 显示全部楼层 |阅读模式
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是一页一页操作的,这才是关键
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-15 23:38 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表