0

我是编写 TriCore MCU 的新手。我试图让一个程序在 MCU 的所有三个内核上运行。我正在使用带有通用调试引擎的 TC277 TriBoard 和 HighTec Free Entry 工具链。这是我正在使用的代码:

int main()
{
    switch (__mfcr(CPU_CORE_ID))
    {
        case 0:
        {
            main_Core0();
            break;
        }

        case 1:
        {
            main_Core1();
            break;
        }

        case 2:
        {
            main_Core2();
            break;
        }
    }

    return (0);
}

当我开始调试时,我看到只有 Core0 正在运行,而 Core 1 和 2 保持“非活动状态”。有人可以解释我为什么他们不运行以及如何解决这个问题吗?谢谢。

4

1 回答 1

0

AURIX 的正常行为是系统启动后只有核心 0 正在运行。通常,您的编译器的启动代码负责激活其他内核。检查您的编译器文档以了解如何执行此操作。我自己不使用 Hitech 工具链,所以我无法帮助您。

如果您必须自己激活内核,则必须将值 2 写入内核的调试状态寄存器 DBGSR 的 HALT 字段:

CPUx_DBGSR.B.HALT=2;
于 2018-06-22T13:06:34.830 回答