2

我正在使用 UBUNTU 10.04 和 GCC 作为编译器在基于 ARM9 的板上开发应用程序。

以前我已经连接了 STMicroelectronics ( NAND512W3A25NB ) 的 NAND 闪存。它是 64MByte。它的页面大小为 512Kbit。

有了这个 NAND,我的应用程序工作得很好。

由于内存要求的一些升级,我需要切换到来自美光 (MT29F2G08ABAEA) 的更大的 NAND 闪存。它的大小为 256MByte,页面大小为 2048Kbit。

随着这些变化,我的电路板无法启动。

我得到了制造商 ID 和芯片 ID。但是没有生成 MTD 分区。

经过一番搜索,我发现 PAGE_SIZE 存在一些问题。我不知道如何解决这个问题,因为我通过了 linux/include/mtd/nand.h 它有一个 MAX_ALLWABLE_PAGE_SIZE 是 8216,它也在 m 要求之内,所以我不能完全明白我在哪里出错了??

4

1 回答 1

3

我在 IMX25 设计上使用相同的芯片Micron MT29F2G08ABAEA。链mtd->ubi->ubifs对这个芯片组非常满意。我们的区别在于NAND 闪存控制器及其配置。

芯片有子页面,您的控制器可能不支持。通过davinci_nand.c搜索,我没有看到任何子页面处理。

对于MXC Nand控制器,我们使用hw_ecc,flash_bbt和 a widthof one。美芯片只有8 位,虽然也有一些16 位版本,例如美光 MT29F2G16ABAEA。确保几何形状正确。我认为 Linux MTD 支持多个并行芯片。

使用数据表可以快速验证该部分是否更快。我怀疑ST部件比Micron部件慢,时间不是你的问题。

美光 MT29F2G08ABAEA的时序分析表明,IMX25 NAND 闪存控制器实际上是瓶颈。美闪存似乎相当快。它要么是NAND 控制器中的错误,要么更可能是配置问题。

其他一些有用的信息(对您或帮助您的人),

  • 一些dmesg控制台输出。
  • 数据表的链接。
  • 使用的确切NAND 控制器
  • 使用的平台数据DT信息。
  • grep '^[^#].*MTD' .configMTD相关配置。

我认为没有人可以直接回答您的问题,但我很高兴感到惊讶。

于 2013-05-01T15:58:58.507 回答