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.

[参考译文] TMS320F28377D:双核28377D 上的 CPU2中 SYS/BIOS 运行异常

Guru**** 2527600 points
Other Parts Discussed in Thread: SYSBIOS, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1300833/tms320f28377d-sys-bios-is-running-abnormally-in-cpu2-on-dual-core-28377d

器件型号:TMS320F28377D
Thread 中讨论的其他器件:SYSBIOScontrolSUITE

大家好、

客户有问题需要您的帮助:

由于有需要、我在 CPU1和 CPU2的 SYS/BIOS 操作系统中使用了 Matlab 自动代码生成(我使用了两个组件 Clock 和 Hwi、并通过点亮呼吸灯观察这些组件是否工作正常)、 并在写入完成后发现了以下问题:

1) 1)在调试模式下、我运行 CPU1、然后运行 CPU2、整个系统可以正常运行(观察呼吸光可以正常运行)、但在这种情况下、如果我再次上电、CPU1可以正常运行、CPU2只能完成初始化、 并且无法进入 Hwi 时钟任务。

2) 2)在调试模式下、如果我先运行 CPU2、然后运行 CPU1、则报告错误、并且 CPU2的初始化无法完成。

我对 SYS/BIOS 初始化过程没有深入的了解、也没有太多信息需要说明、因此我希望能够详细解释。

使用的组件版本:

CCS12.1

SYSBIOS:6.83.0.18

XDCtools:3.62.1.16

库函数:

controlSUITE:v190F2873xD

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    如果我再次打开电源、CPU1可以正常运行、CPU2只能完成初始化、无法输入 Hwi 时钟任务。

    CPU2完成了什么初始化? 是不是把它变成了 main ()? 是否要使用 BIOS_start ()? 您能分辨出它在哪里卡住了吗?

    在调试模式下,如果我先运行 CPU2然后再运行 CPU1,则报告错误,CPU2初始化无法完成。

    在初始化时要使用哪些 IPC 函数来引导 CPU2? 当你在 CCS 中运行 CPU2时,你是从 main()运行还是通过引导 ROM 让它运行? 如果它从 main 运行、它等待与 CPU1同步的代码中是否有任何地方? 如果您在 CPU1完成 CPU2所需资源的初始化之前从 main 运行 CPU2、则 CPU2可能无法正常工作。

    惠特尼

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

    惠特尼、您好!

    我先在调试模式下运行 CPU1、运行 CPU2时一切正常、但上电并重新启动后 CPU2运行异常、我在主函数的最后一次 BIOS 启动前将其点亮(它也可以在重新启动后点亮)。

    此外、我最近做了一个实验、发现如果 CPU1中的 IPC 模块被注释掉、它在断电后仍然可以正常运行、因此我怀疑 IPC 通信和 SYS/BIOS 之间存在一些不兼容性、 我的 IPC 通信使用的库函数是 IPC_lite、这个库函数的应用会与 SysBIOS 的启动冲突吗?

    此致、

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

    据我所知、唯一包含的 IPC 代码 SYS/BIOS 是添加到 SYS/BIOS CPU1 INIT 函数中的函数调用。 我将在此处发布一段代码供参考:

    Void Boot_bootCPU2(Void)
    {
        /* wait for C28 boot ROM to indicate ready ... */
        while ((REG(C2TOC1IPCBOOTSTS_REG) & 0xF) != C2TOC1_BOOT_SYSTEM_READY) {
        }
    
        while ((REG(C1TOC2IPCFLG_REG) & (INTR_SET1 | INTR_SET2)) != 0) {
        }
    
        /* specify the boot mode */
        REG(C1TOC2IPCBOOTMODE_REG) = C1TOC2_BOOTMODE_BOOT_FROM_FLASH;
    
        /* write IPC command code to execute boot mode */
        REG(C1TOC2IPCCOM_REG) = C1TOC2_EXECUTE_BOOTMODE_CMD;
    
        /* generate interrupt to C28 */
        REG(C1TOC2IPCSET_REG) |= (INTR_SET1 | INTR_SET2);
    }

    如果常规应用程序代码已经处理了这些步骤、则可以从 CPU1 SysBIOS cfg 文件中取消选中"启动 CPU2处理器的引导"设置。

    惠特尼

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

    惠特尼、您好!

    感谢您的答复。 我已在 CPU1中检查引导设置。

    如图所示、它与您提供的代码没有什么不同。

    此外,我也会遇到这样的问题。 在调试模式下、如果我单独运行 CPU2 (我的 SYS/BIOS 位于 CPU2中、CPU1为裸机)、则会报告以下错误。

    但是、如果我先运行 CPU1、然后再运行 CPU2、则不会发生此问题。

    此致、

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

    Ben、

    中断19是一个非法指令陷阱。 您可以单步执行 CPU2代码以确认、但我的猜测是 CPU2会在 CPU1授予其共享资源的访问权限之前尝试运行。 例如、CPU2可能会在 CPU1将 CPU2访问该函数所在的 RAM 之前尝试调用 ramfunc 函数。

    惠特尼

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

    惠特尼、您好!

    正如您所料、我为所有 delay_us 添加了注释(这个函数需要复制到 RAM 中)、没有问题。 感谢您的回答。 IPC 模块和 SYS/BIOS 之间是否会发生冲突? 我发现只要我知道如何使用 IPC0、程序运行期间就不会出现问题。

    此致、

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

    如前所述、SYS/BIOS 仅在使用"启动 CPU2处理器的引导"选项时添加的例程期间使用 IPC。 在您的情况下、CPU1未运行 SYS/BIOS、CPU2不应使用此选项、因此不应发生任何冲突。

    惠特尼

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

    惠特尼、您好!

    我仔细阅读了程序本身,我个人认为我的程序没有问题,同时我把 CPU2中的 SYS/BIOS 程序转换为裸机程序,这个问题奇迹般地消失了, 我之前在想编译器或汇编器的运行过程中是否存在一些不可见的问题、您在过去是否遇到过类似的现象、是否有任何解决方案想法、或什么调试想法?

    此致、

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

    我不知道有任何已知问题。 我认为您需要进行更详细的调试以找出原因、例如在 POR 后连接到器件、并将调试 CONFIG/Gel 文件配置为连接而不会导致复位、这样您就可以查看器件卡滞时的状态。

    我不确定您的帖子是参考的新项目还是支持现有的 SYS/BIOS 项目、但请注意、我们不再建议将 SYS/BIOS 用于新项目。 希望使用 RTOS 的客户应使用 FreeRTOS 或第三方选项。

    惠特尼

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

    惠特尼、您好!

    当我查看在线信息时、发现在 Matlab 的自动代码生成过程中似乎出现了类似的问题。 您当时是否知道如何解决?

    此致、

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

    Ben、

    很遗憾、我不熟悉这个问题或涉及的代码、也不知道细节。 我想您必须联系 Mathworks。

    惠特尼