Dear all,

I have gone through quiet a few post listed here under UART, but still I 
have not been able to enable my UART, I have done the following:

1) I am using 3.8.13-bone50 #1 SMP on Debian 7.5, its the default image 
without any changes. But still when I change uEnv to enable UART it just 
doesn't enable. it just show ttyO0 and ttyO1. 

Changes I made in uEnv were: cape_enable=capemgr.enable_partno=BB-UART1, 
BB-UART2, BB-UART4, BB-UART5

2) On one post here it was also mentioned that a different driver (from 
Omap) links the serial port to tty"S" so I also tried running a serial 
loopback program (attached) to no success. 


I am sorry for bugging you all with such a trivial matter, I know it is 
something very simple that I am missing, but somehow I am not able to find 
what that is.

So, need some expert experienced eyes to spot the mistake. :)

Thank you.

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/98d50c9c-8370-4637-b652-dffe7b841294%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
/*
 * uart-loopback.c - userspace uart loopback test
 *
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 *
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <getopt.h>
#include <termios.h>
#include <sys/ioctl.h>


void print_usage(char *prg)
{
	fprintf(stderr, "\nUsage: %s [options] tty\n\n", prg);
	fprintf(stderr, "Options: -b <baud>  (uart baud rate)\n");
	fprintf(stderr, "Options: -c <count>  (ascii count)\n");
	fprintf(stderr, "         -?         (show this help)\n");
	fprintf(stderr, "\nExample:\n");
	fprintf(stderr, "uart-loopback /dev/ttyS1\n");
	fprintf(stderr, "\n");
	exit(1);
}

int main(int argc, char **argv)
{
	fd_set readfs;    /* file descriptor set */
        struct timeval Timeout;
	int fd,ret;
	char *tty;
	char j[2];
	char *btr = NULL;
	int opt,count=127;
	char i;

	while ((opt = getopt(argc, argv, "bc:?")) != -1) {
		switch (opt) {
		case 'b':
			btr = optarg;
			printf("baud=%s\n",btr);
			break;

		case 'c':
			count = atoi(optarg);
			break;

		case '?':
		default:
			print_usage(argv[0]);
			break;
		}
	}
    
                                                                
	if (argc - optind != 1)
		print_usage(argv[0]);

	tty = argv[optind];

	printf("count=%d\n",count);

	printf("uart port used: %s\n",tty);
	
	if ((fd = open (tty, O_RDWR | O_NOCTTY)) < 0) {
		perror(tty);
		exit(1);
	}

	tcflush(fd, TCIFLUSH);
 
	for (i=48; i < count+48; i++) {
/*	    ret=write(fd,&i, 1);
	    if (ret != 1) {
		printf("write error!\n");
		exit(1);
	    }

*/	    FD_SET(fd, &readfs);  /* set testing source */

    	    /* set timeout value within input loop */
    	    Timeout.tv_usec = 0;  /* milliseconds */
    	    Timeout.tv_sec  = 10;  /* seconds */
    	    ret = select(fd+1, &readfs, NULL, NULL, &Timeout);
            if (ret==0){
		printf("read timeout error!\n");
		exit(1);
	    }
	    else
		ret=read(fd, &j, 1);

	    if (ret!=1) {
		printf("read error!\n");
		exit(1);
	    }

	    if ( i!=j[0] ) {
		printf("read data error: wrote 0x%x read 0x%x\n",i,j[0]);
		exit(1);
	    }

	    printf("%c",j[0]);

	}

	printf("\n");

	close(fd);

	return 0;
}

Reply via email to