您好论坛、
我在获取应用程序中的正确数据时遇到一些困难。
在我的应用程序 Core 1中、仅使用 uPP Datatransfers。 缓冲区按以下方式进行全局定义:
#pragma DATA_SECTION (rcvBuffer_0、".far:uPPrcv_0"); #pragma DATA_ALIGN (rcvBuffer_0、cache_L2_LINESIZE); int16_t rcvBuffer_0[DATASIZE];
app.cfg 中的段是定义的:
Program.sectMap[".far:uPPrcv_0"]="MSMCSRAM";
在内核0上、我有缓冲器
extern far Int16_t rcvBuffer_0[DATASIZE];
内核0还通过以太网将这些缓冲器传输到 PC (UDP)。
为此、我有另一个用于报头、校验和、数据等的缓冲器。
至少将该缓冲区复制到描述符中、如给定的 Benchmarc 示例中所示。
问题1:我是否还必须在内核0上使用用于 upp-DMA 的全局地址来实现 MSMC-RAM?
Q2:在 Core_1上:在写入 uppDescriptor 之前、我使 L2和 L1D 无效、当数据传输完成时、我执行 CacheWbL2和 L1、对吧?
Q3:在 Core_0上:在复制数据之前(始终使用 memcpy ())、我必须先执行 CacheWbL2和 L1、对吧?
Q4:在 Core_0上:在发送描述符之前、我必须先 CacheWbL2和 L1、对吧?
总计、我有3个缓冲器。 Core_1写入 Buf0、此时 Core_0从 Buf2读取、依此类推。
行为是数据会在一段时间后冻结、但不会定期冻结。
非常感谢您的回答。
此致
Martin