我跑的是ARM/DSP/M3通信的DEMO v1/v2版,在DM8148上,停掉dvr-rdk驱动和应用,例子运行就正常。不停,例子就跑不起来。
怀疑是mailbox的冲突,因为demo中用到的是mailbox10/11做通讯用,又试了用mailbox0/1, mailbox2/3 ~~ mailbox8/9,都不行,冲突解决不了。
请问还有可能是其它地方有冲突么?应该怎么解决?
另外我浏览了代码,发现和mailbox number有关的地方如下,是否还有其它地方没有更改到,请帮忙确认:
一个是DM8148_interrupt/main.c 中的line9~11 line17~19,
#define MAILBOX_MESSAGE (MAILBOX_BASE_ADDR+0x40+0x4*10)
#define MAILBOX_FIFOSTATUS (MAILBOX_BASE_ADDR+0x80+0x4*10)
#define MAILBOX_MSGSTATUS (MAILBOX_BASE_ADDR+0xc0+0x4*10)
#define MAILBOX_MESSAGE1 (MAILBOX_BASE_ADDR+0x40+0x4*11)
#define MAILBOX_FIFOSTATUS1 (MAILBOX_BASE_ADDR+0x80+0x4*11)
#define MAILBOX_MSGSTATUS1 (MAILBOX_BASE_ADDR+0xc0+0x4*11)
一个是mailbox_driver/dsp_mailbox.c中的mailbox_init()的line302~304 line310~312.
MAILBOX_MESSAGE = v_MAILBOX_BASE_ADDR+0x40+0x4*10;
MAILBOX_FIFOSTATUS = v_MAILBOX_BASE_ADDR+0x80+0x4*10;
MAILBOX_MSGSTATUS = v_MAILBOX_BASE_ADDR+0xc0+0x4*10;
MAILBOX_MESSAGE1 = v_MAILBOX_BASE_ADDR+0x40+0x4*11;
MAILBOX_FIFOSTATUS1 = v_MAILBOX_BASE_ADDR+0x80+0x4*11;
MAILBOX_MSGSTATUS1 = v_MAILBOX_BASE_ADDR+0xc0+0x4*11;
Chris Meng:
你好,
RDK使用的syslink也使用了mailbox。我建议通过CCS或者是打印,在运行RDK时候读取mailbox的值,看哪些mailbox寄存器被修改了,就可以了解哪些被用了,然后看看是否是使用冲突的问题。
请问你们产品最终是否要使用RDK的架构,如果是,我建议你们用RDK里面有的link来做通信。