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.

[参考译文] TMS320F2806:TMS320F2806 RAM 测试

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1000631/tms320f2806-tms320f2806-ram-test

器件型号:TMS320F2806

尊敬的团队:

美好的一天!

我们的客户 正在尝试在 F2802和 F2806上执行一个无损 RAM 测试
控制器。 这是在加电时以及在 C 运行时间被初始化和调用之前运行的测试。

它们 需要测试 M0、M1和 L0以及 L1 (对于 F2806)存储器。 我们
提出以下问题:

1.是否可以在调用 C 运行时之前插入和调用加电 RAM 测试? 如果是,我们需要如何以及在何处插入
并调用 RAM 测试代码? 我们理解这必须在汇编代码中完成。 我们尝试使用中提供的 F2802x 示例应用
C2000MCU_IEC60730库、但当我们尝试构建此示例应用时、我们遇到了许多无法解决的链接错误。
2.除了使用 C2000MCU_IEC60730之外、还有其他方法可以实施 RAM 测试吗? 您是否能够为自包含 RAM 测试提供示例代码、即不依赖于的代码
C2000MCU_IEC60730库?
3.如果除了使用 C2000MCU_IEC60730库之外没有其他方法、此库当前仅提供要测试的以下 RAM 类型(使用函数 STL_March _test_testSafeRam):
a. RAM_TYPE_STACK
b. RAM_TYPE_PIE_Vector
c. RAM_TYPE_PSA_CRC
d. RAM_TYPE_BOOT_RSVD
e. RAM_TYPE_PC_TEST_1.
由于这似乎并未完全涵盖 M1、L0和 L1存储器、 因此他们不确定如何使用此函数来满足我们的需求。
4.对于函数 STL_March test_testRam、我们可以指定要测试的 RAM 的起始地址和结束地址(这意味着我们可以测试 M0、M1、L0和 L1)、但是否可以在 C 运行时被初始化和调用之前使用此函数? 如果是、如何操作?

BR、

Leon.Liu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="393273" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1000631/tms320f2806-tms320f2806-ram-test ]1. 是否可以在调用 C 运行时之前插入和调用加电 RAM 测试? 如果是,我们需要如何以及在何处插入
    并调用 RAM 测试代码? 我们理解这必须在汇编代码中完成。 我们尝试使用中提供的 F2802x 示例应用
    C2000MCU_IEC60730库、但当我们尝试构建此示例应用程序时、我们遇到了许多无法解决的链接错误。

    是的、这是可能的。 我们的许多示例项目使用 F2802x_CodeStartBranch.asm 文件在应用程序入口点放置代码以跳转到_c_int00。 您基本上只需要编写一个自定义"code_start"函数、在调用_c_int00之前执行所需的测试。 尽管它在 RAM 初始化之前运行、但为什么它需要是非破坏性的?

    如果您能描述这些错误、我可以尝试帮助解决这些错误。 是否按照 readme.txt 中所述安装了软件包?

    [引用 userid="393273" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1000631/tms320f2806-tms320f2806-ram-test ]2. 除了使用 C2000MCU_IEC60730之外、是否还有任何方法可以实现 RAM 测试? 您是否能够为自包含 RAM 测试提供示例代码、即不依赖于的代码
    C2000MCU_IEC60730库?[/quot]

    您只需从安装中抓取 STL_March test.asm 文件及其相关的头文件、然后直接在工程中使用它、而不是使用整个库。

    [引用 userid="393273" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1000631/tms320f2806-tms320f2806-ram-test ]3. 如果除了使用 C2000MCU_IEC60730库之外没有其他方法、此库目前仅提供以下待测试的 RAM 类型(使用函数 STL_March _test_testSafeRam):
    a. RAM_TYPE_STACK
    b. RAM_TYPE_PIE_Vector
    c. RAM_TYPE_PSA_CRC
    d. RAM_TYPE_BOOT_RSVD
    e. RAM_TYPE_PC_TEST_1.
    由于这似乎并未完全涵盖 M1、L0和 L1存储器、 因此他们不确定如何使用此函数来满足我们的需求。

    可以针对其他 RAM 类型修改该函数、或删除 RAM 类型参数并将其替换为 pStartAddress 和 pEndAddress 参数、例如 STL_March 测试_testRam 函数用于使其更通用。

    [引用 userid="393273" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1000631/tms320f2806-tms320f2806-ram-test ]4. 对于函数 STL_March test_testRam、我们可以指定要测试的 RAM 的起始地址和结束地址(这意味着我们可以测试 M0、M1、L0和 L1)、但是否可以在 C 运行时被初始化和调用之前使用此函数? 如果是、如何?[/报价]

    我对问题1的回答是否已经足够地回答了这个问题?

    惠特尼

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

    尊敬的 惠特尼:

    感谢你的帮助。

    问题2:

    我们在项目中包含了上述 asm 文件、并包含以下头文件-STL_TYPE.h、STL_USER_CONFIG.h、STL_SYSTEM_CONFIG.h、
    STL_DEVICE.h 我们已经设置了 BUIK_LIB_F2802x 1和 BUIK_LIB_F2806X 0。 我们还修改了 STL_device.h 以包含"DSP280x_Device.h"、而不是"DSP2802x_Device.h"、因为我们没有此文件可用。 当我们尝试构建时、我们遇到错误、并且我已将错误日志与此电子邮件相关联。

    BR、

    Leon.Liu

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

    有关 typedef 的警告可能与 STL_type.h 有关 您可以尝试使用#include stdint.h 而不是 STL_type.h、或者至少注释掉 STL_type.h 中导致警告的行。

    您是否有任何迹象表明这些"不允许的说明"所指的文件是什么? 该代码看起来与 STL_March 测试.asm 文件中的任何代码都不一样。 它是否看起来位于编译器生成的汇编文件中(这是我从"Temp"路径猜测的内容)?

    惠特尼