new app to test the ram
authormatt <matt@221aa14e-8319-0410-a670-987f0aec2ac5>
Sun, 21 Sep 2008 17:52:01 +0000 (17:52 +0000)
committermatt <matt@221aa14e-8319-0410-a670-987f0aec2ac5>
Sun, 21 Sep 2008 17:52:01 +0000 (17:52 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@9634 221aa14e-8319-0410-a670-987f0aec2ac5

usrp2/firmware/apps/Makefile.am
usrp2/firmware/apps/test_ram.c [new file with mode: 0644]
usrp2/firmware/lib/memory_map.h

index 319c80c1af2c9515841553602245f8c75f2b8c65..b37c0f2914d72241957963d8eb1d72bab9e5bae5 100644 (file)
@@ -38,6 +38,7 @@ noinst_PROGRAMS = \
        test_db_spi \
        test_i2c \
        test_sd \
+       test_ram \
        test_phy_comm \
        test_lsadc \
        test_lsdac \
diff --git a/usrp2/firmware/apps/test_ram.c b/usrp2/firmware/apps/test_ram.c
new file mode 100644 (file)
index 0000000..b9946f7
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * 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/>.
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <u2_init.h>           /* FIXME */
+#include <sd.h>
+#include <string.h>
+#include <hal_io.h>
+#include <nonstdio.h>
+#include <hal_uart.h>
+
+#define ASSERT_TRUE(x) \
+  do { \
+    if (!(x)){ \
+      printf("ASSERT_TRUE failed on line %d\n", __LINE__); \
+      nerrors++; \
+    } \
+  } while(0)
+
+#define ASSERT_FALSE(x) \
+  do { \
+    if (x){ \
+      printf("ASSERT_FALSE failed on line %d\n", __LINE__); \
+      nerrors++; \
+    } \
+  } while(0)
+
+
+#define BUFSIZE 128
+
+int
+main(void)
+{
+  int i,j,k;
+  unsigned char buf[512];
+
+  u2_init();
+  //hal_uart_init();
+  //puts("\ntest_ram\n");
+  
+  output_regs->ram_page = 0;
+
+  //puts("r[0]=DEADBEEF\n");
+  extram[0] = 0xDEADBEEF;
+  extram[1] = 0xF00D1234;
+  extram[7] = 0x76543210;
+  puts("RD\n");
+  i = extram[0];
+  k = extram[1];
+  j = extram[7];
+  //puts("r0=");
+  
+  puthex32_nl(i);
+  puthex32_nl(k);
+  puthex32_nl(j);
+  puts("Done");
+  hal_finish();
+  return 0;
+}
+
index 88efcb9ac1aebd6df1a2ba67d7dd5790ab818445..106724742bce3cffe3d6560205bff93265d45ca9 100644 (file)
@@ -353,6 +353,7 @@ typedef struct {
   volatile uint32_t    leds;
   volatile uint32_t    phy_ctrl;       // LSB is reset line to eth phy
   volatile uint32_t    debug_mux_ctrl;
+  volatile uint32_t     ram_page;       // FIXME should go somewhere else...
 } output_regs_t;
 
 #define SERDES_ENABLE 8
@@ -577,6 +578,15 @@ typedef struct {
 
 #define sdspi_regs ((sdspi_regs_t *) SDSPI_BASE)
 
+///////////////////////////////////////////////////
+// External RAM interface, Slave 14
+//   Pages are 1K.  Page is 10 bits, set by a control register
+//    output_regs->ram_page
+
+#define EXTRAM_BASE 0xF000
+#define extram ((volatile uint32_t *) EXTRAM_BASE)
+
+
 ///////////////////////////////////////////////////
 
 #endif