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.

[参考译文] 编译器/C64XPLUSCODECS:发生操作码异常

Guru**** 2587365 points
Other Parts Discussed in Thread: DM3725, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/593370/compiler-c64xpluscodecs-opcode-exception-has-occured

器件型号:C64XPLUSCODECS
Thread 中讨论的其他器件:DM3725SYSBIOS

工具/软件:TI C/C++编译器

以上图片供参考。 在 TI C64x+上运行实验时,我得到了上述例外情况。 有什么想法吗?

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

    我已通知设计团队。 他们的反馈将在此处发布。

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

    您使用的是哪种器件?
    您使用的是哪种软件包?
    导致此异常的条件是什么? (在加载或运行后、启动一些外部事件后立即执行、或执行此类操作)

    您可以参阅 C64x+ CPU 和指令集参考指南以查找 CPU 例外部分。 这将帮助您解读所示寄存器中的错误代码。

    NRP 告诉您在代码中查找导致异常的指令的大概位置。 如果您当时正在执行中断、IRP 可能具有意义。 B15通常是堆栈指针、因此您可以查看该位置以尝试回退异常之前发生的情况。

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

    感谢您的回应!

    首先,让我详细介绍一下设备和软件包:

    器件:DM3725 (ti- C64x+)
    SYSBIOS:BIOS_6_42_03_35
    XDC:xdctools_3_30_06_67_core
    编译器:TI-CGT-C6000_8.0.1


    大约10次运行中、我的设备崩溃2次。 我的观察和分析:

    1) 1) NRP 向我提供了发生此异常的文件详细信息。 在 JTEG 的帮助下、我还能够精确定位异常的位置(在 CCS 中通过反汇编)。 我在这条指令上遇到了一个问题:"Log2ClipScale = 0;"。 在这条指令中、异常似乎不太可能发生。 我将向您发送我的代码片段:

    Log2ClipScale = 0;
    操作

    TotalEnergy = Sat_fr1x16 (SHR_fr1x32 (TotalEnergy32、2*Log2Clipscale-modem_log2 (BurstLength -2)));
    Log2ClipScale++;
    } while (TotalEnergy >= RefMetric);



    2)对于同一情形、B15指向映射文件中的"ti_sysbios_堆_HeapMem_instance_State_1_buf__a_"。


    我将等待您的宝贵意见。

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

    还有另一个用于 DM3725的论坛。 我感到惊讶的是、当您创建论坛时、没有向您推荐这种方法。 如果此问题倾向于针对特定于 DM3725或编解码器的问题、我们将要求主持人将该主题移至 DM37x 论坛。

    您使用的是哪种编解码器?

    导致此异常的条件是什么? (在加载或运行后立即、启动一些外部事件或类似事件后)应用程序是否正常运行一段时间、然后达到异常? 请解释您正在做什么、而不是"运行"。

    1) 1)异常的代码片段需要汇编、而不是 C 代码。 异常发生在 CPU 级别的指令中。 请弹出"Disassembly"窗口、并在异常 NRP 位置之前和之后分别显示至少8条指令和8条指令。 我还可以帮助您扩展 C 代码片段、以便在 NRP 位置之前包含一些指令。

    但这种异常似乎发生在您的代码中、而不是任何 TI 提供的编解码器中。 这是您刚才所说的话和所展示内容的正确解释吗?

    2)堆栈指针 B15指向堆的情况似乎非常奇怪。 请附上地图文件的副本。

    如果在 C 编译器生成的应用程序代码中发生异常是正确的、则编译器生成错误指令的情况非常罕见。 这种情况下(如果正确)最可能的可能性是覆盖代码、例如、这意味着错误指针。

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

    您好 RandyP、

    是的、您是对的、例外发生在我的代码中。 在我尝试计算"总能量"的算法中出现异常。

    1) 1) CCS 中的"Disassembly"窗口:

    2) 2)请求的映射文件:  

    /cfs-file/__key/communityserver-discussions-components-files/791/5153.MapFile.zip

    谢谢、

    Yunii

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

    再次访问 e2e.ti.com/.../8117.MapFile.zipuploading地图文件:

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

    这将非常难以调试。 除了回答我提出和提出的所有问题之外、它还将帮助您添加我不想询问的信息。

    导致此异常的条件是什么? (在加载或运行后立即、启动一些外部事件或类似事件后)应用程序是否正常运行一段时间、然后达到异常? 请解释您正在做什么、而不是"运行"。 [这是第三次请求提供此行为信息。]

    是否从任务中调用此例程? 您使用的是哪种操作系统?

    您的图片显示了 MVK.L1 0、A12指令处的断点符号。 这是仅用于演示目的、还是您在那里停了下来? 在设置断点后、您多久点击一次断点并停止一次?

    首先需要消除的是代码是否被覆盖的问题。 为此、请加载代码并在发生任何运行之前拍摄该"Disassembly"区域的快照。 将其与达到异常后"Disassembly"区域的外观进行比较。

    第二个调试路径是使用断点在发生故障的指令之前停止、并使用汇编步骤功能逐步执行并通过该指令来查看其行为。

    第三个调试路径是使用编译器执行不同的操作、以查看是否可以生成不会遇到异常的代码。

    对于 NRP 地址显示的指令没有任何需要注意的地方、因此我无法看到任何简单的答案。

    此致、
    RandyP