工具/软件:
你(们)好
在不使用任何 UART/sci 的情况下、是否可以在 CCS 控制台中查看 CPU2调试打印?
如果我按照双核调试步骤操作、只能看到 CPU1的打印内容
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.
工具/软件:
你(们)好
在不使用任何 UART/sci 的情况下、是否可以在 CCS 控制台中查看 CPU2调试打印?
如果我按照双核调试步骤操作、只能看到 CPU1的打印内容
尊敬的 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有关。
请对此提供帮助
关闭此帖子、因为已支持活动帖子。 请不要重复发帖提问、因为这会减慢我们将您的帖子重定向到正确所有者的能力。 谢谢你。