commit-gnuradio
[Top][All Lists]
Advanced

[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;
 }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]