问题1:
以下是mcsdk_2_01_02_06下面IPC/image_processing_evmc6678l的例子在开发板上跑起来之后,查看IER寄存器的截图,
IE05是IPC中断,IE07-IE10是EventCombiner,IE14是什么中断?IE14是在什么时候enable的?
问题2:
在以太网驱动nimu_net.c文件的setup_Rx函数中,RX的中断使用了EventCombiner,将48号host事件映射到中断号7,我不明白的是为什么是eventId>>5,二而不是eventId?查看了相关手册,发现只有多个事件组合的时候,才会使用eventId>>5,但是此处仅仅是一个48号事件,这是怎么回事?
问题3:
在SRIO测试工程SRIO_TputBenchmarkingTestProject的benchmarking.c中,如下图所示,
其中方框1中,是SRIO Message的接收中断注册,也是使用的48号host事件,但是却没有事件ID映射到硬件中断的过程?我不明白的是48号事件到底被映射到那个硬件中断?
在方框2中,将SRIO的Doorbell通用中断,映射到CIC0的8号输出,然后在将其组合到组合事件组中,也没有事件ID映射到硬件中断的过程? 所以,我也不明白组合的事件到底被映射到那个硬件中断?这一过程是怎么完成的?什么时候要自己添加事件的映射(如以太网的RX中断),什么时候不需要(如SRIO的Message RX中断)?
Wenguo Li1:
求回复!
Andy Yin1:
1 要仔细看代码实现了,有可能是bios start中,或者cfg中静态配置使用了HWI14,或者在代码中动态配置了HWI14;
2 eventID>>5是因为使用了event combiner,每32个event映射到同一个combiner event,所以48/32则是映射合并映射到eventID 1;
3 如SRIO_TputBenchmarkingTestProject中的如下注释,这个例程只测试了poll mode,所以中断配置这一块有问题,应该是要加上Hwi_eventMap等配置中断映射的。
/* Code has only been tested in polled mode, interrupt mode is not guaranteed or expected to work. */bool srio_usePolledMode = TRUE;