[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r8521 - usrp2/trunk/firmware/apps
From: |
matt |
Subject: |
[Commit-gnuradio] r8521 - usrp2/trunk/firmware/apps |
Date: |
Wed, 28 May 2008 18:28:20 -0600 (MDT) |
Author: matt
Date: 2008-05-28 18:28:16 -0600 (Wed, 28 May 2008)
New Revision: 8521
Modified:
usrp2/trunk/firmware/apps/sd_bounce.c
usrp2/trunk/firmware/apps/sd_gentest.c
Log:
mimo testing updates from a while ago
Modified: usrp2/trunk/firmware/apps/sd_bounce.c
===================================================================
--- usrp2/trunk/firmware/apps/sd_bounce.c 2008-05-29 00:27:12 UTC (rev
8520)
+++ usrp2/trunk/firmware/apps/sd_bounce.c 2008-05-29 00:28:16 UTC (rev
8521)
@@ -94,13 +94,23 @@
hal_toggle_leds(0x2);
int last_line = buffer_pool_status->last_line[buf_this];
+
+ /*
bool ok = check_packet(buffer_ram(buf_this), last_line);
-
+ static int good = 0;
+ static int bad = 0;
+
if (ok)
- putchar('r');
+ good++;
else
- putchar('P');
+ bad++;
+ if(good+bad == 10000) {
+ printf("Good %d\tBad %d\n",good,bad);
+ good = 0;
+ bad = 0;
+ }
+ */
return false;
}
@@ -122,8 +132,8 @@
// if(I WANT TO LOCK TO A REFERENCE CLOCK)
// Reg 8, Charge pump on, dig lock det, positive PFD, 47
- ad9510_write_reg(0x08, 0x47);
- ad9510_write_reg(0x5A, 0x01); // Update Regs
+ //ad9510_write_reg(0x08, 0x47);
+ //ad9510_write_reg(0x5A, 0x01); // Update Regs
// if (LOCK_TO_MIMO_REF)
// Turn on ref output and choose the MIMO connector
Modified: usrp2/trunk/firmware/apps/sd_gentest.c
===================================================================
--- usrp2/trunk/firmware/apps/sd_gentest.c 2008-05-29 00:27:12 UTC (rev
8520)
+++ usrp2/trunk/firmware/apps/sd_gentest.c 2008-05-29 00:28:16 UTC (rev
8521)
@@ -31,6 +31,7 @@
#include <stdlib.h>
#include <string.h>
#include <ad9510.h>
+#include <mdelay.h>
// ----------------------------------------------------------------
@@ -46,7 +47,8 @@
// ----------------------------------------------------------------
-static int timer_delta = (int)(MASTER_CLK_RATE * 100e-6);
+//static int timer_delta = (int)(MASTER_CLK_RATE * 100e-6);
+static int timer_delta = 1000000; // .01 second
void
timer_irq_handler(unsigned irq)
@@ -100,9 +102,9 @@
// Reg 8, Charge pump on, dig lock det, positive PFD, 47
- ad9510_write_reg(0x08, 0x47);
+ //ad9510_write_reg(0x08, 0x47);
// turn on ref input and choose the SMA
- output_regs->clk_ctrl = 0x14;
+ //output_regs->clk_ctrl = 0x14;
// provide a clock for the serdes (THEY_LOCK_TO_ME)
ad9510_write_reg(0x3E, 0x00); // Turn on output 2 (clk_exp_out), normal
levels
@@ -135,9 +137,19 @@
// fire off the first packet
bp_send_from_buf(SERDES_TX_BUF, PORT_SERDES, 1, 0, NLINES_PER_PKT);
hal_set_timeout(timer_delta);
+ int ready_to_send = 0;
-
int counter = 0;
+ int sent = 1;
+ int txerr = 0;
+ int rxerr = 0;
+ int rcvd = 0;
+ int rxcrc = 0;
+ int sent_acc = 0;
+ int txerr_acc = 0;
+ int rxerr_acc = 0;
+ int rcvd_acc = 0;
+ int rxcrc_acc = 0;
#define EXPECTING_PKT() ((counter & 0x1) == 0)
#define SEND_PKT() ((counter & 0x1) != 0)
@@ -151,17 +163,21 @@
bp_clear_buf(SERDES_RX_BUF);
got_packet = true;
- hal_toggle_leds(0x2);
+ //hal_toggle_leds(0x2);
// check packet
int last_line = buffer_pool_status->last_line[SERDES_RX_BUF]-1;
bool ok = check_packet(buffer_ram(SERDES_RX_BUF), last_line);
- if (ok)
- putchar('r');
- else
- putchar('P');
-
+ if (ok) {
+ rcvd++;
+ //putchar('r');
+ }
+ else {
+ rcvd++;
+ rxcrc++;
+ //putchar('P');
+ }
// start a receive from sd
zero_buffer(SERDES_RX_BUF);
bp_receive_to_buf(SERDES_RX_BUF, PORT_SERDES, 1, 0, BP_LAST_LINE);
@@ -170,9 +186,10 @@
if (status & (BPS_ERROR(SERDES_RX_BUF))){
bp_clear_buf(SERDES_RX_BUF);
got_packet = true;
+ rcvd++;
+ rxerr++;
+ //putchar('E');
- putchar('E');
-
// start a receive from sd
zero_buffer(SERDES_RX_BUF);
bp_receive_to_buf(SERDES_RX_BUF, PORT_SERDES, 1, 0, BP_LAST_LINE);
@@ -180,21 +197,58 @@
if (status & (BPS_DONE(SERDES_TX_BUF))){
bp_clear_buf(SERDES_TX_BUF);
- putchar('t');
- hal_toggle_leds(0x1);
+ //putchar('t');
+ bp_send_from_buf(SERDES_TX_BUF, PORT_SERDES, 1, 0, NLINES_PER_PKT);
+ //mdelay(1);
+ int i;
+ for (i = 0; i < 50; i++){
+ asm volatile ("or r0, r0, r0\n\
+ or r0, r0, r0\n \
+ or r0, r0, r0\n \
+ or r0, r0, r0\n \
+ or r0, r0, r0\n \
+ or r0, r0, r0\n \
+ or r0, r0, r0\n");
+ }
+ sent ++;
+ ready_to_send = 1;
+ //hal_toggle_leds(0x1);
}
if (status & BPS_ERROR(SERDES_TX_BUF)){
bp_clear_buf(SERDES_TX_BUF);
- putchar('X');
+ sent++;
+ txerr++;
+ ready_to_send = 1;
+ //putchar('X');
}
-#if 1
+ if(sent >=1000) {
+ printf("Status\tSENT %d\tTXERR %d\t",sent,txerr);
+ printf("RX %d\tERR %d\tCRC %d\tMISSED %d\n",rcvd, rxerr, rxcrc,
sent-rcvd);
+ sent_acc += sent; sent = 0;
+ txerr_acc += txerr; txerr = 0;
+ rcvd_acc += rcvd; rcvd = 0;
+ rxerr_acc += rxerr; rxerr = 0;
+ rxcrc_acc += rxcrc; rxcrc = 0;
+ }
+
+ if(sent_acc >=10000) {
+ printf("\nOverall\tSENT %d\tTXERR %d\t",sent_acc,txerr_acc);
+ printf("RX %d\tERR %d\tCRC %d\tMISSED %d\n",rcvd_acc, rxerr_acc,
rxcrc_acc, sent_acc-rcvd_acc);
+ sent_acc = 0;
+ txerr_acc = 0;
+ rcvd_acc = 0;
+ rxerr_acc = 0;
+ rxcrc_acc = 0;
+ }
+#if 0
int pending = pic_regs->pending;
if (pending & PIC_TIMER_INT){
hal_set_timeout(timer_delta);
-
- if (EXPECTING_PKT()){
+
+ /*
+ if (EXPECTING_PKT()){
if (!got_packet)
putchar('T');
got_packet = false;
@@ -205,11 +259,19 @@
bp_send_from_buf(SERDES_TX_BUF, PORT_SERDES, 1, 0, NLINES_PER_PKT);
}
counter++;
+ */
+ putchar('T');
+ if(ready_to_send) {
+ bp_send_from_buf(SERDES_TX_BUF, PORT_SERDES, 1, 0, NLINES_PER_PKT);
+ counter++;
+ ready_to_send = 0;
+ }
+
pic_regs->pending = PIC_TIMER_INT; // clear pending interrupt
}
#endif
}
-
+
return 1;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r8521 - usrp2/trunk/firmware/apps,
matt <=