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.
尊敬的团队:
美好的一天!
我们的客户 正在尝试在 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
是的、这是可能的。 我们的许多示例项目使用 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 测试提供示例代码、即不依赖于的代码您只需从安装中抓取 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):可以针对其他 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"路径猜测的内容)?
惠特尼