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.
您好 TI
DDR3的 ECC 存在问题。 我们的设计基于 C5567平台的 EVM。
以下是我们的初始化代码:通过设置 InitFlag.ecc = 1来启用 ECC:
__________
platform_init_flags InitFlag;
platform_init_config initconfig;
*初始化主平台库*/
memset (&initconfig、0、sizeof (platform_init_config));
InitFlag.pll = 1;
InitFlag.DDR = 1;
InitFlag.phy = 1;
InitFlag.ecc = 1;
platform_status = platform_init (&InitFlag、&initconfig);
__________________
当启用 ECC 时、只有在某些电路板上、当我们将代码上传到 DDR3并启动时、才会出现随机错误。
我们将使用 MCSDK_2_01_02_06、TI 库中没有示例代码可用于显示使用 InitFlag.ECC = 1的配置。
当我们想增强 ECC 特性时、我们还应该做些什么吗?
您能提供帮助吗?
Br
TAM 转接
Tam tran,
我认为"initFlag.ecc"代码属于平台测试-处理器 SDK 6.3的示例代码。
MCSDK_2_01_02_06中不存在此平台测试代码。
您要么必须使用最新的处理器 SDK 6.3 (要么)将此代码集成到 MCSDK_2_01_02_06中。
此致
尚卡里
Shakari、您好!
我的坏情况、是一个拼写错误。
让我再问一个问题:我们正在使用 pdk_C6657_1_1_2_6\packages/ti\platform\evmc6657l\platform_lib
其中一些示例、例如
-文件"bench_srio.c",其中 ECC 被禁用
FormFlags.pll = 0;/*用于计时的 PLL */
pFormFlags.DDR = 0;/*外部存储器*/
pFormFlags.tcsl = 1;/*时间戳计数器*/
pFormFlags.phy = 0;/*以太网*/
pFormFlags.ecc = 0;/*内存 ECC */<- ECC 被禁用
pFormConfig.pllm = 0;/*使用库默认时钟除数*/
pFormStatus = platform_init (&pFormFlags、&pFormConfig);
-"platform_test.c"
memset (&args、0x01、sizeof (test_config));
memset (&init_FLAGS、0x01、sizeof (platform_init_flags));<--此处启用 ECC
...
if (platform_init (&init_FLAGS、&init_config)!= Platform_eok){
printf ("平台初始化失败、errno = 0x%x \n"、platform_errno);
您如何在测试代码中测试 ECC 是否正常工作?
在我们的软件中、如果 ECC 已启用(仅设置该 ECC 位并调用 platform_init)、则在我们尝试启动时、某些时候将代码加载到 DDR3失败。
禁用 ECC、我们的软件将启动稳定。
那么、我的问题是:如果我们需要启用 ECC (在调用 paltform_init 之前设置唯一的位)、还是我们需要在 SW 中配置其他部分、那么我们应该执行的唯一操作
Br
TAM 转接
Tam tran,
平台测试只是供参考的一个示例...
要启用和禁用 DDR3-ECC、我们必须依靠数据表和有关 DDR3和 ECC 的部分。
此致
尚卡里
Tam tran,
平台测试只是供参考的一个示例...
要启用和禁用 DDR3-ECC、我们必须依靠数据表和有关 DDR3和 ECC 的部分。
===
关于 KeyStone-I 的 DDR3指南、 https://www.ti.com/lit/ug/sprugv8e/sprugv8e.pdf
第39页
通过设置 ECC_EN=0禁用 ECC。 默认情况下、ECC_EN=0。
如需更多信息、请访问以下部分: "2.17 ECC"(DDR3用户指南中)。
此致
尚卡里
您好,Shankari
抱歉、我需要重新打开问题。
来自 sprugv8e 第2.17节:
问题1:
>>>
ECC 在写入过程中存储在 SDRAM 内部。 启用 ECC 后、
执行任何功能性读取或写入、所有 DDR3存储器空间被配置为 ECC
应首先写入64位对齐和64位倍数的已知数据。 这是
确保在功能使用之前将正确的 ECC 值存储在 ECC SDRAM 中。
<<<<<<<<<<<<<<<<<<
"首先写入已知数据":0是否可以作为已知数据、还是应该是其他一些模式?
问题2:
>>>
字节计数不是64位份额的倍数或非64位对齐地址的写访问
在 ECC 保护的地址范围内执行、将导致写入 ECC 错误中断。 在本
情况下、DDR3存储器控制器会向 SDRAM 写入数据。 但是、写入 SDRAM 的 ECC 值
将损坏
<<<<<<<<<<<<<<<<<<<<<<<
是否有可以在链接器中设置的64位对齐选项? 如果我们必须通过所有代码为位于 DDR3中的每个变量手动将 DATA_ALIGN 设置为64位、则这是一个噩梦。
问题3:
>>>>>
如果存在一位错误、DDR3存储器控制器会校正数据并在读取时将其发送
获取位置反馈。 对于2位错误、DDR3存储器控制器生成读取 ECC 错误中断。 请注意、在中
在这两种情况下、SDRAM 中的数据仍然损坏。 这是系统软件的责任
纠正 SDRAM 中的数据
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
在发生1位错误和2位错误的情况下、"系统软件"的责任是什么意思:SDRAM 仍然损坏、应该对 SW 的哪个部分进行分录以更正 SDRAM 中的数据?
问题4:
>>>
如果 ECC 被禁用、ECC 字节通道被保持在复位状态以省电。 因此、如果正向压降
必须在启用 ECC 后触发、以确保 ECC 字节通道为水平
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
该语句表示必须在启用 ECC 后进行矫正设置。 是否有任何特定的 ECC 信道被提及?
Br
谭
TAM:
请打开一个新查询。
此致
尚卡里