SDK 示例中 DCD 中的 RT1060 SDRAMCR2 配置似乎不正确 你好! 我看了前段时间下载的一些 SDK 示例,发现 SEMC_SDRAMCR2 的值设置为 0x00010920,它解码为非常小的 Active to Active 同步动态随机存取存储器(SDRAM) 延迟,这超出了板中使用的同步动态随机存取存储器(SDRAM) 数据表的规格: /* #1.106, command: write_value, address: SEMC_SDRAMCR2, value: 0x10920, size: 4 */
0x40, 0x2F, 0x00, 0x48, 0x00, 0x01, 0x09, 0x20, 这是 “可以接受” 的超频还是只是很长一段时间以来没人注意到的错误?(我把这个复制过来与其他供应商使用类似 同步动态随机存取存储器(SDRAM) 芯片的板一起使用,但顺便说一句尽管 ACT2ACT 值太小但它还是通过了测试所以我对这个配置值真的很好奇) 根据我的计算,例如 60 纳秒的延迟(根据数据表)对于 133Mhz 芯片操作,ACT2ACT 位应设置为 0x07(每个周期 7.5 ns) 我真的很想知道这是 SDK 示例中的错误还是一些错误 RT1062 参考手册中的勘误表谢谢了! Re: RT1060 SDRAMCR2 configuration in DCD within SDK examples, seems to not be right 嗨,@Pencioner、
能否请您确认一下我是否正确理解了您的主要问题?从你之前的评论中,我理解了人们对主动到活动 同步动态随机存取存储器(SDRAM) 延迟非常小的担忧。不过,您也发现,在不同的 SDK 示例中,这种延迟是不同的。您认为这些差异具体体现在哪里?
我无法保证设计团队是如何设计这些示例的,但正如你提到的,延迟递增是最安全的,但不是最快的。为了在速度和可靠性之间取得折中,他们很可能考虑了称重过程。
BR, Edwin. Re: RT1060 SDRAMCR2 configuration in DCD within SDK examples, seems to not be right " 很抱歉,"(在自己的留言中的第二个回答),但在一些示例中,DCD数据将ACT2ACT设置为2个时钟(如原帖中所示),我还发现,一些使用SEMC_ConfigureSDRAM()调用的示例会将semc_sdram_config_t结构的值填充为60ns......由于示例中有两种不同的解释,因此非常希望得到答案,因为SDK中的不同示例相互矛盾。当然,留下更高的值是最安全的,但这会降低存储器的性能,没有人愿意这样做。 F.e.: nxp/SDK_2_16_100_MIMXRT1062xxxxB/boards/evkbmimxrt1060/driver_examples/semc/sdram/semc_sdram.c: sdramconfig.tAct2Act_Ns = 60;
nxp/SDK_2_16_100_MIMXRT1062xxxxB/devices/MIMXRT1062/drivers/fsl_semc.c: timing |= SEMC_SDRAMCR2_ACT2ACT(SEMC_ConvertTiming(config->tAct2Act_Ns, clkSrc_Hz)) | SEMC_SDRAMCR2_ITO(idle);
nxp/SDK_2_16_100_MIMXRT1062xxxxB/devices/MIMXRT1062/drivers/fsl_semc.h: uint8_t tAct2Act_Ns; /*!< Active to active wait time in unit of nanosecond. */ Re: RT1060 SDRAMCR2 configuration in DCD within SDK examples, seems to not be right 好吧,我明白这可能是个混淆,比如,我把 Ref/Active 转换为 Ref/Active,而不是 Active(a) 转换为 Active(b)(见数据表截图),所以这可能是对的。仍希望得到确认 🙂 Re: RT1060 SDRAMCR2 configuration in DCD within SDK examples, seems to not be right 嗨,埃德温、 我要总结一下,因为是的,加上我自己对文章的评论,文章变得有点乱。 因此,RT1062 EVK 开发板的 SDK 示例在两个地方指定了同步动态随机存取存储器(SDRAM) 时序: 1) DCD,如果你定义了一些变量,编译脚本将在镜像中包含 DCD。而且,顺便说一句,我在同步动态随机存取存储器(SDRAM) 初始化时使用了那些稍作修改的 DCD 值,包括指定为 2 的 ACT2ACT(CR2 值 0x01090A),它通过了一系列静态和 LFSR 模式的内存测试,所以我相信这个值是正确的(在 W9825G6JB 数据表中,有一个叫做 Active (a) 到活动 (b) 的时序是 2 tcK,而不是 Ref/Active 到 Ref/Active 到 Ref/Active 时间为 60ns) 2) 在 semc_sdram.c 中 在该文件中,它填充了semc_sdram_config_t结构,并调用了一个SDK函数,但其中的tAct2Act_Ns成员被设置为60,因此它计算的ACT2ACT是60ns的5倍左右。现在我相信这是一个错误,源于华邦数据 表中稍微令人困惑的描述虽然安全值当然不错,但举例来说,60ns 相当于 10 个 TcK 时钟是可以的,但这实际上会降低性能,所以我宁愿为芯片 设置正确的值,因为整个 32 兆字节 同步动态随机存取存储器(SDRAM) 的内存使用 0x01090A 的 SDRAMCR2 值通过 64 次复杂模式测试,然后 60ns 因为在 semc_sdram.c 中是错误的,像 DCD 一样设置 2 个时钟是正确的。但我希望您能看一看,也许能修改 SDK 示例(或者,如果您能确认 DCD 值是错误的,那就修改示例中的 dcd.c 文件)。 Re: RT1060 SDRAMCR2 configuration in DCD within SDK examples, seems to not be right 嗨,@Pencioner、
明白了,这是个很小但很重要的细节!
如果您没有其他问题或建议,我请您将此案标记为已解决。在不久的将来发布实现此建议的SDK版本的可能性很小,因为每个版本都经过一系列需要时间的验证和测试。
BR, Edwin. Re: RT1060 SDRAMCR2 configuration in DCD within SDK examples, seems to not be right 嗨,@Pencioner、
谢谢你的澄清!
我理解你的担忧。我会把它们传递给 SDK,因为在 " Act ive (a) 到 Active (b),即 2 tcK " 和 " Ref/Active 到 Ref/Active 的时间(即 60ns ")之间可能存在误解,这是有道理的。
尽管如此,semc 示例 的代码在设计时也很可能考虑到了评估,而不是性能。特别是因为这些值的示例方式,开发人员只需在 BOARD_InitSEMC()中修改" sdramconfig.tAct2Act_Ns" 的值,就能很容易地根据自己的需要进行调整。
无论如何,感谢您的报告!
BR, Edwin. Re: RT1060 SDRAMCR2 configuration in DCD within SDK examples, seems to not be right 谢谢!还有一件小事要补充——参考手册特别指出,ACT2ACT 位 " 有助于满足 tRD 时序要求 ",当然 trRD 是 " Active (a) 到 Active (b) " 将你的答案标记为可接受的解决方案可以吗?还是应该等待 SDK 团队?
View full article