[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r7982 - usrp2/trunk/firmware/apps
From: |
eb |
Subject: |
[Commit-gnuradio] r7982 - usrp2/trunk/firmware/apps |
Date: |
Sun, 9 Mar 2008 01:08:40 -0700 (MST) |
Author: eb
Date: 2008-03-09 01:08:39 -0700 (Sun, 09 Mar 2008)
New Revision: 7982
Modified:
usrp2/trunk/firmware/apps/sd_gentest.c
Log:
working serdes gen and test
Modified: usrp2/trunk/firmware/apps/sd_gentest.c
===================================================================
--- usrp2/trunk/firmware/apps/sd_gentest.c 2008-03-09 07:01:06 UTC (rev
7981)
+++ usrp2/trunk/firmware/apps/sd_gentest.c 2008-03-09 08:08:39 UTC (rev
7982)
@@ -60,7 +60,7 @@
{
int i = 0;
for (i = 0; i < BP_NLINES; i++){
- buf[i] = (i << 16) | i;
+ buf[i] = ((2*i + 0) << 16) | (2*i+1);
}
}
@@ -70,7 +70,7 @@
bool ok = true;
int i = 0;
for (i = 0; i < nlines; i++){
- int expected = (i << 16) | i;
+ int expected = ((2*i + 0) << 16) | (2*i+1);
if (buf[i] != expected){
ok = false;
printf("buf[%d] = 0x%x expected = 0x%x\n", i, buf[i], expected);
@@ -98,11 +98,15 @@
u2_init();
// setup tx gpio bits for GPIOM_FPGA_1 -- fpga debug output
- hal_gpio_set_tx_mode(15, 0, GPIOM_FPGA_1);
- hal_gpio_set_rx_mode(15, 0, GPIOM_FPGA_1);
+ hal_gpio_set_tx_mode(15, 0, GPIOM_FPGA_0);
+ hal_gpio_set_rx_mode(15, 0, GPIOM_FPGA_0);
putstr("\nsd_gentest\n");
+ // Set up serdes
+ //output_regs->serdes_ctrl = (SERDES_ENABLE | SERDES_RXEN | SERDES_LOOPEN);
+ output_regs->serdes_ctrl = (SERDES_ENABLE | SERDES_RXEN);
+
init_packets();
// pic_register_handler(IRQ_TIMER, timer_irq_handler);
@@ -113,16 +117,25 @@
// start a receive from sd
zero_buffer(SERDES_RX_BUF);
bp_receive_to_buf(SERDES_RX_BUF, PORT_SERDES, 1, 0, BP_LAST_LINE);
- hal_set_timeout(timer_delta);
// 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 counter = 0;
+
+#define EXPECTING_PKT() ((counter & 0x1) == 0)
+#define SEND_PKT() ((counter & 0x1) != 0)
+
+ bool got_packet = false;
+
while(1){
uint32_t status = buffer_pool_status->status;
if (status & (BPS_DONE(SERDES_RX_BUF))){
bp_clear_buf(SERDES_RX_BUF);
+ got_packet = true;
hal_toggle_leds(0x2);
@@ -131,47 +144,57 @@
bool ok = check_packet(buffer_ram(SERDES_RX_BUF), last_line);
if (ok)
- putchar('.');
+ putchar('r');
else
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);
- hal_set_timeout(timer_delta);
}
if (status & (BPS_ERROR(SERDES_RX_BUF))){
bp_clear_buf(SERDES_RX_BUF);
+ got_packet = true;
+
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);
- hal_set_timeout(timer_delta);
}
if (status & (BPS_DONE(SERDES_TX_BUF))){
bp_clear_buf(SERDES_TX_BUF);
-
+ putchar('t');
hal_toggle_leds(0x1);
-
- // send another packet
- bp_send_from_buf(SERDES_TX_BUF, PORT_SERDES, 1, 0, NLINES_PER_PKT);
}
if (status & BPS_ERROR(SERDES_TX_BUF)){
bp_clear_buf(SERDES_TX_BUF);
- putchar('e');
- bp_send_from_buf(SERDES_TX_BUF, PORT_SERDES, 1, 0, NLINES_PER_PKT);
+ putchar('X');
}
+#if 1
int pending = pic_regs->pending;
- if (pending & PIC_TIMER_INT){ // are we missing a packet?
+ if (pending & PIC_TIMER_INT){
hal_set_timeout(timer_delta);
+
+ if (EXPECTING_PKT()){
+ if (!got_packet)
+ putchar('T');
+ got_packet = false;
+ }
+
+ if (SEND_PKT()){
+ if (status & BPS_IDLE(SERDES_TX_BUF))
+ bp_send_from_buf(SERDES_TX_BUF, PORT_SERDES, 1, 0, NLINES_PER_PKT);
+ }
+ counter++;
+
pic_regs->pending = PIC_TIMER_INT; // clear pending interrupt
- putchar('T');
}
+#endif
}
return 1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7982 - usrp2/trunk/firmware/apps,
eb <=