aboutsummaryrefslogtreecommitdiffstats
path: root/host/apps/omap_debug
diff options
context:
space:
mode:
Diffstat (limited to 'host/apps/omap_debug')
-rwxr-xr-xhost/apps/omap_debug/fetch-bin.sh2
-rwxr-xr-xhost/apps/omap_debug/fetch-kernel.sh2
-rwxr-xr-xhost/apps/omap_debug/fetch-module.sh3
-rwxr-xr-xhost/apps/omap_debug/fetch-u-boot.sh3
-rw-r--r--host/apps/omap_debug/usrp1-e-rw.c97
-rw-r--r--host/apps/omap_debug/usrp1-e-spi.c40
-rw-r--r--host/apps/omap_debug/usrp1-e-write.c4
-rw-r--r--host/apps/omap_debug/usrp1_e.h56
-rwxr-xr-xhost/apps/omap_debug/write-eeprom.sh92
9 files changed, 294 insertions, 5 deletions
diff --git a/host/apps/omap_debug/fetch-bin.sh b/host/apps/omap_debug/fetch-bin.sh
index 1ceec4fd2..beff7ffcd 100755
--- a/host/apps/omap_debug/fetch-bin.sh
+++ b/host/apps/omap_debug/fetch-bin.sh
@@ -1,2 +1,2 @@
-scp balister@192.168.1.182:Download/u1e.bin .
+scp balister@astro:/workspace/usrp1-e-dev/u1e.bin .
sync
diff --git a/host/apps/omap_debug/fetch-kernel.sh b/host/apps/omap_debug/fetch-kernel.sh
index 08b470e9b..7023f5d28 100755
--- a/host/apps/omap_debug/fetch-kernel.sh
+++ b/host/apps/omap_debug/fetch-kernel.sh
@@ -1,3 +1,3 @@
-scp balister@192.168.1.182:src/git/kernel_usrp/arch/arm/boot/uImage /media/mmcblk0p1/uImage
+scp balister@192.168.1.167:src/git/kernel_usrp/arch/arm/boot/uImage /media/mmcblk0p1/uImage
sync
diff --git a/host/apps/omap_debug/fetch-module.sh b/host/apps/omap_debug/fetch-module.sh
index 6511958f9..101ea9aef 100755
--- a/host/apps/omap_debug/fetch-module.sh
+++ b/host/apps/omap_debug/fetch-module.sh
@@ -1,2 +1,3 @@
-scp balister@192.168.1.182:src/git/kernel_usrp/drivers/misc/usrp1_e.ko /lib/modules/2.6.33-rc3/kernel/drivers/misc
+scp balister@192.168.1.167:src/git/kernel_usrp/drivers/misc/usrp1_e.ko /lib/modules/2.6.33-rc3/kernel/drivers/misc
+scp balister@192.168.1.167:src/git/kernel_usrp/include/linux/usrp1_e.h .
sync
diff --git a/host/apps/omap_debug/fetch-u-boot.sh b/host/apps/omap_debug/fetch-u-boot.sh
new file mode 100755
index 000000000..63d4edcf2
--- /dev/null
+++ b/host/apps/omap_debug/fetch-u-boot.sh
@@ -0,0 +1,3 @@
+scp balister@astro:/workspace/usrp1-e-dev/u-boot-overo/u-boot.bin /media/mmcblk0p1/
+sync
+
diff --git a/host/apps/omap_debug/usrp1-e-rw.c b/host/apps/omap_debug/usrp1-e-rw.c
new file mode 100644
index 000000000..cd7fbe4dd
--- /dev/null
+++ b/host/apps/omap_debug/usrp1-e-rw.c
@@ -0,0 +1,97 @@
+#include <stdio.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <stdlib.h>
+
+struct pkt {
+ int checksum;
+ int seq_num;
+ short data[1020];
+};
+
+static int fp;
+
+static int calc_checksum(struct pkt *p)
+{
+ int i, sum;
+
+ i = 0;
+ sum = 0;
+
+ for (i=0; i<1020; i++)
+ sum += p->data[i];
+
+ sum += p->seq_num;
+
+ return sum;
+}
+
+static void *read_thread(void *threadid)
+{
+ int cnt, prev_seq_num;
+ struct pkt rx_data;
+
+ printf("Greetings from the reading thread!\n");
+
+ prev_seq_num = 0;
+
+ while (1) {
+ cnt = read(fp, &rx_data, 2048);
+
+ if (rx_data.seq_num != prev_seq_num + 1)
+ printf("Sequence number fail, current = %d, previous = %d\n",
+ rx_data.seq_num, prev_seq_num);
+ prev_seq_num = rx_data.seq_num;
+
+ if (calc_checksum(&rx_data) != rx_data.checksum)
+ printf("Checksum fail packet = %d, expected = %d\n",
+ calc_checksum(&rx_data), rx_data.checksum);
+ }
+
+}
+
+static void *write_thread(void *threadid)
+{
+ int seq_number, i, cnt;
+ struct pkt tx_data;
+
+ printf("Greetings from the write thread!\n");
+
+ for (i=0; i<1020; i++)
+ tx_data.data[i] = random() >> 16;
+
+
+ seq_number = 1;
+
+ while (1) {
+ tx_data.seq_num = seq_number++;
+ tx_data.checksum = calc_checksum(&tx_data);
+ cnt = write(fp, &tx_data, 2048);
+ }
+}
+
+
+int main(int argc, char *argv[])
+{
+ int ret;
+ pthread_t tx, rx;
+ long int t;
+
+ fp = open("/dev/usrp1_e0", O_RDWR);
+ printf("fp = %d\n", fp);
+
+ if (pthread_create(&rx, NULL, read_thread, (void *) t)) {
+ printf("Failed to create rx thread\n");
+ exit(-1);
+ }
+
+ if (pthread_create(&tx, NULL, write_thread, (void *) t)) {
+ printf("Failed to create tx thread\n");
+ exit(-1);
+ }
+
+ sleep(10000);
+
+ printf("Done sleeping\n");
+}
diff --git a/host/apps/omap_debug/usrp1-e-spi.c b/host/apps/omap_debug/usrp1-e-spi.c
new file mode 100644
index 000000000..a79d74b18
--- /dev/null
+++ b/host/apps/omap_debug/usrp1-e-spi.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <linux/ioctl.h>
+
+#include "usrp1_e.h"
+
+// Usage: usrp1_e_spi w|rb slave data
+
+int main(int argc, char *argv[])
+{
+ int fp, slave, data, ret;
+ struct usrp_e_spi spi_dat;
+
+ if (argc < 4) {
+ printf("Usage: usrp1_e_spi w|rb slave data\n");
+ exit(-1);
+ }
+
+ slave = atoi(argv[2]);
+ data = atoi(argv[3]);
+
+ fp = open("/dev/usrp1_e0", O_RDWR);
+ printf("fp = %d\n", fp);
+
+ spi_dat.slave = slave;
+ spi_dat.data = data;
+ spi_dat.length = 2;
+ spi_dat.flags = 0;
+
+ if (*argv[1] == 'r') {
+ spi_dat.readback = 1;
+ ret = ioctl(fp, USRP_E_SPI, &spi_dat);
+ printf("Data returned = %d\n", ret);
+ } else {
+ spi_dat.readback = 0;
+ ioctl(fp, USRP_E_SPI, &spi_dat);
+ }
+}
diff --git a/host/apps/omap_debug/usrp1-e-write.c b/host/apps/omap_debug/usrp1-e-write.c
index f29cc7032..903c0071f 100644
--- a/host/apps/omap_debug/usrp1-e-write.c
+++ b/host/apps/omap_debug/usrp1-e-write.c
@@ -14,8 +14,8 @@ int main(int rgc, char *argv[])
buf[i] = i;
}
- do {
+// do {
cnt = write(fp, buf, 2048);
printf("Bytes written - %d\n", cnt);
- } while (1);
+// } while (1);
}
diff --git a/host/apps/omap_debug/usrp1_e.h b/host/apps/omap_debug/usrp1_e.h
new file mode 100644
index 000000000..b49b526dc
--- /dev/null
+++ b/host/apps/omap_debug/usrp1_e.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2010 Ettus Research, LLC
+ *
+ * Written by Philip Balister <philip@opensdr.com>
+ *
+ * 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 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __USRP_E_H
+#define __USRP_E_H
+
+#include <linux/types.h>
+#include <linux/ioctl.h>
+
+struct usrp1_e_ctl {
+ __u32 offset;
+ __u32 count;
+ __u16 buf[];
+};
+
+// SPI interface
+
+#define UE_SPI_TXONLY 0
+#define UE_SPI_TXRX 1
+
+// Defines for spi ctrl register
+#define UE_SPI_CTRL_ASS (1<<13)
+#define UE_SPI_CTRL_IE (1<<12)
+#define UE_SPI_CTRL_LSB (1<<11)
+#define UE_SPI_CTRL_TXNEG (1<<10)
+#define UE_SPI_CTRL_RXNEG (1<<9)
+#define UE_SPI_CTRL_GO_BSY (1<<8)
+#define UE_SPI_CTRL_CHAR_LEN_MASK 0x7f
+
+#define UE_SPI_PUSH_RISE 0
+#define UE_SPI_PUSH_FALL UE_SPI_CTRL_TXNEG
+#define UE_SPI_LATCH_RISE 0
+#define UE_SPI_LATCH_FALL UE_SPI_CTRL_RXNEG
+
+struct usrp_e_spi {
+ __u8 readback;
+ __u32 slave;
+ __u32 data;
+ __u32 length;
+ __u32 flags;
+};
+
+#define USRP_E_IOC_MAGIC 'u'
+#define USRP_E_WRITE_CTL _IOW(USRP_E_IOC_MAGIC, 0x20, struct usrp1_e_ctl)
+#define USRP_E_READ_CTL _IOWR(USRP_E_IOC_MAGIC, 0x21, struct usrp1_e_ctl)
+#define USRP_E_SPI _IOW(USRP_E_IOC_MAGIC, 0x22, struct usrp_e_spi)
+
+#endif
diff --git a/host/apps/omap_debug/write-eeprom.sh b/host/apps/omap_debug/write-eeprom.sh
new file mode 100755
index 000000000..301b06f07
--- /dev/null
+++ b/host/apps/omap_debug/write-eeprom.sh
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+if [ $# -ne 3 ] && [ $# -ne 5 ];
+then
+ echo "Usage:"
+ echo ""
+ echo "writeprom.sh deviceid rev fab_rev [envvar envsetting]"
+ echo
+ echo " deviceid - expansion board device number from table:"
+ echo
+ echo " Summit 0x01"
+ echo " Tobi 0x02"
+ echo " Tobi Duo 0x03"
+ echo " Palo35 0x04"
+ echo " Palo43 0x05"
+ echo " Chestnut43 0x06"
+ echo " Pinto 0x07"
+ echo
+ echo " rev - board revision (e.g. 0x00)"
+ echo " fab_rev - revision marking from pcb (e.g. R2411)"
+ echo " envvar - optional u-boot env variable name"
+ echo " (e.g. dvimode)"
+ echo " envsetting - optional u-boot env variable setting"
+ echo " (e.g. 1024x768MR-16@60)"
+ exit 1
+fi
+
+fabrevision=$3
+if [ ${#fabrevision} -ge 8 ]; then
+ echo "Error: fab revision string must less than 8 characters"
+ exit 1
+fi
+
+envvar=$4
+if [ ${#envar} -ge 16 ]; then
+ echo "Error: environment variable name string must less than 16 characters"
+ exit 1
+fi
+
+envsetting=$5
+if [ ${#ensetting} -ge 64 ]; then
+ echo "Error: environment setting string must less than 64 characters"
+ exit 1
+fi
+
+bus=3
+device=0x51
+vendorid=0x03
+
+i2cset -y $bus $device 0x00 0x00
+i2cset -y $bus $device 0x01 $vendorid
+i2cset -y $bus $device 0x02 0x00
+i2cset -y $bus $device 0x03 $1
+i2cset -y $bus $device 0x04 $2
+i2cset -y $bus $device 0x05 00
+
+let i=6
+hexdumpargs="'${#fabrevision}/1 \"0x%02x \"'"
+command="echo -n \"$fabrevision\" | hexdump -e $hexdumpargs"
+hex=$(eval $command)
+for character in $hex; do
+ i2cset -y $bus $device $i $character
+ let i=$i+1
+done
+i2cset -y $bus $device $i 0x00
+
+if [ $# -eq 5 ]
+then
+ i2cset -y $bus $device 0x05 0x01
+
+ let i=14
+ hexdumpargs="'${#envvar}/1 \"0x%02x \"'"
+ command="echo -n \"$envvar\" | hexdump -e $hexdumpargs"
+ hex=$(eval $command)
+ for character in $hex; do
+ i2cset -y $bus $device $i $character
+ let i=$i+1
+ done
+ i2cset -y $bus $device $i 0x00
+
+ let i=30
+ hexdumpargs="'${#envsetting}/1 \"0x%02x \"'"
+ command="echo -n \"$envsetting\" | hexdump -e $hexdumpargs"
+ hex=$(eval $command)
+ for character in $hex; do
+ i2cset -y $bus $device $i $character
+ let i=$i+1
+ done
+ i2cset -y $bus $device $i 0x00
+fi
+
+