1.6678的所有8个核的中断事件到12个可屏蔽中断的映射都是统一的吗?只有3个INTMUX寄存器,它们配置了所有核的中断映射?
有没有不同核配置不同的中断映射的方法?
2.TIMER1配置后为什么产生的是核0的中断而不是核1的?理论上应该产生向哪个核的中断,是我理解有问题吗?
3.运行基于sys/bios的程序时,是每个核都运行一个sys/bios操作系统吗?
期待专家解答,谢谢!
Zhan Xiang:
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私有的数据分开就可以了。
xiangzhong kong:
回复 Zhan Xiang:
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可以共享同一份代码,但是还是属于异构操作系统的范畴吧。
xiangzhong kong:
求高人解答…
xiangzhong kong:
回复 Zhan Xiang:
求高人解答…
Zhan Xiang:
回复 xiangzhong kong:
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,所以无法实现统一调度。