} radio;
+ // デバッグ用変数群
+#if defined (DEBUG_QUEUEDEPTH)
static int debug_counter = 0;
-static int debug_level = 0;
-static int debug_tx_counter = 0;
-static int debug_rx_counter = 0;
-
-#define DEBUGLOOP (31700)
+static int debug_queue_level = 0;
+static int debug_queue_max = INT_MIN;
+static int debug_queue_min = INT_MAX;
+#endif
/**
pack_af_sample(0, 0, &af_pri_ch, &af_sec_ch);
syscall(psnd_dtq(DTQ_AF, (VP_INT)af_pri_ch));
syscall(psnd_dtq(DTQ_AF, (VP_INT)af_sec_ch));
- debug_level ++;
+#ifdef DEBUG_QUEUEDEPTH
+ debug_queue_level +=2;
+ if ( debug_queue_level > debug_queue_max)
+ debug_queue_max = debug_queue_level;
+#endif // DEBUG_QUEUEDEPTH
}
init_sport0_tx(); // 送信DMA開始。割り込みはまだ生成しない
init_sport0_rx(); // 受信DMA開始。割り込みイネーブル。
-#if 1
// AF送信を開始する。ただし、送信DMA割り込みはまだ発生しない。
*pDMA2_CONFIG |= DMAEN; // TX SPORT DMA Enable
*pSPORT0_TCR1 |= TSPEN; // TX SPORT Enable
*pDMA1_CONFIG |= DMAEN; // RX SPORT DMA Enable
*pSPORT0_RCR1 |= RSPEN; // RX SPORT Enable
ssync();
-#else
- syscall(act_tsk(TASK_AF)); // AFデータ送信タスクをアクティブにする
- *pDMA1_CONFIG = 0; // RX SPORT DMA Disable
- *pDMA2_CONFIG = 0;
- *pSPORT0_TCR1 |= RSPEN; // TX SPORT Enable
- *pSPORT0_RCR1 |= RSPEN; // RX SPORT Enable
- ssync();
-
-#endif
-
- while(1)
- {
- tslp_tsk(1000);
- syslog( LOG_INFO, "TX: %d, RX: %d, lenght: %d", debug_tx_counter, debug_rx_counter, debug_counter );
- syslog( LOG_NOTICE, "SPORT0_TCR1 %04x", *pSPORT0_TCR1);
- syslog( LOG_NOTICE, "SPORT0_TCR2 %04x", *pSPORT0_TCR2);
- syslog( LOG_NOTICE, "SPORT0_STAT %04x", *pSPORT0_STAT);
- syslog( LOG_NOTICE, "SPORT0_TCLKDIV %04x", *pSPORT0_TCLKDIV);
- syslog( LOG_NOTICE, "SPORT0_TFSDIV %04x", *pSPORT0_TFSDIV);
-
- }
-
/*
// パック済みオーディオサンプルをAFキューに送信する
// キューに空きがなければ、待たずにエラーをもって帰る
-#if 0
syscall(psnd_dtq(DTQ_AF, (VP_INT)af_pri_ch));
syscall(psnd_dtq(DTQ_AF, (VP_INT)af_sec_ch));
-#endif
- debug_level += 2;
+#ifdef DEBUG_QUEUEDEPTH
+ debug_queue_level += 2;
+ if ( debug_queue_level > debug_queue_max)
+ debug_queue_max = debug_queue_level;
+#endif // DEBUG_QUEUEDEPTH
}
}
pack_af_sample( left, right, &af_pri_ch, &af_sec_ch);
// パック済みオーディオサンプルをAFキューに送信する
// キューに空きがなければ、待たずにエラーをもって帰る
-#if 0
syscall(psnd_dtq(DTQ_AF, (VP_INT)af_pri_ch));
syscall(psnd_dtq(DTQ_AF, (VP_INT)af_sec_ch));
-#endif
- debug_level += 2;
+#ifdef DEBUG_QUEUEDEPTH
+ debug_queue_level += 2;
+ if ( debug_queue_level > debug_queue_max)
+ debug_queue_max = debug_queue_level;
+#endif // DEBUG_QUEUEDEPTH
}
} // 非ワイドFMの場合
} // RX-IF DMAバッファ内部のデータを処理
+#ifdef DEBUG_QUEUEDEPTH
+ debug_counter ++;
+ static int debug_total = 0;
+ if ( debug_counter > 30000 )
+ {
+ debug_counter = 0;
+ syslog( LOG_NOTICE, "%8d: que depth max : %d, min : %d ", debug_total++, debug_queue_max, debug_queue_min);
+ }
+#endif // DEBUG_QUEUEDEPTH
} while (1);
// AFキューから送信すべきデータを取り出す
// SVCにポーリングを使用しているため、取り出すべきデータがなければ待ちに入らずに
// エラーコードを返す
-#if 0
syscall(prcv_dtq( DTQ_AF, (VP_INT)&data));
-#endif
// DMAバッファに書き込み
filled_buffer[i] = data;
-
- debug_level --;
+#ifdef DEBUG_QUEUEDEPTH
+ debug_queue_level --;
+ if ( debug_queue_min > debug_queue_level)
+ debug_queue_min = debug_queue_level;
+#endif // DEBUG_QUEUEDEPTH
}
-#if 0
- debug_counter ++;
- if ( debug_counter > DEBUGLOOP ){
- syslog( LOG_NOTICE, "AF LENGTH %d", debug_level);
- debug_counter =0;
- }
-#endif
}while (1);
}
{
// DMA割り込みをクリアする。
*pDMA1_IRQ_STATUS = DMA_DONE;
-#if 1
// タスクにSPORT0受信DMAのバッファが埋まったと知らせる。
-// syscall(isig_sem(SEM_SPORT0_RX)); // デバッグとりあえずタスクは殺しておく。
-#else
- int dummy;
-
- dummy = pSPORT0_RX32;
-#endif
+ syscall(isig_sem(SEM_SPORT0_RX)); // デバッグとりあえずタスクは殺しておく。
// ペリフェラルへの書き込みを待つ。
ssync();
- debug_rx_counter++;
- debug_counter+=4;
-
}
/**
// DMA割り込みをクリアする。
*pDMA2_IRQ_STATUS = DMA_DONE;
-#if 1
// タスクにSPORT0送信DMAのバッファが空いたと知らせる。
-// syscall(isig_sem(SEM_SPORT0_TX));
-#else
- *pSPORT0_TX32 = 0;
-#endif
+ syscall(isig_sem(SEM_SPORT0_TX));
// ペリフェラルへの書き込みを待つ。
ssync();
- debug_counter-=2;
- debug_tx_counter++;
}
/**