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.

[参考译文] TMS320F28P659DK-Q1:CCS 控制台中的 CPU2调试打印

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1515296/tms320f28p659dk-q1-cpu2-debug-prints-in-ccs-console

器件型号:TMS320F28P659DK-Q1

工具/软件:

你(们)好

在不使用任何 UART/sci 的情况下、是否可以在 CCS 控制台中查看 CPU2调试打印?
如果我按照双核调试步骤操作、只能看到 CPU1的打印内容

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

    您好、

    您能否提供有关在 CPU1上而不是在 CPU2上看到的打印件的信息。 您是否询问是否有可能将 CPU2上的 printf()信息发送到控制台?

    此致、

    Ozino

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

    尊敬的 Ozino:

    是... 我想在 CPU1和 CPU2之间执行 IPC。 我从 CPU1获取所有打印件(使用 printf)。 但 CPU2没有提供。 如何使 CPU2中的调试打印可用。  

    因此、即使是为了使用 UART 进行调试打印、我也在 CPU2中配置了 UART、并尝试在 PC 中登录(通过 minicom)。 但它不工作.. 但当我对 CPU1执行同样的操作时、它的工作正常...
    我是否需要将所有权或任何内容更改为 CPU2?

    请提供一个解决方案、使 CPU2日志可用于双核运行

    CPU1代码:

    void main (void)

    //初始化器件时钟和外设
    设备初始化();

    SysCtl_selectCPUForPeripheralInstance (SysCtl_CPUSEL_UARTA、SysCtl_CPUSEL_CPU2);

    //初始化 IPC 与共享存储器和引导 CPU2
    setupSharedMemoryAndBootCPU2 ();

    //初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。
    interrupt_initModule();

    device_initGPIO();

    //禁用所有 CPU 中断并清除所有 CPU 中断标志。
    DINT;
    IER = 0x0000;
    IFR = 0x0000;

    //使用指向 shell ISR 的指针初始化 PIE 矢量表。
    Interrupt_initVectorTable();


    //设置 CPUTimer1、LED。
    BOARD_INIT ();

    freertos_MCU_BSP ();


    printf ("错误:计划程序意外返回!\n");
    while (1);
    }

    CPU2代码

    void main (void)

    int i;
    //
    //初始化器件时钟和外设
    //
    设备初始化();

    SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_UARTA);

    for (i = 0;i <10000;i++);

    //
    //初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。
    //
    interrupt_initModule();


    //
    //使用指向 shell 中断的指针初始化 PIE 向量表
    //服务例程(ISR)。
    //
    Interrupt_initVectorTable();


    BOARD_INIT ();

    //
    //清除所有 IPC 标志(如果已设置)
    //
    IPC_clearFlagLtoR (IPC_CPU2_L_CPU1_R、IPC_FLAG_ALL);


    IPC_SYNC (IPC_CPU2_L_CPU1_R、IPC_FLAG31);

    //
    //启用 IPC 中断
    //
    IPC_registerInterrupt (IPC_CPU2_L_CPU1_R、IPC_INT0、IPC_ISR0);

    //
    //启用全局中断(INTM)和实时中断(DBGM)
    //
    EINT;
    ERTM;


    //
    //同步两个内核。
    //

    IPC_SYNC (IPC_CPU2_L_CPU1_R、SYNC_FLAG);


    //
    //永远循环。 等待 IPC 中断
    //
    while (1);
    }

    __中断无效 IPC_ISR0 ()

    // int i;
    uint32_t 命令、addr、数据;
    bool 状态= false;

    //读取 Flag0上 CPU1发送的 IPC 命令
    IPC_readCommand (IPC_CPU2_L_CPU1_R、IPC_FLAG0、IPC_ADDR_CORRECTION_ENABLE、
    &command、&addr、&data);


    IF (命令= IPC_CMD_READ_MEM)

    UART_writeChar (myUART0_BASE、's');
    status = true;

    }

    //
    //向 C28x 内核发送响应
    //
    IF (STATUS)

    IPC_SendResponse (IPC_CPU2_L_CPU1_R、TEST_PASS);
    }
    暴露

    IPC_SendResponse (IPC_CPU2_L_CPU1_R、TEST_FAIL);
    }


    //
    //确认标志
    //
    IPC_ackFlagRtoL (IPC_CPU2_L_CPU1_R、IPC_FLAG0);

    //
    //确认 PIE 中断。
    //
    INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_GROUP1);
    }


    shoudl 我将 UARTA 的所有权更改为 CPU2以在 CPU2中使用它?
    在上述代码之后、UARTA 的所有权仍与 CPU1有关。

    请对此提供帮助

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

    关闭此帖子、因为已支持活动帖子。 请不要重复发帖提问、因为这会减慢我们将您的帖子重定向到正确所有者的能力。 谢谢你。

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1515546/tms320f28p659dk-q1-cpu2-debug-prints