commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r7349 - in usrp2/trunk/firmware: apps lib


From: eb
Subject: [Commit-gnuradio] r7349 - in usrp2/trunk/firmware: apps lib
Date: Fri, 4 Jan 2008 21:02:20 -0700 (MST)

Author: eb
Date: 2008-01-04 21:02:19 -0700 (Fri, 04 Jan 2008)
New Revision: 7349

Added:
   usrp2/trunk/firmware/apps/app_common.c
   usrp2/trunk/firmware/apps/app_common.h
Modified:
   usrp2/trunk/firmware/apps/Makefile.am
   usrp2/trunk/firmware/apps/rx_only.c
   usrp2/trunk/firmware/apps/tx_only.c
   usrp2/trunk/firmware/lib/memory_map.h
   usrp2/trunk/firmware/lib/u2_init.c
Log:
usrp2 f/w work-in-progress

Modified: usrp2/trunk/firmware/apps/Makefile.am
===================================================================
--- usrp2/trunk/firmware/apps/Makefile.am       2008-01-05 04:01:33 UTC (rev 
7348)
+++ usrp2/trunk/firmware/apps/Makefile.am       2008-01-05 04:02:19 UTC (rev 
7349)
@@ -41,3 +41,5 @@
        tx_standalone
 
 
+tx_only_SOURCES = tx_only.c app_common.c
+rx_only_SOURCES = rx_only.c app_common.c

Added: usrp2/trunk/firmware/apps/app_common.c
===================================================================
--- usrp2/trunk/firmware/apps/app_common.c                              (rev 0)
+++ usrp2/trunk/firmware/apps/app_common.c      2008-01-05 04:02:19 UTC (rev 
7349)
@@ -0,0 +1,180 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "app_common.h"
+#include "buffer_pool.h"
+#include "memcpy_wa.h"
+#include "eth_mac.h"
+#include "nonstdio.h"
+#include <string.h>
+
+volatile bool link_is_up = false;      // eth handler sets this
+
+void
+set_reply_hdr(u2_eth_packet_t *reply_pkt, u2_eth_packet_t const *cmd_pkt)
+{
+  reply_pkt->ehdr.dst = cmd_pkt->ehdr.src;
+  reply_pkt->ehdr.ethertype = U2_ETHERTYPE;
+  reply_pkt->ehdr._pad = 0;
+  u2p_set_word0(&reply_pkt->fixed, 0, CONTROL_CHAN);
+  reply_pkt->fixed.timestamp = timer_regs->time;
+}
+
+void
+handle_control_chan_frame(int bufno, u2_eth_packet_t *pkt, size_t len)
+{
+  static unsigned char payload[64] _AL4;
+  static unsigned char reply[sizeof(u2_eth_packet_t) + sizeof(u2_subpkt_t)] 
_AL4;
+  unsigned char *s = &reply[sizeof(u2_eth_packet_t)];
+  size_t reply_len = 0;
+  int   i;
+
+  // FIXME don't copy, we can byte address (read-only) in the buffer
+  // copy 64 bytes of payload into stack buffer
+  memcpy_wordaligned(payload,
+                    (unsigned char *) buffer_ram(bufno) + 
sizeof(u2_eth_packet_t),
+                    sizeof(payload));
+
+  unsigned char *p = payload;
+  int opcode = p[0];
+
+  switch(opcode){
+  case OP_ID:
+    memset(reply, 0, sizeof(reply));
+    set_reply_hdr((u2_eth_packet_t *) reply, pkt);
+    {
+      op_id_reply_t *r = (op_id_reply_t *) s;
+      reply_len = sizeof(u2_eth_packet_t) + sizeof(op_id_reply_t);
+      if (reply_len < 64)
+       reply_len = 64;
+      r->opcode = OP_ID_REPLY;
+      r->len = sizeof(op_id_reply_t);
+      r->rid_mbz = 0;          // FIXME
+      memcpy(&r->addr, eth_mac_addr(), 6);
+      r->hw_rev = 0x0000;      // FIXME
+      for (i = 0; i < sizeof(r->serial_no); i++)
+       r->serial_no[i] = '0';  // FIXME
+
+      // r->fpga_md5sum = ;    // FIXME
+      // r->sw_md5sum = ;      // FIXME
+    }
+
+    // FIXME need to see if ethernet tx is busy
+
+    // copy reply into CPU_TX_BUF
+    memcpy_wordaligned(buffer_ram(CPU_TX_BUF), reply, reply_len);
+
+    bp_send_from_buf(CPU_TX_BUF, PORT_ETH, 1, 0, reply_len / 4);
+    break;
+    
+  case OP_START_RX:
+    start_rx_cmd(&pkt->ehdr.src);
+    break;
+    
+  case OP_STOP_RX:
+    stop_rx_cmd();
+    break;
+    
+  default:
+    break;
+  }
+}
+
+
+/*
+ * Called when an ethernet packet is received.
+ * Return true if we handled it here, otherwise
+ * it'll be passed on to the DSP Tx pipe
+ */
+bool
+eth_pkt_inspector(dbsm_t *sm, int bufno)
+{
+  u2_eth_packet_t pkt;
+  size_t byte_len = (buffer_pool_status->last_line[bufno] - 1) * 4;
+
+  hal_toggle_leds(0x1);
+
+  // inspect rcvd frame and figure out what do do.
+
+  // FIXME don't copy it in
+  // copy first part of frame to stack buffer so we can byte address it
+  memcpy_wordaligned(&pkt, buffer_ram(bufno), sizeof(pkt));
+
+  if (pkt.ehdr.ethertype != U2_ETHERTYPE)
+    return true;       // ignore, probably bogus PAUSE frame from MAC
+
+  int chan = u2p_chan(&pkt.fixed);
+
+  switch (chan){
+  case CONTROL_CHAN:
+    handle_control_chan_frame(bufno, &pkt, byte_len);
+    return true;       // we handled the packet
+    break;
+
+  case 0:
+  default:
+    return false;      // pass it on to Tx DSP
+    break;
+  }
+}
+
+// debugging output on tx pins
+#define LS_MASK  0xE0000
+#define LS_1000  0x80000
+#define LS_100   0x40000
+#define LS_10    0x20000
+
+/*
+ * Called when eth phy state changes (w/ interrupts disabled)
+ */
+void
+link_changed_callback(int speed)
+{
+  int v = 0;
+  switch(speed){
+  case 10:
+    v = LS_10;
+    link_is_up = true;
+    break;
+    
+  case 100:
+    v = LS_100;
+    link_is_up = true;
+    break;
+    
+  case 1000:
+    v = LS_100;
+    link_is_up = true;
+    break;
+
+  default:
+    v = 0;
+    link_is_up = false;
+    break;
+  }
+
+  hal_gpio_set_tx(v, LS_MASK); /* set debug bits on d'board */
+
+  // hal_set_leds(link_is_up ? 0x2 : 0x0, 0x2);
+
+  printf("\neth link changed: speed = %d\n", speed);
+}


Property changes on: usrp2/trunk/firmware/apps/app_common.c
___________________________________________________________________
Name: svn:eol-style
   + native

Added: usrp2/trunk/firmware/apps/app_common.h
===================================================================
--- usrp2/trunk/firmware/apps/app_common.h                              (rev 0)
+++ usrp2/trunk/firmware/apps/app_common.h      2008-01-05 04:02:19 UTC (rev 
7349)
@@ -0,0 +1,53 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef INCLUDED_APP_COMMON_H
+#define INCLUDED_APP_COMMON_H
+
+#include "bool.h"
+#include "usrp2_eth_packet.h"
+#include "dbsm.h"
+#include "memory_map.h"
+#include "hal_io.h"
+#include <stddef.h>
+
+#define CPU_TX_BUF     1       // cpu -> eth
+
+#define        _AL4 __attribute__((aligned (4)))
+
+extern volatile bool link_is_up;       // eth handler sets this
+
+void set_reply_hdr(u2_eth_packet_t *reply_pkt, u2_eth_packet_t const *cmd_pkt);
+void handle_control_chan_frame(int bufno, u2_eth_packet_t *pkt, size_t len);
+
+/*
+ * Called when an ethernet packet is received.
+ * Return true if we handled it here, otherwise
+ * it'll be passed on to the DSP Tx pipe
+ */
+bool eth_pkt_inspector(dbsm_t *sm, int bufno);
+
+void link_changed_callback(int speed);
+
+
+// FIXME move these somewhere else?
+void start_rx_cmd(const u2_mac_addr_t *host);
+void stop_rx_cmd(void);
+
+
+#endif /* INCLUDED_APP_COMMON_H */


Property changes on: usrp2/trunk/firmware/apps/app_common.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: usrp2/trunk/firmware/apps/rx_only.c
===================================================================
--- usrp2/trunk/firmware/apps/rx_only.c 2008-01-05 04:01:33 UTC (rev 7348)
+++ usrp2/trunk/firmware/apps/rx_only.c 2008-01-05 04:02:19 UTC (rev 7349)
@@ -32,13 +32,13 @@
 #include "usrp2_eth_packet.h"
 #include "memcpy_wa.h"
 #include "dbsm.h"
+#include "app_common.h"
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
 
-#define        _AL4 __attribute__((aligned (4)))
 
-#define USE_BUFFER_INTERRUPT   1       // 0 or 1
+#define USE_BUFFER_INTERRUPT   0       // 0 or 1
 
 
 static int timer_delta = MASTER_CLK_RATE/1000; // tick at 1kHz
@@ -52,7 +52,7 @@
  * Buffers 2 and 3 are used to double-buffer the DSP Rx to eth flow
  */
 #define CPU_RX_BUF     0       // eth -> cpu
-#define        CPU_TX_BUF      1       // cpu -> eth
+//#define CPU_TX_BUF   1       // cpu -> eth
 #define        DSP_RX_BUF_0    2       // dsp rx -> eth (double buffer)
 #define        DSP_RX_BUF_1    3       // dsp rx -> eth
 
@@ -73,15 +73,14 @@
 buf_cmd_args_t dsp_rx_recv_args = {
   PORT_DSP,
   DSP_RX_FIRST_LINE,
-  //DSP_RX_FIRST_LINE + DSP_RX_SAMPLES_PER_FRAME + DSP_RX_EXTRA_LINES - 1
-  255
+  BP_LAST_LINE
 };
 
 // send to ETH
 buf_cmd_args_t dsp_rx_send_args = {
   PORT_ETH,
   0,           // starts with ethernet header in line 0
-  DSP_RX_FIRST_LINE + DSP_RX_SAMPLES_PER_FRAME + DSP_RX_EXTRA_LINES - 1
+  0,           // filled in from list_line register
 };
 
 dbsm_t dsp_rx_sm;      // the state machine
@@ -132,8 +131,7 @@
   putstr("\nirq: overrun\n");
 }
 
-
-static void
+void
 start_rx_cmd(const u2_mac_addr_t *host)
 {
   // printf("start_rx_cmd\n");
@@ -175,7 +173,7 @@
 }
 
 
-static void
+void
 stop_rx_cmd(void)
 {
   dsp_rx_regs->clear_state = 1;        // FIXME need to flush cmd queue
@@ -183,104 +181,6 @@
   bp_clear_buf(DSP_RX_BUF_1);
 }
 
-static void
-set_reply_hdr(u2_eth_packet_t *reply_pkt, u2_eth_packet_t const *cmd_pkt)
-{
-  reply_pkt->ehdr.dst = cmd_pkt->ehdr.src;
-  reply_pkt->ehdr.ethertype = U2_ETHERTYPE;
-  reply_pkt->ehdr._pad = 0;
-  u2p_set_word0(&reply_pkt->fixed, 0, CONTROL_CHAN);
-  reply_pkt->fixed.timestamp = timer_regs->time;
-}
-
-static void
-handle_control_chan_frame(int bufno, u2_eth_packet_t *pkt, size_t len)
-{
-  static unsigned char payload[64] _AL4;
-  static unsigned char reply[sizeof(u2_eth_packet_t) + sizeof(u2_subpkt_t)] 
_AL4;
-  unsigned char *s = &reply[sizeof(u2_eth_packet_t)];
-  size_t reply_len = 0;
-  int   i;
-
-  // FIXME copy as needed...
-  // copy 64 bytes of payload into stack buffer
-  memcpy_wordaligned(payload,
-                    (unsigned char *) buffer_ram(bufno) + 
sizeof(u2_eth_packet_t),
-                    sizeof(payload));
-
-  unsigned char *p = payload;
-  int opcode = p[0];
-
-  switch(opcode){
-  case OP_ID:
-    memset(reply, 0, sizeof(reply));
-    set_reply_hdr((u2_eth_packet_t *) reply, pkt);
-    {
-      op_id_reply_t *r = (op_id_reply_t *) s;
-      reply_len = sizeof(u2_eth_packet_t) + sizeof(op_id_reply_t);
-      if (reply_len < 64)
-       reply_len = 64;
-      r->opcode = OP_ID_REPLY;
-      r->len = sizeof(op_id_reply_t);
-      r->rid_mbz = 0;          // FIXME
-      memcpy(&r->addr, eth_mac_addr(), 6);
-      r->hw_rev = 0x0000;      // FIXME
-      for (i = 0; i < sizeof(r->serial_no); i++)
-       r->serial_no[i] = '0';  // FIXME
-
-      // r->fpga_md5sum = ;    // FIXME
-      // r->sw_md5sum = ;      // FIXME
-    }
-
-    // FIXME need to see if ethernet tx is busy
-
-    // copy reply into CPU_TX_BUF
-    memcpy_wordaligned(buffer_ram(CPU_TX_BUF), reply, reply_len);
-
-    bp_send_from_buf(CPU_TX_BUF, PORT_ETH, 1, 0, reply_len / 4);
-    break;
-    
-  case OP_START_RX:
-    start_rx_cmd(&pkt->ehdr.src);
-    break;
-    
-  case OP_STOP_RX:
-    stop_rx_cmd();
-    break;
-    
-  default:
-    break;
-  }
-}
-
-static void
-handle_rcvd_eth_frame(int bufno)
-{
-  u2_eth_packet_t pkt;
-  size_t byte_len = (buffer_pool_status->last_line[bufno] - 1) * 4;
-
-  hal_toggle_leds(0x1);
-
-  // inspect rcvd frame and figure out what do do.
-
-  // copy first part of frame to stack buffer so we can byte address it
-  memcpy_wordaligned(&pkt, buffer_ram(bufno), sizeof(pkt));
-
-  if (pkt.ehdr.ethertype != U2_ETHERTYPE)
-    return;            // ignore, probably bogus PAUSE frame from MAC
-
-  int chan = u2p_chan(&pkt.fixed);
-  switch (chan){
-  case CONTROL_CHAN:
-    handle_control_chan_frame(bufno, &pkt, byte_len);
-    break;
-
-  case 0:      // to Tx DSP
-  default:
-    break;
-  }
-}
-
 void
 buffer_irq_handler(unsigned irq)
 {
@@ -300,7 +200,7 @@
 
   if (status & BPS_DONE(CPU_RX_BUF)){  // we've rcvd a frame from ethernet
     bp_clear_buf(CPU_RX_BUF);
-    handle_rcvd_eth_frame(CPU_RX_BUF);
+    eth_pkt_inspector(0, CPU_RX_BUF);
     bp_receive_to_buf(CPU_RX_BUF, PORT_ETH, 1, 0, 255);
   }
 
@@ -360,47 +260,3 @@
     // FIXME perhaps handle low-pri stuff here
   }
 }
-
-// ----------------------------------------------------------------
-
-// debugging output on tx pins
-#define LS_MASK  0xE0000
-#define LS_1000  0x80000
-#define LS_100   0x40000
-#define LS_10    0x20000
-
-/*
- * Called when eth phy state changes (w/ interrupts disabled)
- */
-void
-link_changed_callback(int speed)
-{
-  int v = 0;
-  switch(speed){
-  case 10:
-    v = LS_10;
-    link_is_up = true;
-    break;
-    
-  case 100:
-    v = LS_100;
-    link_is_up = true;
-    break;
-    
-  case 1000:
-    v = LS_100;
-    link_is_up = true;
-    break;
-
-  default:
-    v = 0;
-    link_is_up = false;
-    break;
-  }
-
-  hal_gpio_set_tx(v, LS_MASK); /* set debug bits on d'board */
-
-  // hal_set_leds(link_is_up ? 0x2 : 0x0, 0x2);
-
-  printf("\neth link changed: speed = %d\n", speed);
-}

Modified: usrp2/trunk/firmware/apps/tx_only.c
===================================================================
--- usrp2/trunk/firmware/apps/tx_only.c 2008-01-05 04:01:33 UTC (rev 7348)
+++ usrp2/trunk/firmware/apps/tx_only.c 2008-01-05 04:02:19 UTC (rev 7349)
@@ -32,15 +32,14 @@
 #include "usrp2_eth_packet.h"
 #include "memcpy_wa.h"
 #include "dbsm.h"
+#include "app_common.h"
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
 
-#define        _AL4 __attribute__((aligned (4)))
+#define USE_BUFFER_INTERRUPT   0       // 0 or 1
 
-#define USE_BUFFER_INTERRUPT   1       // 0 or 1
 
-
 static int timer_delta = MASTER_CLK_RATE/1000; // tick at 1kHz
 
 /*
@@ -52,7 +51,7 @@
  * Buffers 4 and 5 are used to double-buffer the eth to DSP Tx  eth flow
  */
 //#define CPU_RX_BUF   0       // eth -> cpu
-#define CPU_TX_BUF     1       // cpu -> eth
+//#define CPU_TX_BUF   1       // cpu -> eth
 
 #define        DSP_RX_BUF_0    2       // dsp rx -> eth (double buffer)
 #define        DSP_RX_BUF_1    3       // dsp rx -> eth
@@ -66,9 +65,6 @@
  * ================================================================
  */
 
-#define LAST_LINE      255     // last line in buffer
-
-
 // 4 lines of ethernet hdr + 1 line (word0)
 // DSP Rx writes timestamp followed by nlines_per_frame of samples
 #define DSP_RX_FIRST_LINE                5
@@ -79,7 +75,7 @@
 buf_cmd_args_t dsp_rx_recv_args = {
   PORT_DSP,
   DSP_RX_FIRST_LINE,
-  LAST_LINE
+  BP_LAST_LINE
 };
 
 // send to ethernet
@@ -108,7 +104,7 @@
 buf_cmd_args_t dsp_tx_recv_args = {
   PORT_ETH,
   0,
-  LAST_LINE
+  BP_NLINES - 1                // last line
 };
 
 // send to DSP Tx
@@ -128,10 +124,6 @@
 u2_mac_addr_t host_mac_addr;
 
 
-void link_changed_callback(int speed);
-static volatile bool link_is_up = false;       // eth handler sets this
-
-
 void
 timer_irq_handler(unsigned irq)
 {
@@ -167,54 +159,14 @@
 }
 
 
-static void
+void
 start_rx_cmd(const u2_mac_addr_t *host)
 {
-  // printf("start_rx_cmd\n");
-  // hal_toggle_leds(0x2);
-
-  host_mac_addr = *host;       // remember who we're sending to
-
-  /*
-   * Construct  ethernet header and word0 and preload into two buffers
-   */
-  u2_eth_packet_t      pkt;
-  memset(&pkt, 0, sizeof(pkt));
-  pkt.ehdr.dst = *host;
-  pkt.ehdr.ethertype = U2_ETHERTYPE;
-  u2p_set_word0(&pkt.fixed, 0, 0);
-  // DSP RX will fill in timestamp
-
-  memcpy_wordaligned(buffer_ram(DSP_RX_BUF_0), &pkt, sizeof(pkt));
-  memcpy_wordaligned(buffer_ram(DSP_RX_BUF_1), &pkt, sizeof(pkt));
-
-
-  // setup RX DSP regs
-  dsp_rx_regs->clear_state = 1;                // reset
-  dsp_rx_regs->freq = 0;
-  dsp_rx_regs->scale_iq = (1 << 16) | 1;
-  dsp_rx_regs->decim_rate = 63;        // register gets N - 1
-
-  uint32_t cmd = MK_RX_CMD(10000 * DSP_RX_SAMPLES_PER_FRAME, 
DSP_RX_SAMPLES_PER_FRAME);
-  // printf("rx_command = "); puthex32_nl(cmd);
-  dsp_rx_regs->rx_command = cmd;
-
-  // kick off the state machine
-  dbsm_start(&dsp_rx_sm);
-
-  // dsp_rx_regs->rx_time = 1; // timer_regs->time + 10000;
-  dsp_rx_regs->rx_time = T_NOW;                // start NOW!
-
-  // FIXME need to arrange to add additional stuff to cmd queue
 }
 
-
-static void
+void
 stop_rx_cmd(void)
 {
-  dsp_rx_regs->clear_state = 1;        // FIXME need to flush cmd queue
-  bp_clear_buf(DSP_RX_BUF_0);
-  bp_clear_buf(DSP_RX_BUF_1);
 }
 
 static void
@@ -244,113 +196,6 @@
 #endif
 
 
-static void
-set_reply_hdr(u2_eth_packet_t *reply_pkt, u2_eth_packet_t const *cmd_pkt)
-{
-  reply_pkt->ehdr.dst = cmd_pkt->ehdr.src;
-  reply_pkt->ehdr.ethertype = U2_ETHERTYPE;
-  reply_pkt->ehdr._pad = 0;
-  u2p_set_word0(&reply_pkt->fixed, 0, CONTROL_CHAN);
-  reply_pkt->fixed.timestamp = timer_regs->time;
-}
-
-static void
-handle_control_chan_frame(int bufno, u2_eth_packet_t *pkt, size_t len)
-{
-  static unsigned char payload[64] _AL4;
-  static unsigned char reply[sizeof(u2_eth_packet_t) + sizeof(u2_subpkt_t)] 
_AL4;
-  unsigned char *s = &reply[sizeof(u2_eth_packet_t)];
-  size_t reply_len = 0;
-  int   i;
-
-  // FIXME don't copy, we can byte address (read-only) in the buffer
-  // copy 64 bytes of payload into stack buffer
-  memcpy_wordaligned(payload,
-                    (unsigned char *) buffer_ram(bufno) + 
sizeof(u2_eth_packet_t),
-                    sizeof(payload));
-
-  unsigned char *p = payload;
-  int opcode = p[0];
-
-  switch(opcode){
-  case OP_ID:
-    memset(reply, 0, sizeof(reply));
-    set_reply_hdr((u2_eth_packet_t *) reply, pkt);
-    {
-      op_id_reply_t *r = (op_id_reply_t *) s;
-      reply_len = sizeof(u2_eth_packet_t) + sizeof(op_id_reply_t);
-      if (reply_len < 64)
-       reply_len = 64;
-      r->opcode = OP_ID_REPLY;
-      r->len = sizeof(op_id_reply_t);
-      r->rid_mbz = 0;          // FIXME
-      memcpy(&r->addr, eth_mac_addr(), 6);
-      r->hw_rev = 0x0000;      // FIXME
-      for (i = 0; i < sizeof(r->serial_no); i++)
-       r->serial_no[i] = '0';  // FIXME
-
-      // r->fpga_md5sum = ;    // FIXME
-      // r->sw_md5sum = ;      // FIXME
-    }
-
-    // FIXME need to see if ethernet tx is busy
-
-    // copy reply into CPU_TX_BUF
-    memcpy_wordaligned(buffer_ram(CPU_TX_BUF), reply, reply_len);
-
-    bp_send_from_buf(CPU_TX_BUF, PORT_ETH, 1, 0, reply_len / 4);
-    break;
-    
-  case OP_START_RX:
-    start_rx_cmd(&pkt->ehdr.src);
-    break;
-    
-  case OP_STOP_RX:
-    stop_rx_cmd();
-    break;
-    
-  default:
-    break;
-  }
-}
-
-
-/*
- * Called when an ethernet packet is received.
- * Return true if we handled it here, otherwise
- * it'll be passed on to the DSP Tx pipe
- */
-bool
-eth_pkt_inspector(dbsm_t *sm, int bufno)
-{
-  u2_eth_packet_t pkt;
-  size_t byte_len = (buffer_pool_status->last_line[bufno] - 1) * 4;
-
-  hal_toggle_leds(0x1);
-
-  // inspect rcvd frame and figure out what do do.
-
-  // FIXME don't copy it in
-  // copy first part of frame to stack buffer so we can byte address it
-  memcpy_wordaligned(&pkt, buffer_ram(bufno), sizeof(pkt));
-
-  if (pkt.ehdr.ethertype != U2_ETHERTYPE)
-    return true;       // ignore, probably bogus PAUSE frame from MAC
-
-  int chan = u2p_chan(&pkt.fixed);
-  switch (chan){
-  case CONTROL_CHAN:
-    handle_control_chan_frame(bufno, &pkt, byte_len);
-    return true;       // we handled the packet
-    break;
-
-  case 0:
-  default:
-    return false;      // pass it on to Tx DSP
-    break;
-  }
-}
-
 void
 buffer_irq_handler(unsigned irq)
 {
@@ -415,46 +260,3 @@
   }
 }
 
-// ----------------------------------------------------------------
-
-// debugging output on tx pins
-#define LS_MASK  0xE0000
-#define LS_1000  0x80000
-#define LS_100   0x40000
-#define LS_10    0x20000
-
-/*
- * Called when eth phy state changes (w/ interrupts disabled)
- */
-void
-link_changed_callback(int speed)
-{
-  int v = 0;
-  switch(speed){
-  case 10:
-    v = LS_10;
-    link_is_up = true;
-    break;
-    
-  case 100:
-    v = LS_100;
-    link_is_up = true;
-    break;
-    
-  case 1000:
-    v = LS_100;
-    link_is_up = true;
-    break;
-
-  default:
-    v = 0;
-    link_is_up = false;
-    break;
-  }
-
-  hal_gpio_set_tx(v, LS_MASK); /* set debug bits on d'board */
-
-  // hal_set_leds(link_is_up ? 0x2 : 0x0, 0x2);
-
-  printf("\neth link changed: speed = %d\n", speed);
-}

Modified: usrp2/trunk/firmware/lib/memory_map.h
===================================================================
--- usrp2/trunk/firmware/lib/memory_map.h       2008-01-05 04:01:33 UTC (rev 
7348)
+++ usrp2/trunk/firmware/lib/memory_map.h       2008-01-05 04:02:19 UTC (rev 
7349)
@@ -47,7 +47,8 @@
 #define BUFFER_POOL_RAM_BASE 0x4000
 
 #define        NBUFFERS                8
-#define BP_NLINES         0x0200  // number of 32-bit lines in a buffer
+#define BP_NLINES         0x0200       // number of 32-bit lines in a buffer
+#define BP_LAST_LINE   (BP_NLINES - 1) // last line in a buffer
 
 #define buffer_pool_ram \
   ((uint32_t *) BUFFER_POOL_RAM_BASE)

Modified: usrp2/trunk/firmware/lib/u2_init.c
===================================================================
--- usrp2/trunk/firmware/lib/u2_init.c  2008-01-05 04:01:33 UTC (rev 7348)
+++ usrp2/trunk/firmware/lib/u2_init.c  2008-01-05 04:02:19 UTC (rev 7349)
@@ -34,8 +34,6 @@
 bool
 u2_init(void)
 {
-  int i;
-
   // Set GPIOs to inputs
   hal_gpio_set_rx_mode(15, 0, GPIOM_INPUT);
   hal_gpio_set_tx_mode(15, 0, GPIOM_INPUT);
@@ -67,8 +65,9 @@
 #define LOCK_NONE 1
 #define THEY_LOCK_TO_ME 0
 
-  volatile int *pps_ctrl = 0xF800;
+  volatile int *pps_ctrl = (int *) 0xF800;
   *pps_ctrl = 4;
+  //*pps_ctrl = 0x1;   // we're the master; tick source is internal
 
   // if(I WANT TO LOCK TO A REFERENCE CLOCK) 
   if(LOCK_TO_EXT_REF || LOCK_TO_MIMO_REF) {





reply via email to

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