summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: cc8e910)
raw | patch | inline | side by side (parent: cc8e910)
author | Justin Sobota <jsobota@ti.com> | |
Mon, 7 Dec 2015 22:43:45 +0000 (17:43 -0500) | ||
committer | Justin Sobota <jsobota@ti.com> | |
Mon, 7 Dec 2015 22:43:45 +0000 (17:43 -0500) |
Signed-off-by: Justin Sobota <jsobota@ti.com>
diff --git a/c66/srio/docs/ReleaseNotes_TransportSrio.doc b/c66/srio/docs/ReleaseNotes_TransportSrio.doc
index ba88771e33675470483f232de433d80bc3afa086..3e4c5e1ba3dab4d488ce14a7470382027eeef194 100644 (file)
Binary files a/c66/srio/docs/ReleaseNotes_TransportSrio.doc and b/c66/srio/docs/ReleaseNotes_TransportSrio.doc differ
Binary files a/c66/srio/docs/ReleaseNotes_TransportSrio.doc and b/c66/srio/docs/ReleaseNotes_TransportSrio.doc differ
diff --git a/c66/srio/docs/ReleaseNotes_TransportSrio.pdf b/c66/srio/docs/ReleaseNotes_TransportSrio.pdf
index 7857fd71da378644657da807a20d69b2b28fa047..d041aa6e5c12eb01da53390eb0bb36491c1e64a8 100644 (file)
Binary files a/c66/srio/docs/ReleaseNotes_TransportSrio.pdf and b/c66/srio/docs/ReleaseNotes_TransportSrio.pdf differ
Binary files a/c66/srio/docs/ReleaseNotes_TransportSrio.pdf and b/c66/srio/docs/ReleaseNotes_TransportSrio.pdf differ
index d42a3dcbc11abfe90d761327d0cc3cf927d0a2b9..ae287207418a9c898a9e66566a11f56701de0e5f 100644 (file)
#define RM_PRINT_STATS 0
#define SYSINIT 0
#define NUM_DSP_CORES 2
+#if (defined(DEVICE_C6657) || defined(DEVICE_C6678))
+#define NUM_CORES 2 /* 2 DSPs */
+#else
#define NUM_CORES 3 /* Host + DSPs */
+#endif
#define TEST_ITERATIONS_STD 3
#define TEST_ITERATIONS_FRAG 3
#define TEST_ITERATIONS_TOT (TEST_ITERATIONS_STD + TEST_ITERATIONS_FRAG)
transSrioParamsT11.rxMsgQHeapId = SRIO_MSGQ_HEAP_ID;
transSrioParamsT11.maxMTU = srioMaxMTU;
transSrioParamsT11.rmServiceHandle = rmServiceHandle;
- /* Must map to a valid channel for each DSP core. Follow sprugr9f.pdf
- * Table 5-9 */
+ /* Must map to a valid channel for each DSP core. Follow sprugr9h.pdf
+ * Table 5-7 for C6678 and Table 5-9 for K2HK */
transSrioParamsT11.accumCh = DNUM;
transSrioParamsT11.accumTimerCount = 0;
transSrioParamsT11.transNetworkId = SRIO_T11_TRANS_NET_ID;
transSrioParamsT11.rxIntVectorId = 8;
memset(&t11EpParams, 0, sizeof(t11EpParams));
+#if (defined(DEVICE_C6657) || defined(DEVICE_C6678))
+ /* DSP Core 0 */
+ t11EpParams[0].tt = 1;
+ t11EpParams[0].deviceId = DEVICE_ID1_16BIT;
+ t11EpParams[0].mailbox = 0;
+ t11EpParams[0].letter = 0;
+ t11EpParams[0].segMap = (sizeof(TstMsg) > 256 ? 1 :0);
+ /* DSP Core 1 */
+ t11EpParams[1].tt = 1;
+ t11EpParams[1].deviceId = DEVICE_ID2_16BIT;
+ t11EpParams[1].mailbox = 0;
+ t11EpParams[1].letter = 0;
+ t11EpParams[1].segMap = (sizeof(TstMsg) > 256 ? 1 :0);
+#else
/* ARMv7 Linux Host */
t11EpParams[0].tt = 1;
t11EpParams[0].deviceId = DEVICE_ID1_16BIT;
t11EpParams[2].mailbox = 0;
t11EpParams[2].letter = 0;
t11EpParams[2].segMap = (sizeof(TstMsg) > 256 ? 1 :0);
+#endif
memset(&t11socketParams, 0, sizeof(t11socketParams));
t11socketParams.epListSize = NUM_CORES;
transSrioParamsT9.maxMTU = srioMaxMTU;
transSrioParamsT9.rmServiceHandle = rmServiceHandle;
/* Type 9 instance specific parameters */
- /* Must map to a valid channel for each DSP core. Follow sprugr9g.pdf
- * Table 5-9 */
+#if defined(DEVICE_C6657)
+ /* Must map to a valid channel for each DSP core. Follow sprugr9h.pdf
+ * Table 5-3 & 5-4 for C6657 */
+ transSrioParamsT9.accumCh = DNUM + 2; /* Next valid accum ch is
+ * number of device DSP
+ * cores away
+ * (2 for C6657) */
+#else
+ /* Must map to a valid channel for each DSP core. Follow sprugr9h.pdf
+ * Table 5-7 for C6678 and Table 5-9 for K2HK */
transSrioParamsT9.accumCh = DNUM + 8; /* Next valid accum ch is
* number of device DSP
* cores away
- * (8 for K2HK) */
+ * (8 for C6678 & K2HK) */
+#endif
transSrioParamsT9.accumTimerCount = 0;
transSrioParamsT9.transNetworkId = SRIO_T9_TRANS_NET_ID;
transSrioParamsT9.rxIntVectorId = 9;
/* Type 9 specific */
memset(&t9EpParams, 0, sizeof(t9EpParams));
+#if (defined(DEVICE_C6657) || defined(DEVICE_C6678))
+ /* DSP Core 0 */
+ t9EpParams[0].tt = 1;
+ t9EpParams[0].deviceId = DEVICE_ID1_16BIT;
+ t9EpParams[0].cos = 0;
+ t9EpParams[0].streamId = 0;
+ /* DSP Core 1 */
+ t9EpParams[1].tt = 1;
+ t9EpParams[1].deviceId = DEVICE_ID2_16BIT;
+ t9EpParams[1].cos = 0;
+ t9EpParams[1].streamId = 0;
+#else
/* ARMv7 Linux Host */
t9EpParams[0].tt = 1;
t9EpParams[0].deviceId = DEVICE_ID1_16BIT;
t9EpParams[2].deviceId = DEVICE_ID2_16BIT;
t9EpParams[2].cos = 0;
t9EpParams[2].streamId = 0;
+#endif
memset(&t9socketParams, 0, sizeof(t9socketParams));
t9socketParams.epListSize = NUM_CORES;
index 35f7b7408742c9dc3704345b9ae37383bf769c92..790d1651ff33860de074f1c1fede38f85c944e60 100644 (file)
#define RM_PRINT_STATS 0
#define SYSINIT 0
#define NUM_LOCAL_DSP_CORES 2
+#if (defined(DEVICE_C6657) || defined(DEVICE_C6678))
+#define NUM_TOTAL_CORES 4
+#else
#define NUM_TOTAL_CORES 6
+#endif
#define TEST_ITERATIONS_STD 3
#define TEST_ITERATIONS_FRAG 3
#define TEST_ITERATIONS_TOT (TEST_ITERATIONS_STD + TEST_ITERATIONS_FRAG)
-#define NUM_TEST_MSGS 64
+#define NUM_TEST_MSGS 50
+#if (defined(DEVICE_C6657) || defined(DEVICE_C6678))
+#define IPC_CLUSTER_OFFSET 2
+#else
#define IPC_CLUSTER_OFFSET 3
+#endif
#define HOST_DESC_SIZE_BYTES 128
#define HOST_DESC_NUM 512
#define TRANS_SEND_DESC 4
-#define TRANS_RCV_DESC 128
+#define TRANS_RCV_DESC 120
#define TRANS_FRAG_DESC 4
#define HOST_DESC_MEM_REGION 0
#pragma DATA_ALIGN (syncInit, 128)
volatile uint8_t syncInit[128];
+/* Sync block for Transport initialization barriers */
+#pragma DATA_SECTION (syncTransInit, ".sync");
+#pragma DATA_ALIGN (syncTransInit, 128)
+volatile uint8_t syncTransInit[NUM_LOCAL_DSP_CORES][128];
+
/* Sync block for cleanup barriers */
#pragma DATA_SECTION (syncCleanup, ".sync");
#pragma DATA_ALIGN (syncCleanup, 128)
System_printf("IPC Core %d : Syncing with consumer board DSP %d...\n",
ipcCoreId, remoteProcId);
while(noSync) {
+ rxMsg = NULL;
txMsg = (TstMsg *) MessageQ_alloc(SRIO_MSGQ_HEAP_ID, sizeof(TstMsg));
if (txMsg == NULL) {
System_printf("Error IPC Core %d : "
TstMsg *txMsg;
uint32_t numReceived = 0;
uint32_t i;
+ int32_t rxFlag;
uint32_t result = TEST_PASS;
System_printf("IPC Core %d : "
numReceived++;
}
+ rxFlag = rxMsg->flags;
status = MessageQ_free((MessageQ_Msg) rxMsg);
if (status < 0) {
System_printf("Error IPC Core %d : "
goto error_exit;
}
- if (rxMsg->flags == SEND_MESSAGE_LAST_MESSAGE) {
+ if (rxFlag == SEND_MESSAGE_LAST_MESSAGE) {
break;
}
}
/* Reset all sync mechanisms */
memset(&syncInit, 0, sizeof(syncInit));
+ memset((void *)&syncTransInit[coreNum][0], 0, sizeof(syncTransInit) /
+ NUM_LOCAL_DSP_CORES);
memset((void *)&syncCleanup[coreNum][0], 0, sizeof(syncCleanup) /
NUM_LOCAL_DSP_CORES);
if (coreNum == SYSINIT) {
wb((void *)&syncInit, sizeof(syncInit));
}
+ wb((void *)&syncTransInit[coreNum][0], sizeof(syncTransInit) /
+ NUM_LOCAL_DSP_CORES);
wb((void *)&syncCleanup[coreNum][0], sizeof(syncCleanup) /
NUM_LOCAL_DSP_CORES);
transSrioParamsT11.rxMsgQHeapId = SRIO_MSGQ_HEAP_ID;
transSrioParamsT11.maxMTU = srioMaxMTU;
transSrioParamsT11.rmServiceHandle = rmServiceHandle;
- /* Must map to a valid channel for each DSP core. Follow sprugr9f.pdf
- * Table 5-9 */
+ /* Must map to a valid channel for each DSP core. Follow sprugr9h.pdf
+ * Table 5-7 for C6678 and Table 5-9 for K2HK */
transSrioParamsT11.accumCh = DNUM;
transSrioParamsT11.accumTimerCount = 0;
transSrioParamsT11.transNetworkId = SRIO_T11_TRANS_NET_ID;
transSrioParamsT11.rxIntVectorId = 8;
memset(&t11EpParams, 0, sizeof(t11EpParams));
+#if (defined(DEVICE_C6657) || defined(DEVICE_C6678))
+ /* Core 0 (Producer) MultiProc ID - 0 */
+ t11EpParams[0].tt = 0;
+ t11EpParams[0].deviceId = DEVICE_ID1_8BIT;
+ t11EpParams[0].mailbox = 0;
+ t11EpParams[0].letter = 0;
+ t11EpParams[0].segMap = (sizeof(TstMsg) > 256 ? 1 :0);
+ /* Core 1 (Producer) MultiProc ID - 1 */
+ t11EpParams[1].tt = 0;
+ t11EpParams[1].deviceId = DEVICE_ID1_8BIT;
+ t11EpParams[1].mailbox = 0;
+ t11EpParams[1].letter = 1;
+ t11EpParams[1].segMap = (sizeof(TstMsg) > 256 ? 1 :0);
+ /* Core 0 (Consumer) MultiProc ID - 2 */
+ t11EpParams[2].tt = 0;
+ t11EpParams[2].deviceId = DEVICE_ID2_8BIT;
+ t11EpParams[2].mailbox = 0;
+ t11EpParams[2].letter = 0;
+ t11EpParams[2].segMap = (sizeof(TstMsg) > 256 ? 1 :0);
+ /* Core 1 (Consumer) MultiProc ID - 3 */
+ t11EpParams[3].tt = 0;
+ t11EpParams[3].deviceId = DEVICE_ID2_8BIT;
+ t11EpParams[3].mailbox = 0;
+ t11EpParams[3].letter = 1;
+ t11EpParams[3].segMap = (sizeof(TstMsg) > 256 ? 1 :0);
+#else
/* Linux Host (Producer) MultiProc ID - 0 */
t11EpParams[0].tt = 0;
t11EpParams[0].deviceId = DEVICE_ID1_8BIT;
t11EpParams[5].mailbox = 0;
t11EpParams[5].letter = 2;
t11EpParams[5].segMap = (sizeof(TstMsg) > 256 ? 1 :0);
+#endif
memset(&t11socketParams, 0, sizeof(t11socketParams));
t11socketParams.epListSize = NUM_TOTAL_CORES;
transSrioParamsT9.maxMTU = srioMaxMTU;
transSrioParamsT9.rmServiceHandle = rmServiceHandle;
/* Type 9 instance specific parameters */
+#if defined(DEVICE_C6657)
+ /* Must map to a valid channel for each DSP core. Follow sprugr9h.pdf
+ * Table 5-3 & 5-4 for C6657 */
+ transSrioParamsT9.accumCh = DNUM + 2; /* Next valid accum ch is
+ * number of device DSP
+ * cores away
+ * (2 for C6657) */
+#else
/* Must map to a valid channel for each DSP core.
- * Follow sprugr9g.pdf Table 5-9 */
+ * Follow sprugr9h.pdf Table 5-7 for C6678 and Table 5-9 for K2HK */
transSrioParamsT9.accumCh = DNUM + 8; /* Next valid accum ch is
* number of device DSP
* cores away
- * (8 for K2HK) */
+ * (8 for C6678 & K2HK) */
transSrioParamsT9.accumTimerCount = 0;
transSrioParamsT9.transNetworkId = SRIO_T9_TRANS_NET_ID;
transSrioParamsT9.rxIntVectorId = 9;
+#endif
/* Type 9 specific */
memset(&t9EpParams, 0, sizeof(t9EpParams));
+#if (defined(DEVICE_C6657) || defined(DEVICE_C6678))
+ /* Core 0 (Producer) MultiProc ID - 0 */
+ t9EpParams[0].tt = 0;
+ t9EpParams[0].deviceId = DEVICE_ID1_8BIT;
+ t9EpParams[0].cos = 0;
+ t9EpParams[0].streamId = 0;
+ /* Core 1 (Producer) MultiProc ID - 1 */
+ t9EpParams[1].tt = 0;
+ t9EpParams[1].deviceId = DEVICE_ID1_8BIT;
+ t9EpParams[1].cos = 0;
+ t9EpParams[1].streamId = 1;
+ /* Core 0 (Consumer) MultiProc ID - 2 */
+ t9EpParams[2].tt = 0;
+ t9EpParams[2].deviceId = DEVICE_ID2_8BIT;
+ t9EpParams[2].cos = 0;
+ t9EpParams[2].streamId = 0;
+ /* Core 1 (Consumer) MultiProc ID - 3 */
+ t9EpParams[3].tt = 0;
+ t9EpParams[3].deviceId = DEVICE_ID2_8BIT;
+ t9EpParams[3].cos = 0;
+ t9EpParams[3].streamId = 1;
+#else
/* Linux Host (Producer) MultiProc ID - 0 */
t9EpParams[0].tt = 0;
t9EpParams[0].deviceId = DEVICE_ID1_8BIT;
t9EpParams[5].deviceId = DEVICE_ID2_8BIT;
t9EpParams[5].cos = 0;
t9EpParams[5].streamId = 2;
+#endif
memset(&t9socketParams, 0, sizeof(t9socketParams));
t9socketParams.epListSize = NUM_TOTAL_CORES;
#endif
if (coreNum == SYSINIT) {
- /* Signal to other DSPs that SRIO transport to remote core is
- * attached */
- syncInit[SYNC_INDEX_SRIO_TRANS_INIT] = 1;
- wb((void *) &syncInit, sizeof(syncInit));
+ int32_t i;
+
+ /* Wait for other cores to complete initialization */
+ for (i = 0; i < NUM_LOCAL_DSP_CORES; i++) {
+ if (i != coreNum) {
+ do {
+ inv((void *) &syncTransInit[i][0], sizeof(syncTransInit) /
+ NUM_LOCAL_DSP_CORES);
+ } while (!syncTransInit[i][0]);
+ }
+ }
} else {
- /* Synchronize with SRIO transport attach sync point on SYSINIT core */
- do {
- inv((void *) &syncInit, sizeof(syncInit));
- } while (!syncInit[SYNC_INDEX_SRIO_TRANS_INIT]);
+ /* SYSINIT cannot start testing until all other cores have completed
+ * initialization */
+ syncTransInit[coreNum][0] = 1;
+ wb((void *) &syncTransInit[coreNum][0], sizeof(syncTransInit) /
+ NUM_LOCAL_DSP_CORES);
}
if (cleanupTskHandle) {