diff options
| -rwxr-xr-x | host/apps/omap_debug/fetch-bin.sh | 2 | ||||
| -rwxr-xr-x | host/apps/omap_debug/fetch-kernel.sh | 2 | ||||
| -rwxr-xr-x | host/apps/omap_debug/fetch-module.sh | 3 | ||||
| -rwxr-xr-x | host/apps/omap_debug/fetch-u-boot.sh | 3 | ||||
| -rw-r--r-- | host/apps/omap_debug/usrp1-e-rw.c | 97 | ||||
| -rw-r--r-- | host/apps/omap_debug/usrp1-e-spi.c | 40 | ||||
| -rw-r--r-- | host/apps/omap_debug/usrp1-e-write.c | 4 | ||||
| -rw-r--r-- | host/apps/omap_debug/usrp1_e.h | 56 | ||||
| -rwxr-xr-x | host/apps/omap_debug/write-eeprom.sh | 92 | 
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 + +  | 
