天嵌 ARM开发社区

 找回密码
 注册
查看: 2168|回复: 3

nandflash擦写地址,不理解

[复制链接]
甲壳虫1991 发表于 2014-7-30 18:53:52 | 显示全部楼层 |阅读模式
#####    Boot for Nor Flash Main Menu   #####
#####     EmbedSky USB download mode     #####

[1] Download u-boot or STEPLDR.nb1 or other bootloader to Nand Flash
[2] Download Eboot (eboot.nb0) to Nand Flash
[3] Download Linux Kernel (zImage.bin) to Nand Flash
[5] Download CRAMFS image to Nand Flash
[6] Download YAFFS image (root.bin) to Nand Flash
[7] Download Program (uCOS-II or TQ2440_Test) to SDRAM and Run it
[8] Boot the system
[9] Format the Nand Flash
[0] Set the boot parameters
[a] Download User Program (eg: uCOS-II or TQ2440_Test)
Download LOGO Picture (.bin) to Nand  Flash
[l] Set LCD Parameters
[n] Enter TFTP download mode menu
[o] Download u-boot to Nor Flash
[r] Reboot u-boot
[t] Test Linux Image (zImage)
[q] quit from menu
Enter your selection: 1;烧写uboot
USB host is connected. Waiting a download.

Now, Downloading [ADDRESS:30000000h,TOTAL:231066]
RECEIVED FILE SIZE:  231066 (225KB/S, 1S)

NAND erase: device 0 offset 0x0, size 0x40000
Erasing at 0x20000 -- 100% complete.
OK


NAND write: device 0 offset 0x0, size 0x38690


Writing data at 0x38000 -- 100% complete.
231056 bytes written: OK
////////////////////////////////////////////////////////////////////
问题 :
我对红字的理解是,先从0x20000开始,擦除ox40000大小的空间到0x60000,再从0x38000处开始烧写,因为文件大小是0x38690,所以少些这么多单元,
可是 这都到达0x70690了呀,这超出了前面擦除的范围啊,在下刚学请指教。

 楼主| 甲壳虫1991 发表于 2014-7-30 18:54:34 | 显示全部楼层
自己顶一下
回复

使用道具 举报

亚瑟王 发表于 2014-7-31 09:42:24 | 显示全部楼层
看到这个帖子真心有种无力感,不知道怎么去回答。
首先命题就是错误的,很简单的原因,只看结果不看过程。
红色部分的内容特别是erase 。。。。。100%和write。。。。。100%那个地方,人家是从0x0开始到结束(0x40000)即0%到100%的一个过程,你不关注这个过程,非得拿着一个结果来提问。所以说命题是错误的。应该都是从0x0开始的。
第二条:关于擦除结尾为什么不在0x40000的说明:
erasing的0x20000那个数值是有问题的,这点可以查看uboot源码下的drivers/nand/nand_util.c文件的nand_erase_opts函数,由于nand的擦除是按照块进行的,每个块是128K,0x40000是2个块,在代码中有不严谨的地方,就是在擦除结束后,未修改结束的位置。
在以下代码中添加红色部分即可。
                 if (opts->jffs2 && result == 0)
                    printf(" Cleanmarker written at 0x%x.",
                           erase.addr);
            }
        }
    }
        printf("\rErasing at 0x%x -- 100% complete.", erase.addr);

   if (!opts->quiet)
        printf("\n");
第三:希望下次提问题前观察仔细一些。
回复

使用道具 举报

 楼主| 甲壳虫1991 发表于 2014-7-31 15:22:25 | 显示全部楼层
亚瑟王 发表于 2014-7-31 09:42
看到这个帖子真心有种无力感,不知道怎么去回答。
首先命题就是错误的,很简单的原因,只看结果不看过程。 ...

刚又仔细看了下,确实疏忽了,觉得你好厉害,弱弱问下你干多少年了?怎么才能超过你呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-5-2 09:55 , Processed in 2.041245 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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