当前位置: 技术问答>linux和unix
开发板内核移植时出现很多bad block
来源: 互联网 发布时间:2016-06-25
本文导语: 我用的是ARM9系列开发板,整个过程是这样的: 1、在启动开发板前按住空格键进入到u-boot界面,超级终端的界面显示如下: ####### Boot u-boot to Nand Flash ##### [1] Download u-boot to Nand Flash [2] Download Eboot [3] Dow...
我用的是ARM9系列开发板,整个过程是这样的:
1、在启动开发板前按住空格键进入到u-boot界面,超级终端的界面显示如下:
####### Boot u-boot to Nand Flash #####
[1] Download u-boot to Nand Flash
[2] Download Eboot
[3] Download Linux Kernel
[4] Download WinCE NK.bin
[5] Download CRAMFS image
[6] Download YAFFS image
[7] Download to SDRAM & Run
[8] Boot the system
[9]Format the Nand Flash
[0]Set the boot parameters
我的操作室先选3,再选6,一切都正常,之后我没有选8启动系统,而是把开发板的开关关了,然后再启动。这时超级终端的界面还是u-boot的界面。我以为没烧成功,于是又换了另外一个版本的内核和文件系统烧写,此时问题出现了:烧内核没问题,但是在烧文件系统的时候就不断地出现bad block、Skipping bad block之类的字样。
2、此时我采取的操作是9,即格式化Nand Flash ,然后再把U-boot烧了一遍,但是还是出现bad block的问题。
试了几天都没试出来,网上都是只介绍bad block ,并没有说如何解决这类问题。望高人指点一下,谢谢。
1、在启动开发板前按住空格键进入到u-boot界面,超级终端的界面显示如下:
####### Boot u-boot to Nand Flash #####
[1] Download u-boot to Nand Flash
[2] Download Eboot
[3] Download Linux Kernel
[4] Download WinCE NK.bin
[5] Download CRAMFS image
[6] Download YAFFS image
[7] Download to SDRAM & Run
[8] Boot the system
[9]Format the Nand Flash
[0]Set the boot parameters
我的操作室先选3,再选6,一切都正常,之后我没有选8启动系统,而是把开发板的开关关了,然后再启动。这时超级终端的界面还是u-boot的界面。我以为没烧成功,于是又换了另外一个版本的内核和文件系统烧写,此时问题出现了:烧内核没问题,但是在烧文件系统的时候就不断地出现bad block、Skipping bad block之类的字样。
2、此时我采取的操作是9,即格式化Nand Flash ,然后再把U-boot烧了一遍,但是还是出现bad block的问题。
试了几天都没试出来,网上都是只介绍bad block ,并没有说如何解决这类问题。望高人指点一下,谢谢。
|
64Mb的 flash 通常是 512byte/page.
之所以会出现一系列的怀块,应该是 [6] Download YAFFS image 的时候,读nand flash的 oob 信息不正常所导致的。
这个不正常是指:
1. 你的 flash 是 2k/page 但是uboot 按照 512k/page 的方式去操作(或者相反),自然会出问题。
2. 坏块标记是存放在 oob 信息中的,而 2k/page 和 512byte/page 的flash 存储 坏块信息的时候,存放的地址(或者说偏移) 是不一样的。
512 byte/page 的nand flash 坏块信息存储在 每个 block 的第一个 page 的 oob 中 偏移为 5 的地址中。
2k/page 的nand flash 坏块信息存储在 每个 block 的第一个 page 的 oob 中 偏移为 0 的地址中。
你的问题很有可能就在这里。 可能需要自己修改 uboot 中 flash 驱动。
之所以会出现一系列的怀块,应该是 [6] Download YAFFS image 的时候,读nand flash的 oob 信息不正常所导致的。
这个不正常是指:
1. 你的 flash 是 2k/page 但是uboot 按照 512k/page 的方式去操作(或者相反),自然会出问题。
2. 坏块标记是存放在 oob 信息中的,而 2k/page 和 512byte/page 的flash 存储 坏块信息的时候,存放的地址(或者说偏移) 是不一样的。
512 byte/page 的nand flash 坏块信息存储在 每个 block 的第一个 page 的 oob 中 偏移为 5 的地址中。
2k/page 的nand flash 坏块信息存储在 每个 block 的第一个 page 的 oob 中 偏移为 0 的地址中。
你的问题很有可能就在这里。 可能需要自己修改 uboot 中 flash 驱动。