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.
您好,
我正在使用 SYS/BIOS 配置建立 EVE 处理器之间的邮箱通信。 集成 startarware 下提供的邮箱示例。
尝试将消息从 EVE1发送到 EVE2,此处的问题是我们无法在 EVE2上接收到消息。
注意:我们能够在裸机应用中建立 EVE1和 EVE2之间的邮箱通信
但是、当我们尝试对 Processor Vision SDK 的 SYS/BIOS 配置执行相同的操作时、通信无法正常工作。
供参考、我在 C 代码中添加了中断服务表、如下所示:
extern 中断 void NMI_IRQ (void);
extern 中断 void SWI_IRQ (void);
extern 中断 void INTH_IRQ4 (void);
extern 中断 void INTH_IRQ5 (void);
extern 中断 void INTH_IRQ6 (void);
extern 中断 void INTH_IRQ7 (void);
extern 中断 void INTH_IRQ8 (void);
extern 中断 void INTH_IRQ9 (void);
extern 中断 void INTH_IRQ10 (void);
extern 中断 void INTH_IRQ11 (void);
extern 中断 void INTH_IRQ12 (void);
extern 中断 void INTH_IRQ13 (void);
extern 中断 void INTH_IRQ14 (void);
extern 中断 void INTH_IRQ15 (void);
#pragma DATA_SECTION (ist_table、".intvecs");
typedef interrupt void (* inthandler)(void);
volatile inthandler ist_table[17]=
{
NMI_IRQ、
SWI_IRQ、
INTH_IRQ4、(&I)
INTH_IRQ5、(&I)
INTH_IRQ6、(&I)
INTH_IRQ7、(&I)
INTH_IRQ8、(&I)
INTH_IRQ9、(&I)
INTH_IRQ10、(&I)
INTH_IRQ11、(&I)
INTH_IRQ12、(&I)
INTH_IRQ13、
INTH_IRQ14、(&I)
INTH_IRQ15
};
如果我们缺少启用 SYS/BIOS 邮箱的任何配置、请告知我们。
此致、
马纳维
您好!
您可以参阅 IPC lite、它也是在带有 Vision SDK 的 SYSBIOS 中使用的裸机 IPC。
~/pdk_xx_xx/packages/ti/drv/ipc_lit/src/ipclib_interrupt.c
此致、
斯坦利
您好、Stanley、
感谢您的回答。
正如您所建议的、我尝试将 IPC lite 与 SYS/BIOS 一起使用、以便在 EVE1到 EVE2处理器之间进行通信。
在将 EVE1上的消息发送到 EVE2时、我面临二进制崩溃问题。
注意: 我观察到的一种行为是 ,如果我禁用 EVE 处理器配置文件中的 eveMMUConfig()函数,我就能够在 EVE1到 EVE2之间建立通信。 我使用0x40081000U 作为 EVE1和 EVE2的基址来配置 MMU。 每个 EVE 处理器上的此基地址是否应该不同?
下面是我在发送器和接收器侧执行的步骤。
接收器的序列
IPCLib_interruptSetDefaultInitPrm()
2.根据需要更改参数
3.IPCLib_interruptInit()-具有有效参数
4. IPCLib_interruptRegisterEvent()-具有有效的回调函数
发件人的序列
IPCLib_interruptSetDefaultInitPrm()
2.根据需要更改参数
3.IPCLib_interruptInit()-具有有效参数
4. IPCLib_interruptRegisterEvent()-具有有效的回调函数
5. IPCLib_interruptSendEvent()-具有有效负载和事件 ID
发送器序列执行会在执行时崩溃
请告诉我 eveMmuConfig()函数对通信有何影响,如果 我没有通过 SYS/BIOS 配置启用 IPC_LIB 的任何步骤,也请告诉我。
e2e.ti.com/.../main_5F00_EVE1.txte2e.ti.com/.../main_5F00_EVE2.txt
此致、
马纳维
您好、Stanley、
在 MMU 配置函数的 TTB 缓冲区条目表中添加0x42000000地址后、EVE1和 EVE2与 IPC lite 之间的上述通信将得到解决。
现在问题是、
如果我使用 EVE1和 EVE2之间的"SR1_FRAME_Buffer_MEM"共享区域,则无法在 EVE1与 EVE2之间建立通信。
注: 如果我禁用共享区域"SR1_FRAME_Buffer_MEM:org = 0x8a783000,len = 0x1537d000"的使用,则可以在 EVE1与 EVE2之间建立通信。
下面是我在发送器和接收器侧执行的步骤。
接收器的序列
IPCLib_interruptSetDefaultInitPrm()
2.根据需要更改参数
3.IPCLib_interruptInit()-具有有效参数
4. IPCLib_interruptRegisterEvent()-具有有效的回调函数
发件人的序列
IPCLib_interruptSetDefaultInitPrm()
2.根据需要更改参数
3.IPCLib_interruptInit()-具有有效参数
4. IPCLib_interruptRegisterEvent()-具有有效的回调函数
5. IPCLib_interruptSendEvent()-具有有效负载和事件 ID
在这里、发送器端和接收器端的所有序列都成功执行。 EVE1正在向 EVE2发送消息、但在 EVE2侧中断回调函数未被调用。
请告诉我共享区域"SR1_FRAME_Buffer_MEM"的使用如何影响通信、如果 我在 SYS/BIOS 配置中缺少启用 IPC_LIB 共享区域的任何步骤、也请告诉我。
e2e.ti.com/.../main_5F00_EVE1.txte2e.ti.com/.../main_5F00_EVE2.txt
此致、
马纳维
您好、Manavi、
我认为在 SR1_FRAME_Buffer_MEM 区域中启用了高速缓存。
您需要执行高速缓存 维护例程以保持 EVE1和 EVE2之间的高速缓存一致性。
此致、
斯坦利