commit-gnuradio
[Top][All Lists]
Advanced

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

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


From: eb
Subject: [Commit-gnuradio] r7103 - in usrp2/trunk/firmware: apps lib
Date: Mon, 10 Dec 2007 20:52:02 -0700 (MST)

Author: eb
Date: 2007-12-10 20:52:02 -0700 (Mon, 10 Dec 2007)
New Revision: 7103

Modified:
   usrp2/trunk/firmware/apps/blink_leds2.c
   usrp2/trunk/firmware/apps/gen_eth_packets.c
   usrp2/trunk/firmware/lib/eth_mac.c
   usrp2/trunk/firmware/lib/hal_io.c
   usrp2/trunk/firmware/lib/hal_io.h
   usrp2/trunk/firmware/lib/u2_init.c
Log:
src mac address insertion is now working

Modified: usrp2/trunk/firmware/apps/blink_leds2.c
===================================================================
--- usrp2/trunk/firmware/apps/blink_leds2.c     2007-12-11 01:48:34 UTC (rev 
7102)
+++ usrp2/trunk/firmware/apps/blink_leds2.c     2007-12-11 03:52:02 UTC (rev 
7103)
@@ -23,17 +23,15 @@
 #include "pic.h"
 
 
-// #define DELTA_T  50000000           // 0.5s (10ns per tick)
-#define DELTA_T  500                   // 5 us (10ns per tick)
+#define DELTA_T  (MASTER_CLK_RATE/2)   // 0.5s (10ns per tick)
+//#define DELTA_T  500                 // 5 us (10ns per tick)
 
-static int led_state_1 = 0;
-volatile static int led_state_2 = 0;
 
 void
 timer_handler(unsigned irq)
 {
   hal_set_timeout(DELTA_T);    // schedule next timeout
-  led_state_2 ^= 0x2;
+  hal_toggle_leds(0x2);
 }
 
 int
@@ -46,8 +44,7 @@
   hal_set_timeout(DELTA_T);    // schedule next timeout
 
   while(1){
-    led_state_1 ^= 0x1;
-    output_regs->leds = led_state_1 | led_state_2;
+    hal_toggle_leds(0x1);
   }
 
   return 0;

Modified: usrp2/trunk/firmware/apps/gen_eth_packets.c
===================================================================
--- usrp2/trunk/firmware/apps/gen_eth_packets.c 2007-12-11 01:48:34 UTC (rev 
7102)
+++ usrp2/trunk/firmware/apps/gen_eth_packets.c 2007-12-11 03:52:02 UTC (rev 
7103)
@@ -93,6 +93,8 @@
 
   hal_gpio_set_tx(v, LS_MASK); /* set debug bits on d'board */
 
+  hal_set_leds(link_is_up ? 0x2 : 0x0, 0x2);
+
   putstr("\neth link changed: speed = ");
   puthex16_nl(speed);
 }
@@ -136,17 +138,18 @@
 
   for (i = 0; i < 6; i++){
     pkt.ehdr.dst_addr[i] = dst_mac_addr[i];
-    pkt.ehdr.src_addr[i] = 0;                  // filled in by mac
+    pkt.ehdr.src_addr[i] = 0x44;               // filled in by mac
   }
   pkt.ehdr.ethertype = U2_ETHERTYPE;
+  pkt.ehdr._pad = 0x5555;
+  pkt.payload.word0 = 0x01234567;
+  pkt.payload.timestamp = 0xffffffff;
 
   // fill ALL buffers for debugging
   for (i = 0; i < 8; i++)
     init_packet((void *)buffer_ram(i), &pkt, i);
 }
 
-static int led_counter = 0;
-
 int
 main(void)
 {
@@ -159,7 +162,7 @@
   putstr("\ngen_eth_packets\n");
   
   // Control LEDs
-  output_regs->leds = 0x00;
+  hal_set_leds(0x0, 0x3);
 
   init_packets();
 
@@ -187,7 +190,7 @@
        ;
       bp_clear_buf(0);
 
-      output_regs->leds = ((++led_counter) & 0x1) | (link_is_up ? 0x2 : 0x0);
+      hal_toggle_leds(0x1);
     }
   }
 

Modified: usrp2/trunk/firmware/lib/eth_mac.c
===================================================================
--- usrp2/trunk/firmware/lib/eth_mac.c  2007-12-11 01:48:34 UTC (rev 7102)
+++ usrp2/trunk/firmware/lib/eth_mac.c  2007-12-11 03:52:02 UTC (rev 7103)
@@ -20,7 +20,9 @@
 #include "memory_map.h"
 #include "bool.h"
 #include "eth_phy.h"   // for simulation constants
+#include "mdelay.h"
 
+
 #define PHY_ADDR 1
 
 void 
@@ -38,20 +40,26 @@
   eth_mac->miimoder = 16;      // divider from CPU clock (33MHz / 16 ~= 2MHz)
 
   // tell mac our source address and enable automatic insertion on Tx.
+  eth_mac->mac_tx_add_prom_wr = 0;     // just in case
   for (i = 0; i < 6; i++){
     eth_mac->mac_tx_add_prom_add = i;
     eth_mac->mac_tx_add_prom_data = src_mac_addr[i];
     eth_mac->mac_tx_add_prom_wr = 1;
+    mdelay(1);
     eth_mac->mac_tx_add_prom_wr = 0;
+    mdelay(1);
   }
   eth_mac->mac_tx_add_en = 1;  // overwrite pkt src addr field with this stuff
 
   // set up receive destination address filter
+  eth_mac->mac_rx_add_prom_wr = 0;     // just in case
   for (i = 0; i < 6; i++){
     eth_mac->mac_rx_add_prom_add = i;
     eth_mac->mac_rx_add_prom_data = src_mac_addr[i];
     eth_mac->mac_rx_add_prom_wr = 1;
+    mdelay(1);
     eth_mac->mac_rx_add_prom_wr = 0;
+    mdelay(1);
   }
   // eth_mac->mac_rx_add_chk_en = 1;  // FIXME enable when everything's working
 

Modified: usrp2/trunk/firmware/lib/hal_io.c
===================================================================
--- usrp2/trunk/firmware/lib/hal_io.c   2007-12-11 01:48:34 UTC (rev 7102)
+++ usrp2/trunk/firmware/lib/hal_io.c   2007-12-11 03:52:02 UTC (rev 7103)
@@ -80,6 +80,27 @@
   hal_restore_ints(ei);
 }
 
+static unsigned long leds_shadow = 0;
+
+void 
+hal_set_leds(int value, int mask)
+{
+  int ei = hal_disable_ints();
+  leds_shadow = (leds_shadow & ~mask) | (value & mask);
+  output_regs->leds = leds_shadow;
+  hal_restore_ints(ei);
+}
+
+void 
+hal_toggle_leds(int mask)
+{
+  int ei = hal_disable_ints();
+  leds_shadow ^= mask;
+  output_regs->leds = leds_shadow;
+  hal_restore_ints(ei);
+}
+
+
 // ================================================================
 //                             primitives
 // ================================================================

Modified: usrp2/trunk/firmware/lib/hal_io.h
===================================================================
--- usrp2/trunk/firmware/lib/hal_io.h   2007-12-11 01:48:34 UTC (rev 7102)
+++ usrp2/trunk/firmware/lib/hal_io.h   2007-12-11 03:52:02 UTC (rev 7103)
@@ -31,6 +31,10 @@
 void hal_gpio_set_tx(int value, int mask);
 void hal_gpio_set_rx(int value, int mask);
 
+void hal_set_leds(int value, int mask);
+void hal_toggle_leds(int mask);
+
+
 static inline void
 hal_set_timeout(int delta_ticks)
 {

Modified: usrp2/trunk/firmware/lib/u2_init.c
===================================================================
--- usrp2/trunk/firmware/lib/u2_init.c  2007-12-11 01:48:34 UTC (rev 7102)
+++ usrp2/trunk/firmware/lib/u2_init.c  2007-12-11 03:52:02 UTC (rev 7103)
@@ -83,11 +83,12 @@
   hal_enable_ints();
 
   // flash both leds to let us know board is alive
-  output_regs->leds = 0x0;
+  hal_set_leds(0x0, 0x3);
   mdelay(100);
-  output_regs->leds = 0x3;
+  hal_set_leds(0x3, 0x3);
   mdelay(100);
-  output_regs->leds = 0x0;
+  hal_set_leds(0x0, 0x3);
+  mdelay(100);
 
   return true;
 }





reply via email to

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