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.

6678中断问题请教



1.6678的所有8个核的中断事件到12个可屏蔽中断的映射都是统一的吗?只有3个INTMUX寄存器,它们配置了所有核的中断映射?

   有没有不同核配置不同的中断映射的方法?

2.TIMER1配置后为什么产生的是核0的中断而不是核1的?理论上应该产生向哪个核的中断,是我理解有问题吗?


3.运行基于sys/bios的程序时,是每个核都运行一个sys/bios操作系统吗?

期待专家解答,谢谢!

  • 1. 每个core中都有一个中断控制器,这个中断控制器将送个dsp core的128个系统event(Primary Interrupt)路由到DSP core可以响应的14个中断上。

    2. INTC0,INTC1,INTC2和INTC3(secondary interrupt)是将更多的系统事件路由到DSP core能响应的128个系统事件上,你可以参考数据手册中有关primary interrupt的列表,里面有很多event是Intc0的output,而intc1~intc3主要是将这些系统事件路由到edma控制器上,触发edma的传输。

    3. 如果你需要不同core配置不同中断,那么映射时只能通过不同的intc0 output来实现,无法在intc0实现同一个intc0 output对应多个不同的系统事件

    4.6678总共有16个64bit timer,其中timer0~timer7当用作watch dog timer时是专用的,也就是timer0用来监控core0,timer1监控core1...,如果是用作通用timer,也就是用来产生普通的定时中断时,这个system event是广播的,每个core都能响应到,此时如果core0配置了timer1的中断响应,就能被触发

    5. sys/bios是每个core单独运行的,但是多个core可以共享同一份代码,只要每个core私有的数据分开就可以了。

  • Zhan Xiang,

             您好,感谢您的回复。

    1.128个event映射到12个可屏蔽中断是通过配置3个INTMUX寄存器来实现的。我的意思是:举个例子,每个核都有核间中断(91号event),能不能实现core0中核间中断映射到12个可屏蔽中断中的INT4,而core1则是映射到INT5呢?

    2.您说timer作为通用定时器时,event是广播的,为什么我配置的timer(实验3次,分别配置了timer0、1、8)都是只有

    core0接收到中断事件,而其他核没有接收到?

    3.运行sys/bios虽然多个core可以共享同一份代码,但是还是属于异构操作系统的范畴吧。

  • 1.128个event映射到12个可屏蔽中断是通过配置3个INTMUX寄存器来实现的。我的意思是:举个例子,每个核都有核间中断(91号event),能不能实现core0中核间中断映射到12个可屏蔽中断中的INT4,而core1则是映射到INT5呢?

    [Z]: 这个可以做到的,因为INTMUX寄存器是每个core都有,128 event每个core可以独立配置映射关系。

    2.您说timer作为通用定时器时,event是广播的,为什么我配置的timer(实验3次,分别配置了timer0、1、8)都是只有

    core0接收到中断事件,而其他核没有接收到?

    [Z]:不好意思,刚才看了手册,timer0~7中断是给各自core的,也就是timer0的中断是core0响应。

    3.运行sys/bios虽然多个core可以共享同一份代码,但是还是属于异构操作系统的范畴吧。

    [Z]:因为DSP上没有mmu,所以无法实现统一调度。