Part Number:AWR1642BOOST
代码位置:这个是SDK2.0版本的driver->mailbox的这个函数int32_t Mailbox_write(Mbox_Handle handle, const uint8_t *buffer, uint32_t size)中
他的代码中有一段是这样的
if((driver->remoteEndpoint != MAILBOX_TYPE_BSS) && (driver->cfg.chType == MAILBOX_CHTYPE_MULTI))//我们都满足
{
/*Write internal header*/
header = driver->cfg.chId;使用这个ID
memcpy ((void *)(driver->hwCfg)->baseLocalToRemote.data, (void *)(&header), sizeof(header));先把头发过去
/*Write message. Need to account for internal header size*/
memcpy ((void *)((uint8_t *)((driver->hwCfg)->baseLocalToRemote.data) + MAILBOX_MULTI_CH_HEADER_SIZE), (const void *)buffer, size);再把数据发过去
}
else
{
/*Write message.*/
memcpy ((void *)(driver->hwCfg)->baseLocalToRemote.data, (const void *)buffer, size);否则就直接发数据不发头
}
我想知道,这个变量driver->hwCfg)->baseLocalToRemote.data是否就是DSS和MSS的共享内存,他的定义一般在哪里分配空间。
jian zhang:
请问这个是否就是DSS和MSS之间可以传递消息的中间载体
,
Nancy Wang:
晚些我会转给其它工程师看一下。
,
Chris Meng:
你好,
建议你看看trm里的mailbox相关模块的信息。
typedef struct Mailbox_HwCfg_t{ /** * @brief Register and memory base for localEndpoint to remoteEndpoint communication. */ Mailbox_Base baseLocalToRemote; /** * @brief Register and memory base for remoteEndpoint to localEndpoint communication. */ Mailbox_Base baseRemoteToLocal; /** * @brief Mailbox Full Interrupt Number */ uint32_t boxFullIntNum; /** * @brief Mailbox Empty Interrupt Number */ uint32_t boxEmptyIntNum;}Mailbox_HwCfg;