[Top][All Lists]
[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) {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7349 - in usrp2/trunk/firmware: apps lib,
eb <=