我正在使用 UBUNTU 10.04 和 GCC 作为编译器在基于 ARM9 的板上开发应用程序。
之前我已经连接过 STMicroElectronics 的 NAND 闪存 ( NAND512W3A25NB )。它的大小为 64MByte。它的页面大小为 512Kbit。
有了这个 NAND,我的应用程序运行得非常好。
由于内存要求的一些升级,我需要切换到更大的 Micron NAND 闪存 (MT29F2G08ABAEA)。它的大小为 256MByte,页大小为 2048Kbit。
更改后,我的主板无法启动。
我获得了制造商 ID 和芯片 ID。但 MTD 分区没有生成。
经过一番搜索,我发现 PAGE_SIZE 有一些问题。 我不知道如何解决这个问题,因为我浏览了 linux/include/mtd/nand.h 它的 MAX_ALLWABLE_PAGE_SIZE 为 8216 并且也在 m 要求之内,所以我无法确切地知道我在哪里出错了??
最佳答案
我在 IMX25 设计上使用相同的芯片,Micron MT29F2G08ABAEA。链式店mtd->ubi->ubifs对这个芯片组非常满意。我们的差异是NAND flash controllers及其配置。
Micron 芯片有子页面,您的 Controller 可能不支持。搜索davinci_nand.c ,我没有看到任何子页面处理。
对于MXC Nand Controller ,我们使用hw_ecc
、flash_bbt
和宽度
为1。 Micron芯片只有8位,尽管有一些16位版本,例如Micron MT29F2G16ABAEA。确保几何形状正确。我认为Linux MTD 支持多个芯片并行。
通过数据表可以快速验证该部件是否更快。我怀疑 ST 部分比 Micron 部分慢,并且时序不是您的问题。
对Micron MT29F2G08ABAEA的时序分析表明IMX25 NAND闪存 Controller 实际上是瓶颈。 微米闪存看起来相当快。这要么是 NAND Controller 中的错误,或更可能是配置问题。
一些其他有帮助的信息(对您或帮助您的人),
- 一些
dmesg
或控制台输出。 - 数据表链接。
- 使用的确切NAND Controller 。
- 使用的平台数据或DT信息。
grep '^[^#].*MTD' .config
或 MTD 相关配置。
我认为没有人可以完全正确地回答您的问题,但我很高兴感到惊讶。
关于memory - NAND 闪存接口(interface) ARM9 MTD 分区未生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16318357/