[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r5928 - gnuradio/branches/developers/matt/u2f/firmware
From: |
matt |
Subject: |
[Commit-gnuradio] r5928 - gnuradio/branches/developers/matt/u2f/firmware |
Date: |
Sun, 8 Jul 2007 23:18:49 -0600 (MDT) |
Author: matt
Date: 2007-07-08 23:18:49 -0600 (Sun, 08 Jul 2007)
New Revision: 5928
Added:
gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.c
gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.h
gnuradio/branches/developers/matt/u2f/firmware/eth.c
Modified:
gnuradio/branches/developers/matt/u2f/firmware/Makefile
gnuradio/branches/developers/matt/u2f/firmware/memory_map.h
gnuradio/branches/developers/matt/u2f/firmware/sim_io.h
gnuradio/branches/developers/matt/u2f/firmware/test1_main.c
gnuradio/branches/developers/matt/u2f/firmware/u2_init.c
Log:
seems to be a basic working buffer pool
Modified: gnuradio/branches/developers/matt/u2f/firmware/Makefile
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/Makefile 2007-07-09
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/Makefile 2007-07-09
05:18:49 UTC (rev 5928)
@@ -13,15 +13,15 @@
.PRECIOUS : %.bin
-ROMS = oldflash.rom test1.rom
-DUMPS = test1.dump
+ROMS = oldflash.rom test1.rom eth.rom
+DUMPS = test1.dump eth.dump
all: $(ROMS) $(DUMPS)
-oldflash.exe: oldbootstrap.o spi.o sim_io.o
+oldflash.exe: oldbootstrap.o spi.o buffer_pool.o sim_io.o
$(CC) $^ -o $@
-test1.exe: test1_main.o u2_init.o spi.o sim_io.o
+test1.exe: test1_main.o u2_init.o spi.o buffer_pool.o sim_io.o
$(CC) $^ -o $@
clean:
@@ -31,9 +31,11 @@
cp -a *.rom ../top/u2_sim
# dependencies
-bootstrap.o: memory_map.h spi.h sim_io.h bootstrap.c
-oldbootstrap.o: memory_map.h spi.h sim_io.h oldbootstrap.c
+bootstrap.o: memory_map.h spi.h buffer_pool.h sim_io.h bootstrap.c
+oldbootstrap.o: memory_map.h spi.h buffer_pool.h sim_io.h oldbootstrap.c
spi.o: memory_map.h spi.h spi.c
+buffer_pool.o: memory_map.h buffer_pool.h buffer_pool.c
sim_io.o: sim_io.h
-test1_main.o: u2_init.h memory_map.h spi.h sim_io.h test1_main.c
+test1_main.o: u2_init.h memory_map.h spi.h buffer_pool.h sim_io.h test1_main.c
+eth.o: u2_init.h memory_map.h spi.h buffer_pool.h sim_io.h eth.c
Added: gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.c
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.c
2007-07-09 05:18:49 UTC (rev 5928)
@@ -0,0 +1,21 @@
+#include "buffer_pool.h"
+#include "memory_map.h"
+
+void
+clear_buf(int bufnum) {
+ volatile int *addr = (int *)(BUFFER_POOL_BASE + (bufnum<<2));
+ *addr = 1<<28;
+}
+
+void
+receive_to_buf(int bufnum, int step, int port, int fl, int ll) {
+ volatile int *addr = (int *)(BUFFER_POOL_BASE + (bufnum<<2));
+ *addr = (port << 24) | (1<<23) | (step<<18) | (ll<<9) | fl;
+}
+
+void
+send_from_buf(int bufnum, int step, int port, int fl, int ll) {
+ volatile int *addr = (int *)(BUFFER_POOL_BASE + (bufnum<<2));
+ *addr = (port << 26) | (1<<22) | (step<<18) | (ll<<9) | fl;
+}
+
Added: gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.h
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.h
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.h
2007-07-09 05:18:49 UTC (rev 5928)
@@ -0,0 +1,5 @@
+
+// Buffer Pool Management
+void clear_buf(int bufnum);
+void receive_to_buf(int bufnum, int step, int port, int fl, int ll);
+void send_from_buf(int bufnum, int step, int port, int fl, int ll);
Added: gnuradio/branches/developers/matt/u2f/firmware/eth.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/eth.c
(rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/eth.c 2007-07-09
05:18:49 UTC (rev 5928)
@@ -0,0 +1,41 @@
+#include "u2_init.h"
+#include "memory_map.h"
+#include "spi.h"
+
+int
+main(void)
+{
+ u2_init();
+
+
+
+ int i;
+
+ // Write to buffer 0
+ int *buf = (int *)(BUFFER_BASE + BUFFER_0);
+ for(i=0;i<BUFFER_SIZE;i++)
+ buf[i] = i;
+
+ sim_puts("Filled buffer 0\n");
+
+ // Write to buffer 1
+ int *buffer = (int *)(BUFFER_BASE + BUFFER_1);
+ for(i=0;i<BUFFER_SIZE;i++)
+ buf[i] = i + ((i^0xFFFF) << 16);
+
+ sim_puts("Filled buffer 1\n");
+
+ // Control LEDs
+ while(1) {
+ output_regs->leds = 0x00;
+ output_regs->leds = 0x01;
+ output_regs->leds = 0x00;
+ output_regs->leds = 0x01;
+ output_regs->leds = 0x01;
+ output_regs->leds = 0x01;
+ output_regs->leds = 0x03;
+ output_regs->leds = 0x02;
+ }
+
+ return 1;
+}
Modified: gnuradio/branches/developers/matt/u2f/firmware/memory_map.h
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/memory_map.h 2007-07-09
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/memory_map.h 2007-07-09
05:18:49 UTC (rev 5928)
@@ -116,49 +116,48 @@
#define gpio_base ((gpio_regs_t *) GPIO_BASE)
///////////////////////////////////////////////////
-// Basic Outputs, Slave 5
-#define OUTPUTS_BASE 0xB000
+// Master Controller, Slave 5
-#define OUTPUTS_CLK 0
-#define OUTPUTS_SERDES 1
-#define OUTPUTS_ADC 2
-#define OUTPUTS_MISC 3
+///////////////////////////////////////////////////
+// Ethernet Core, Slave 6
+#define ETH_BASE 0xC000
+////////////////////////////////////////////////////
+// Settings Bus, Slave #7, Not Byte Addressable!
+#define SETTINGS_BASE 0xD000
+
+// Simple outputs
+#define OUTPUTS_BASE 0xD000
+#define OUTPUTS_CLK 0xD000
+#define OUTPUTS_SERDES 0xD004
+#define OUTPUTS_ADC 0xD008
+#define OUTPUTS_MISC 0xD00C
+
#define SERDES_ENABLE 8
#define SERDES_PRBSEN 4
#define SERDES_LOOPEN 2
#define SERDES_RXEN 1
+#define BUFFER_POOL_BASE 0xD100
+#define DSP_TX_BASE 0xD200
+#define DSP_RX_BASE 0xD280
+#define LAST_SETTING 0xD3FC
+
typedef struct {
- volatile unsigned char clk_ctrl;
- volatile unsigned char serdes_ctrl;
- volatile unsigned char adc_ctrl;
- volatile unsigned char leds; // misc?
+ volatile unsigned long clk_ctrl;
+ volatile unsigned long serdes_ctrl;
+ volatile unsigned long adc_ctrl;
+ volatile unsigned long leds;
} output_regs_t;
#define output_regs ((output_regs_t *) OUTPUTS_BASE)
-
-///////////////////////////////////////////////////
-// DSP Core, Slave 6
-#define DSP_BASE 0xC000
-
-#define DSP_IAMP 0
-#define DSP_QAMP 2
-#define DSP_FREQ 4
-#define DSP_ISCALE 8
-#define DSP_QSCALE 10
-
typedef struct {
- volatile short i;
- volatile short q;
volatile int freq;
volatile short scale_i;
volatile short scale_q;
-} dsp_regs_t;
+ volatile int interp_rate;
+ volatile int run_tx;
+} dsp_tx_regs_t;
-#define dsp_regs ((dsp_regs_t *) DSP_BASE)
-
-////////////////////////////////////////////////////
-// Settings Bus, Slave #7
-#define SLAVE7_BASE 0xD000
+#define dsp_tx_regs ((dsp_tx_regs_t *) DSP_TX_BASE)
Modified: gnuradio/branches/developers/matt/u2f/firmware/sim_io.h
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/sim_io.h 2007-07-09
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/sim_io.h 2007-07-09
05:18:49 UTC (rev 5928)
@@ -62,3 +62,9 @@
*p = 0;
}
+static inline void
+sim_finish(void)
+{
+ volatile unsigned long *p = (unsigned long *) 0xC200;
+ *p = 0;
+}
Modified: gnuradio/branches/developers/matt/u2f/firmware/test1_main.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/test1_main.c 2007-07-09
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/test1_main.c 2007-07-09
05:18:49 UTC (rev 5928)
@@ -1,6 +1,8 @@
#include "u2_init.h"
#include "memory_map.h"
#include "spi.h"
+#include "sim_io.h"
+#include "buffer_pool.h"
int
main(void)
@@ -17,33 +19,50 @@
}
#endif
+ // Control LEDs
+ output_regs->leds = 0x02;
+
int i;
// Write to buffer 0
int *buf = (int *)(BUFFER_BASE + BUFFER_0);
+ sim_puthex_nl((int)buf);
+
for(i=0;i<BUFFER_SIZE;i++)
buf[i] = i;
sim_puts("Filled buffer 0\n");
// Write to buffer 1
- int *buffer = (int *)(BUFFER_BASE + BUFFER_1);
+ buf = (int *)(BUFFER_BASE + BUFFER_1);
+ sim_puthex_nl((int)buf);
for(i=0;i<BUFFER_SIZE;i++)
buf[i] = i + ((i^0xFFFF) << 16);
sim_puts("Filled buffer 1\n");
- // Control LEDs
- while(1) {
- output_regs->leds = 0x00;
- output_regs->leds = 0x01;
- output_regs->leds = 0x00;
- output_regs->leds = 0x01;
- output_regs->leds = 0x01;
- output_regs->leds = 0x01;
- output_regs->leds = 0x03;
- output_regs->leds = 0x02;
- }
+ // rx SERDES into buffer #2 (buf,step,port,fl,ll)
+ receive_to_buf(2, 1 , 0 , 10 , 300);
+ sim_puts("SERDES RX buffer setup\n");
+ // send SERDES from buffer #0
+ send_from_buf(0 /*buf#*/, 1 /*step*/, 0 /*port*/, 10 /*fl*/, 200 /*ll*/);
+ sim_puts("SERDES TX buffer setup\n");
+
+ // Set up TX Chain
+ dsp_tx_regs->freq = 0;
+ dsp_tx_regs->scale_i = 1;
+ dsp_tx_regs->scale_q = 1;
+ dsp_tx_regs->interp_rate = 32;
+
+ // send to DACs from buffer #1
+ send_from_buf(1 /*buf#*/, 1 /*step*/, 1 /*port*/, 20 /*fl*/, 200 /*ll*/);
+ sim_puts("DAC Buffer setup\n");
+
+ dsp_tx_regs->run_tx = 1;
+
+ while(1) {};
+ sim_finish();
+
return 1;
}
Modified: gnuradio/branches/developers/matt/u2f/firmware/u2_init.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/u2_init.c 2007-07-09
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/u2_init.c 2007-07-09
05:18:49 UTC (rev 5928)
@@ -53,11 +53,13 @@
// write DSP registers...
+#if 0
dsp_regs->i = 0x7FFF;
dsp_regs->q = 0x7FFF;
dsp_regs->freq = 0x12345678;
dsp_regs->scale_i = 512;
dsp_regs->scale_q = 123;
+#endif
// Set up serdes
//output_regs->serdes_ctrl = (SERDES_ENABLE | SERDES_LOOPEN | SERDES_RXEN);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r5928 - gnuradio/branches/developers/matt/u2f/firmware,
matt <=