工具/软件:Linux
您好!
我在具有 Cypress NAND 闪存的定制板上使用 AM3352 (S34ML01G200TF100)。 如何启用 NAND ECC 进行引导(4位)? 抱歉、如果这是一个新问题、但我不熟悉 ECC 功能。
谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Steve、
感谢后续行动。 对于具有4位 ECC NAND 的开发板、这似乎很奇怪、但我们将其编程为8位、并且工作正常。 您是否知道 ECC 功能是否已通过此设置测试? 您指的是什么特定的电路板? 我检查了、AM335x EVM 有一个 NAND 的原理图占位符、但标记为 DNI、没有器件型号。 AM335x 入门套件没有 NAND、BBB 有 eMMC 管理的 NAND。
无论如何、我们似乎无法使用4位 ECC NAND、因为我们的引导 ROM 不支持它。
下面的 wiki 似乎确认了您的说法、即我们的引导 ROM 不支持4位 ECC。
谢谢、
-Brad
Brad、实际上唯一的限制是 ROM 代码在启动期间预期的备用区域格式化(TRM 的"初始化"一章对此进行了概述)、它支持 Steve 提到的 BCH8或16。 在 AM335x GP EVM 上、GP 子卡上有一个 NAND (主板上有一个用于未组装的另一个 NAND 的位置)。 GP 子卡 NAND 至少要求4位 ECC、但是为了满足 ROM 要求、备件区域应该被格式化为 ECC BCH8
此致、
James
您必须使用 ECC 进行引导、引导 ROM 仅了解 BCH8和 BCH16。
在 u-boot 源码中、查看 include/configs/AM335x_evm.h 这就是 NAND 信息的设置位置。 构建 u-boot 时、MLO 和 u-boot 都将使用所选的 ECC 算法。 当您使用 u-boot 刷写 NAND 时、它将使用.h 文件中选择的 ECC 进行刷写。 此 NAND 应适用于 AM335x。
Steve K.
谢谢 Steve。
因此、我一直在详细阅读 TRM 以及其他阅读、我相信我已经掌握了这一点、至少从硬件功能以及我们的 ROM 代码如何处理这些问题。 我同意对于我们的特定器件、我们应该可以使用 BCH 8位 ECC。
我们的器件是 S34ML01G200TF100。 从它的数据表中...
如果我们希望 ROM 代码使用 ECC、我们只需确保 SYSBOOT[9]被拉低
这就产生了一个问题、即 ROM 加载 MLO 后如何在软件中启用 ECC。 我查看了您提到的 am335x_evm.h 文件、感谢您的分享。 我不知道所有设置的含义是什么、但对我来说、它们看起来对于我们的 NAND 器件来说是合理的。
不过、这是一个愚蠢的问题。 在 am335x_evm.h 文件中、所有 NAND 设置看起来都依赖于要设置的预处理器符号 CONFIG_NAND。 我没有在 ti_am335x_common.h 文件中看到它被设置。 我不是很熟悉自定义 u-boot、我通常只需从顶级 SDK makefile 构建它。 那么、我要在哪里定义 CONFIG_NAND? 我应该在 make 命令行上将其设置为-d 定义吗? 我应该在头文件中定义它吗? 只是在寻找这样的东西通常被定义的地方,所以我不做任何愚蠢的事情。
谢谢