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.

C6678 的中断疑问



C6678 的理解:

IPC Generation Registers (IPCGRx)
DSP Boot Address Register (DSP_BOOT_ADDRn)

启动的时候 CorePac0 取得控制权,

然后,可以
1、设置 DSP_BOOT_ADDRx
2、写 1 到 IPCGRx 的 IPCG 位 唤醒对应的核 CorePacx
     唤醒后执行起始地址在 DSP_BOOT_ADDRx 寄存器中

也就是说,每个核 都可以同时 运行,

疑问:

1、由于 ISTP只有一个,那么 中断服务程序 由 那个核负责执行?(Core 0?)

2、如果, 中断服务程序 的空间,落在 Core 1 的程序段内,是否还是由 Core 0 负责运行中断程序?

  • 请问指的是什么中断服务程序?core0写1到IPCGR后,由RBL去唤醒其他corepac。

  • Shine Zhang 说:

    请问指的是什么中断服务程序?core0写1到IPCGR后,由RBL去唤醒其他corepac。

    比如说,就拿 定时器中断来说吧

  • 请问每个核是独立的工程还是共享一个工程?

  • Shine Zhang 说:

    请问每个核是独立的工程还是共享一个工程?

    应该是我原来的理解有误。

    1、Control Registers ,就是只能用MVC指令的哪些寄存器,应该 每个核都是具备的。 原来理解为只有一套。

    2、Device State Control Registers ,只有一套。

    所以,每个核都是可以独自响应中断的。每个核也都可以有自己的 中断服务程序入口地址表。

    疑问:

    1、一个中断事件发生后,是如何到 某个核 响应去执行ISR的?

        这里面  chip-level interrupt controller (CIC)

    interrupt controller inside a C66x CorePac

    是如何分工配合的?

    2、

    每个 interrupt controller 包含有一个 Interrupt Selector,可是 只看到 一个 INTMUX1(0180 0104h)

    应该有 8个  INTMUX1  才对啊?