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.

[参考译文] TMS320C5505:到 ISSI mSDRAM 的外部 SDRAM 接口- EMIF 寄存器配置和测试/验证...

Guru**** 2575375 points
Other Parts Discussed in Thread: TMS320C5505, SPRC133

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/626355/tms320c5505-external-sdram-interface-to-issi-msdram---emif-register-configuration-and-testing-validating

器件型号:TMS320C5505
主题中讨论的其他器件: SPRC133

您好!

我正在寻找最佳方法来测试和验证最近在定制 TMS320C5505/15板上添加的外部 SDRAM 的功能。 ISSI (IS42S16400-7)中的 mSDRAM 是 BGA 组件、对于经典调试而言、实际上无法访问引脚。 我正在测试和验证外部 mSDRAM 的正确功能、希望在无法使用示波器的情况下获得一些有关测试/验证 mSDRAM 功能的最快方法的建议。 正如我所知、EMIF 已在 GEL 文件中和测试代码开始时正确配置、但在这里、我没有直接确认、直到我知道它工作正常。 在此之前,还有哪些间接方法来验证100MHz 定制板上正确的 SDRAM 操作? 对此有什么想法/建议?

我的初始处理方法是在编译器段中使用 MEMORY 指令进行定义:

存储器

   SDRAM (RWIX)   :origin = 050000h,length = 0800000h

然后选择以下部分:

部分


   .data         :> SDRAM,fill   = 0x0000
   .sysmem   :> DARAM,fill   = 0xABBA
   .bss          :> SDRAM,fill   = 0xBEEF
   myheap    :>DARAM,fill   = 0x0000

等等

 通过 JTAG 加载一个已编译的 test_code.out 文件,然后检查是否有从0x050000h 地址开始的有效数据... 在任何情况下、我希望在加载.data 和.bss 段中的.out 文件时初始化一些数据、我已指示根据存储器映射等使用 SDRAM

如果可能的话,我想用另一种方法测试功能,但除了查看范围/分析器数据之外,我不能完全考虑其它方法,而这种方法在现阶段不是一个选项...

提前感谢您的任何建议。

Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将您的查询转发给 C55x 软件团队。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Cvetolin Shulev-XID"]我已将您的查询转发给 C55x 软件团队。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev

    [/报价]

    尊敬的 Tsvetolin:

    至於这个问题,我至今没有得到任何意见,也许是因为在木工中失去了。 如果这个论坛不是最好的发布论坛、您可以查看一下它、或许可以让我去一个更合适的论坛吗?

    谢谢、Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mike:

    根据您的布局、PCB 板测试可能仍然是可行的。 例如、可以使用示波器探测串联电阻器和通孔过孔(DSP 的迂回布线可能使用通孔过孔)
    借助这些接入点、您可以检查时钟速度、信号完整性、设置/保持时间、上升/下降时间等
    这样检查控制信号可能会更容易(例如、确保我们在写入期间脉冲为低电平)

    否则、您必须编写一些软件测试。
       
    使用 CCS、您应该避免执行代码或将结果存储在被测存储器中。 假设 DSP 的内部 SARAM 和 DARAM 经过测试并使用它们。 我会将程序加载到执行所有存储器器件初始化的内部存储器中、以便您可以避免依赖于 GEL 文件。 执行 GEL 脚本比执行通过 CCS 加载的程序慢。
       
    一个快速的互联网搜索揭示了一些相当全面的材料、用于基于软件的内存器件测试...

    http://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/software-based-memory-testing.html
       版权所有(c) 2000作者:Michael Barr
       本文根据《使用 C 和 C++对嵌入式系统进行编程》(ISBN 1-56592-354-5)第6章的材料进行了改编。 经 O'Reilly & Associates、Inc.许可、本文档在此打印
       
    另一个关于测试执行速度的问题是由辛辛那提大学 ECE 学院主办...
       http://www.ece.uc.edu/~wjone/Memory.pdf

    主要要点:检查 PCB 故障和安装故障-主要是卡位、短路/开路导线。  首先测试数据、然后是地址、然后是整个系统。 对数据使用步行1模式、对地址测试使用带增量数据的块写入。 按照建议的顺序进行测试、以确保测试覆盖范围良好。 最后使用您自己的测试来测试控制信号(例如、选择错误的芯片选择来检查是否卡在低电平、在写入期间强制我们为高电平并检查写入是否失败)。 如果测试较差、也许您可以使用较慢的数据速率重试、然后恢复到全速。
     
    您可能需要从基于 CSL 的 EMIF 地址测试开始:
    从 SPRC133 - http://www.ti.com/tool/sprc133安装 CSL
    那么 EMIF 地址测试示例将位于... \C55_CSL_3.07\ccs_v6.x_examples\EMIF\CSL_EMIF_SDRAM_AddressTest_example

    另请参阅《C5515/05 EMIF 用户指南》 :http://www.ti.com/lit/pdf/sprugu6
       
    希望这对您有所帮助、
    标记

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mike、

    此外、您可能希望验证您在 C5505或 C5515 EVM 上的测试、这种情况下信号可能会通过串联电阻器。

    http://support.spectrumdigital.com/boards/evm5515/revb/

    制作这些 EVM 的 Spectrum Digital 还提供了用于其 SDRAM 存储器测试(以及其余电路板组件)的源代码、网址 为:http://support.spectrumdigital.com/boards/evm5515/revb/files/evm5515_EVM_BSL_revb.zip


    希望这对您有所帮助、
    标记

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mark、您好!

    感谢您的回复。 感谢您的宝贵建议。 我已经测试过定制板的其他部件、但已经回到外部 SDRAM、并一直在研究初始和最基本的初始测试。

    实质上、如果用户认为 EMIF 设置正确、则所有总线 进入/离开 DSP/SDRAM 的命令行和时钟工作正常、因此基本上在 SDRAM 部分声明全局变量并更改其值应该是为通过/不通过类型测试进行初始测试的方法。 至于上升时间、延迟和时钟稳定性等、以便稍后进行可靠的测试。

    因此、我所要做的基本上就是检查是否有移动的东西、并在这个新的 SDRAM 存储空间中观察到这些东西。

    因此,我已将 code composer 项目的.cmd 文件中的数据段声明为:

    存储器


       ISSI_SDRAM (RWIX)   :origin = 050000h,length = 0800000h

    SECTIINONS

       .SDRAM         :>ISSI_SDRAM,fill = 0xBEEF

    然后使用 pragma 指令执行全局声明:

    #pragma DATA_SECTION   (SDRAM_BYTE、"SDRAM");
    uint32 SDRAM_BYTE=0;

    这应该有效地告诉编译器和链接器 SDRAM_BYTE 是在 SDRAM 数据段中声明的全局变量、它具有到外部地址源= 050000h 的映射。

    现在,如果有从0x050000开始的内容,并且内存工作正常,我应该能够对其进行写入和读取...

    我这么做了、将 SDRAM_BYTE 从= 0修改为0xFFFF、修改为0xA0A0、并使用调试器/仿真器单步执行、同时在 CCS 上查看该全局变量。

    监视窗口显示当我向它写入值时 SDRAM_BYTE 被正确修改... 乍一看、除了我错误地假设编译器/链接器/调试器与外部存储器配合工作的方式有太多问题外、似乎我获得了积极的初始结果。 也就是说,我可以写入该内存部分中分配的变量,并且可以从中读取...

    您是否会说这是一种快速的初始测试方法、应按预期/工作

    如果这不能按预期工作,SDRAM_BYTE 变量中的值将保持和读取垃圾,而不管写入什么?!?

    (基本上、由于我对 EMIF 总线的访问有限、由于10层电路板通过埋孔与 BGA 存储器进行布线、我希望所有器件都能按预期工作、 除非出现完全错误,否则如果可能,我会限制在内存总线中添加逻辑探测器,因为这样做会变得非常困难和耗时...)

    您对这种初始方法有何看法?

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此,一个简短的更新,我的器件在#pragma DATA_SECTION (SDRAM_byte,"SDRAM"行上出现错误;实际上,我必须将该段包含在中。 在 SDRAM 之前作为".SDRAM"进行了更改... 很遗憾、我在加载编译和链接的.out 文件时遇到"数据验证错误"。 (笑声) 至少这告诉我 EMIF 配置或硬件配置的某个位置存在问题。
    感谢您的建议、我认为我可以通过更多可用于测试 SDRAM 的选项进一步了解这一点。

    此致、
    毫米
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Mark McKeown "]

    尊敬的 Mike:
    (笑声)

    (笑声)
       
    使用 CCS、您应该避免执行代码或将结果存储在被测存储器中。 假设 DSP 的内部 SARAM 和 DARAM 经过测试并使用它们。 我会将程序加载到执行所有存储器器件初始化的内部存储器中、以便您可以避免依赖于 GEL 文件。 执行 GEL 脚本比执行通过 CCS 加载的程序慢。
    (笑声)

    (笑声)
       
    希望这对您有所帮助、
    标记

    [/报价]

    Mark、您好!

    因此、我最终在 SARAM/DARAM 中执行了 EMIF 配置代码、并按照您的帖子中的建议执行了一些 C 存储器测试例程。

    现在、我得到了一些积极的结果、数据总线测试从0x50000一直到0x400000。 不能再好了…… 无论如何、我都会对其进行研究。

    但是、我的问题与您建议在 SARAM/DARAM 中加载代码并在该存储器中执行 SDRAM 测试例程有关。

    这对于初始调试很有意义、正如您所说的、最好避免在 GEL 脚本中运行 EMIF 配置。

    但是、最终当所有程序都运行时、如果某些应用程序代码和/或某些缓冲区需要存储在 SDRAM 段中、则需要在调试器执行之前加载已编译和链接的.out 程序。

    如何建议将 EMIF 配置为使用除 GEL 脚本以外的外部 SDRAM、以便将.out 正确加载到 SDRAM 段中(否则 CCS 将返回内存访问错误)?

    此致、

    毫米