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.

[参考译文] TMS320F28335:从 eZdsp 上的闪存运行 F28335时出现问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/845915/tms320f28335-trouble-running-f28335-from-flash-on-ezdsp

器件型号:TMS320F28335
主题中讨论的其他器件:C2000WARE

您好!  

我正在使用 eZdsp F28335、并且在 RAM 中有一个工作正常的应用、我正尝试从闪存运行。 我相信我已经接近实现这一目标了、但是当我对 DSP 进行下电上电时、代码似乎没有运行。 启动时、我有一些 CAN 消息从 DSP 发送到笔记本电脑、并且在我重启加载闪存的项目后、这些消息不会发送。  

我已经完成了三件事情来尝试将项目从 RAM 转换为闪存。

1.将 SW1引导开关更改为0000 =跳转至闪存

2.在主函数中添加了以下命令:

memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(uint32)&RamfuncsLoadSize);
InitFlash();

3.已使用闪存示例中使用的常用 F28335.cmd 文件。

所有闪存扇区都被擦除/报告、代码在调试后正常运行。 但是、当我对器件执行下电上电时、我看不到从 DSP 发送到计算机的 CAN 消息、并且程序似乎没有运行。 我是否遗漏了什么?

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

    有两点需要考虑。  这种情况下最常见的是一个变量、您的代码需要将其初始化为0、但不会初始化为0。  调试器将在 RAM 中为您执行此操作、但当您从闪存独立运行时、未由代码显式初始化的变量可能具有任何值、因为 RAM 在复位时(在此器件上)未初始化。  首先检查未初始化的变量以及代码如何使用它们。

    另一件事是看门狗计时器超时。 本应用报告的第7节对此进行了详细介绍:

    http://www.ti.com/lit/an/spra958l/spra958l.pdf

    您能看一下这两件事并告诉我们吗?

    此致、

    Richard

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

    尊敬的 Jeff:

    在 Richard 的答复中、还请检查您的项目中是否有文件"D" 2833x_CodeStartBranch.asm'。 这是您的应用正确跳转到闪存所必需的、并在应用报告 Richard Linked 中提到。

    位于 c2000ware 中的文件:C:\ti\c2000\C2000Ware_2_00_00_03\device_support\F2833x\con\source

    有关此汇编例程的功能的更多信息、请参阅以下内容:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/396203

    最棒的

    Kevin

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

    Kevin、Richard、您好!

    感谢你的帮助。 我想说、我可以根据以下实验排除看门狗超时的问题、并忽略 codestart asm 文件(我确实包含了这个文件)。 我在主程序中添加了以大约1Hz 的频率对 LED 进行切换、当我对 DSP 进行下电上电时、我看到指示灯仍然闪烁。 因此、我认为闪存配置正确。  

    但问题可能是我有未初始化的变量。 我现在将对此进行研究。 只需注意、我知道主代码中的1秒延迟(我有一个无限循环使 LED 闪烁;中断处理 CAN 消息)可能会影响 CAN、因此我将在查找未初始化值时将其取出。 请告诉我这是否是正确的方法。

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

    我认为,这就是我无论如何要做的事情。  在执行程序时请记住、从闪存运行的代码将比从 RAM 运行的代码慢。  如果您有任何与时序密切相关的内容、例如软件延迟等、则应在运行前将其加载到 RAM 中。  前面提到的应用报告的第4节讨论了该主题。

    此致、

    Richard

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

    尊敬的 Jeff:

    您最终是否有此问题的更新? 您是否能够解决该问题、或者您是否需要我们提供更多支持? 如果解决、我将继续并关闭该线程。

    谢谢、

    Kevin