嵌入式爱好者

查看: 6581|回复: 14

NAND FLASH升级

[复制链接]

8

主题

38

帖子

67

积分

扫一扫,手机访问本帖
发表于 2011-5-24 17:10:16 | 显示全部楼层 |阅读模式
我的ok6410的开发板 配置为128MDDR 256Mnand flash,型号为K9F2G08UOB,现在手头上有个4G的nand flash ,型号为K9LBG08UOD,把它焊到开发板上。
修改uboot的nand_ids.c,添加上{"NAND 4GiB 3,3V 8-bit",   0xD7, 0, 4096, 0, LP_OPTIONS},编译后,开发板从SD卡启动,传入uboot.bin  到内存运行,显示如下:
U-Boot 1.1.6 (May 23 2011 - 20:39:21) for SMDK6410


****************************************

**    u-boot 1.1.6                    **

**    Updated for TE6410 Board        **

**    Version 1.0 (10-01-15)          **

**    OEM: Forlinx Embedded           **

**    Web: http://www.witech.com.cn   **

****************************************


CPU:     S3C6410 @532MHz

         Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz, Serial = CLKUART (SYNC Mode)

Board:   SMDK6410

DRAM:    128 MB

Flash:   0 kB

NAND:    0 MB

*** Warning - bad CRC or NAND, using default environment


In:      serial

Out:     serial

Err:     serial

Hit any key to stop autoboot:  0

SMDK6410 # nand info


Device 0: NAND 4GiB 3,3V 8-bit, sector size 256 KiB

SMDK6410 # nand device 0

Device 0: NAND 4GiB 3,3V 8-bit... is now current device

SMDK6410 #
为什么NAND显示为0M呢?我应该继续修改哪些地方啊?
回复

使用道具 举报

8

主题

38

帖子

67

积分

 楼主| 发表于 2011-5-24 23:09:12 | 显示全部楼层
先顶一个 急需解决啊

29

主题

9048

帖子

5593

积分

发表于 2011-5-25 08:35:53 | 显示全部楼层
这个错误已经修正。今天上传到网盘提供下载
该会员没有填写今日想说内容.

8

主题

38

帖子

67

积分

 楼主| 发表于 2011-5-25 09:19:36 | 显示全部楼层
在什么网盘上啊,您是指论坛上发帖吗?

0

主题

7131

帖子

0

积分

发表于 2011-5-25 13:08:20 | 显示全部楼层

8

主题

38

帖子

67

积分

 楼主| 发表于 2011-5-27 20:32:52 | 显示全部楼层
现在可以显示nand大小了,由于这个芯片是两个chip,现在先用其中的一个,也就是2048M。但有出现新问题,芯片页大小是4k+218oob,erasesize是512k,我修改了一下cpu->s3c64xx->nd.c,使其使用mlc_oob_128。又修改了一下driver->nand->nand_base,修改其中的nand_get_flash_type函数,将其中的if (!type->pagesize) {
                int extid;
                /* The 3rd id byte holds MLC / multichip data */
                chip->cellinfo = chip->read_byte(mtd);
                /* The 4th id byte is the important one */
                extid = chip->read_byte(mtd);
                /* Calc pagesize */
                mtd->writesize = 1024 << 0x02;
                extid >>= 2;
                /* Calc oobsize */
                mtd->oobsize = 128;
                extid >>= 2;
                /* Calc blocksize. Blocksize is multiples of 64KiB */
                mtd->erasesize = (64 * 1024) << (extid | 0x03);
                extid >>= 2;
                /* Get buswidth information */
                busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
        }
这一段存在问题,修改为自己的nand参数,直接给writesize,oobsize,erasesize赋上自己的值4096,128,512*1024。编译uboot,将uboot下载到内存中运行正常,可以对nand进行各种操作,但是把uboot烧到nand中,从nand启动时,没有任何反应,一直白屏,控制台没有任何uboot启动的信息,led指示灯也不亮,这是什么原因啊?

8

主题

38

帖子

67

积分

 楼主| 发表于 2011-5-28 09:46:00 | 显示全部楼层
终于知道原因了,原来用sd卡烧写uboot是要用mmc.bin的,但是现在我的mmc.bin里没有对4G nand的支持,希望版主能给我们讲解一下mmc.bin的制作方法,或者把支持4G nand的mmc.bin发到我邮箱里:songqiang_1987@163.com。小弟不胜感激!

29

主题

9048

帖子

5593

积分

发表于 2011-5-28 10:40:07 | 显示全部楼层
楼主是在自己开发新的nand驱动么?加油。
该会员没有填写今日想说内容.

8

主题

38

帖子

67

积分

 楼主| 发表于 2011-5-28 15:16:27 | 显示全部楼层
呵呵 主要是我的nand太小,才256M,我想换个大的,呵呵 但是烧写uboot用的mmc.bin不支持我的4G nand啊,用uboot烧的uboot不能启动啊。:(

29

主题

9048

帖子

5593

积分

发表于 2011-5-29 11:26:13 | 显示全部楼层
楼主的nand一页有多少字节?
该会员没有填写今日想说内容.

8

主题

38

帖子

67

积分

 楼主| 发表于 2011-5-29 17:08:06 | 显示全部楼层
问题解决了  我自己制作了一个烧写uboot用的专用uboot 呵呵 现在可以从nand启动了 一切ok

0

主题

7131

帖子

0

积分

发表于 2011-5-30 08:04:24 | 显示全部楼层
楼上你把你制作过程,跟大家分享下吧~

8

主题

38

帖子

67

积分

 楼主| 发表于 2011-5-31 21:36:45 | 显示全部楼层
很简单,把nand_ids.c中的你的nand类型的那一组的pagesize改为2048,erasesize改为256*1024 编译后就可以用了,注意编译后的这个uboot不能烧到nand里去,而是下载到内存中用来烧写你自己的uboot的,相当于mmc.bin,它会自动把你的nand烧写方式改为2k每页,这样系统引导代码就能成功,从而可以从nand启动uboot.

29

主题

9048

帖子

5593

积分

发表于 2011-6-1 08:42:56 | 显示全部楼层
给力的顶一下。
该会员没有填写今日想说内容.

0

主题

0

帖子

0

积分

发表于 2011-6-1 12:30:26 | 显示全部楼层
牛人一个 又是传说中的拖焊....
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-5-19 07:43

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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