c - 如何激活 AURIX TriCore 微 Controller 上的内核 1 和 2?

标签 c microcontroller multicore infineon

我是 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 保持“不活动”状态。有人可以解释一下为什么他们不运行以及如何解决这个问题吗?谢谢。

最佳答案

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

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

CPUx_DBGSR.B.HALT=2;

关于c - 如何激活 AURIX TriCore 微 Controller 上的内核 1 和 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50981845/

相关文章:

java - 它适用于 Debian 5.0,但在 ubuntu 11.10 上会导致段错误

c++ - 字符串的异常行为

c - 链表数组在 C 中无法正常工作

Java并行编程

c - C 中 openssl RSA_public_encrypt() 上的段错误

algorithm - 以离散步骤绘制弧线

c - 为什么将结构地址转换为 int 指针、取消引用并将其用作语句中的 LVALUE 会使我的微 Controller 崩溃?

Codevision AVR 使用 TWI 访问外部 eeprom 24c02B

.net - 为什么.net 4.5 中的多核 JIT 不是 "on by default"?

r - 在 R 中使用多核计算 SVD