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.

[参考译文] TMS320F28235:"函数调用不会返回问题"通过更改 F28235器件上的参数数据类型来解决

Guru**** 2502205 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/729187/tms320f28235-function-call-will-not-return-problem-solved-by-changing-parameter-data-type-on-f28235-devices

器件型号:TMS320F28235
Thread 中讨论的其他器件:controlSUITE

您好专家、

我的客户正在使用 F28235器件、他们发现他们的串行引导应用程序代码在下面显示的某些函数调用中会卡住(不返回)。 如果他们将数字格式从"float"更改为"uint32"、这个问题将得到解决。  

问:由于我们无法使用调试器调试引导加载的应用程序、是否有任何推荐方法来深入了解"不返回问题"的根本原因?

问:您能给我一些关于数据类型更改如何解决问题的提示吗?

谢谢!

vConfigCpuTimer_Boot()是未返回的函数调用。

浮点频率和浮点周期是我们更改数据类型的地方。




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

    可能发生此错误的情况有几种。

    1.能否检查编译器处理器选项以查看浮点支持是否设置为 fpu32? 可能是由于未使用 fpu32编译器选项。
    2.使用的函数(vConfigCpuTimer_Boo)在使用前是否在头文件中定义?

    您能否与他们核实浮点变量是否可用于这些更改?

    谢谢、
    Katta
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Katta、
    我会检查并返回给您。 美好的夜晚!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Katta、

    添加 FPU32后、会出现编译器错误、如下所示。

    问:顺便说一下、F28235是定点 MCU、为什么编译器可以浮点? 请帮助我理解这一点吗?

    问:您能帮我解决编译器错误吗?

    谢谢!

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

    好的。 我在处理此问题时考虑到了最新的电路板。

    我们不要将编译器选项更改为 FPU32。 softlib 选项就足够了。
    我没有 F28235板来调试该问题。

    您能否向他们咨询他们是否可以在其电路板上的 controlSUITE\device_support\f2833x\v142\DSP2823x_examples_ccsv5\time_led_blink 上运行示例。

    在该示例中为 API
    空 ConfigCpuTimer (struct CPUTIME_VARS *定时器、浮点频率、浮点周期)
    与他们使用的类似。

    在他们步入 vConfigCpuTimer_Boot()时的示例中,我怀疑这些值是以零的形式传递的。 这可能是问题所在。

    谢谢、
    Katta
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Katta、
    我想我应该为您提供一些附加信息。 它们的固件包含两个部分:闪存 A 驻留引导加载程序和闪存 H 驻留应用程序代码。 调试时(更改 A 和 H)、一切正常。 此问题仅在应用程序代码串行引导时出现(无更改、H 已更改)您是否对如何找出根本原因有任何想法?
    谢谢!
    谢尔登
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sheldon、

    我们必须咨询串行闪存编程专家。
    客户是否可以从 float 更改为 uint32?

    谢谢、
    Katta
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Katta、
    是的、当从 float 更改为 uint32时、我可以很好地工作。 但当仍想知道原因时。
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sheldon、

    执行以下操作:执行以下操作:POST e2e.ti.com/.../725611中的步骤
    他们是否尝试调试以检查将哪些值传递给函数 vConfigCpuTimer_Boot()?

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

    您好 Katta、

    它们尝试通过频率= 150、周期= 1000。 因此、PRD 应为150 * 1000 = 150 000 (0x000249F0)。

    如果加载了.out 时由调试器读取的寄存器值、则为第一个附加文件。 一切都好。 连接的第二个是引导加载代码、执行会得到错误的寄存器结果。

    需要注意的一点是:该项目最初是由他们的 F28335代码提供的、起初、交通似乎还不错。 但有一次、他们添加了一些变量来执行一些测试、引导加载的代码将从开始不起作用。 如果它们删除任何添加的变量、就会变得很好。 真的很棘手。

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以单步执行 ConfigCpuTimer()函数并查看它在何处卡住以便它永远不会返回? 当您首次进入函数时、参数是否具有正确的值? 代码是否会运行、直到您转至反汇编中的"softlib"函数之一、如"FS$MPY"或"FS$TOL"?

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

    尊敬的惠特尼:

    因为只有在加载程序时才会出现该问题。 我们无法浏览变量或汇编。 我们主要通过两种方式进行调试、一种是打开/关闭板上的 LED、另一种是通过调试器连接观察寄存器值。

    在这种情况下、您是否对如何检查这些参数的值或查看反汇编有任何想法?

    据我所知,我们运行到 ConfigCpuTimer()的最后一行,然后再也不会返回此函数调用。

    谢谢!

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

    您还可以尝试加载符号并进行调试。

    另一种方法是在调用 ConfigCpuTimer()之前放入无限循环,加载符号并步入以检查这些参数的值。

    谢谢、
    Katta