solved, was Re: serial on neopi neo

Ian Lepore ian at freebsd.org
Fri Feb 9 16:26:45 UTC 2018


On Fri, 2018-02-09 at 18:14 +0200, Daniel Braniss wrote:
> 
> > 
> > On 9 Feb 2018, at 17:54, Ian Lepore <ian at freebsd.org> wrote:
> > 
> > On Fri, 2018-02-09 at 12:28 +0200, Daniel Braniss wrote:
> > > 
> > > 
> > > > 
> > > > 
> > > > On 9 Feb 2018, at 12:02, Daniel Braniss <danny at cs.huji.ac.il>
> > > > wrote:
> > > > 
> > > > 
> > > > 
> > > > > 
> > > > > 
> > > > > On 8 Feb 2018, at 17:30, Daniel Braniss <danny at cs.huji.ac.il>
> > > > > wrote:
> > > > > 
> > > > > hi,
> > > > > after fiddling with the dts file (with the help from Milo), I
> > > > > got
> > > > > 2 serial ports to work(apart from the /dev/ttyu0),
> > > > > but not together! ie, if i try each one individually all is
> > > > > ok,
> > > > > but once I open both of them, only
> > > > > /dev/ttyu1 works, /dev/ttyu2 hangs (i have yet to see if its
> > > > > the
> > > > > output or input)
> > > > > 
> > > > > any ideas?
> > > > I have!
> > > > 
> > > > I’m using the ‘what i thought’ unused pins (CTS/RTS) to drive
> > > > some
> > > > leds!
> > > > 
> > > > I do set, via tcsetattr(3) to ignore these (ie no modem, no
> > > > flow
> > > > control) but it seems the driver is ignoring this.
> > > > how can I tell the serial/uart to ignore them?
> > > was sent out too early!
> > > 
> > > doing a cfmakeraw(3) is what screwed me up!
> > > now all is ok!
> > That's strange, because I was about to reply to the prior mail
> > suggesting you start with a cfmakeraw() before tcsetattr().  I
> > always
> > start with makeraw then set just the things I want, like:
> > 
> >     tcgetattr(fd, &t);
> >     cfmakeraw(&t);
> >     t.c_iflag &= ~(IXON | IXOFF | IXANY);
> >     t.c_cflag &= ~(PARENB | CSTOPB | CSIZE | CRTSCTS);
> >     t.c_cflag |= CLOCAL | CREAD | CS8;
> >     cfsetspeed(&t, whatever);
> >     tcwriteattr(fd, TCSANOW, &t);
> > 
> > -- Ian
> thats what I had, but did not clear the CRTSCTS, so what I do now,
> without the tcgetattr, and just set what I need
> 	bzero(&t, sizeof(t));
> 	t.c_flag = CS8 | CLOCAL | CREAD;
> 	t.c_iflag = IGNPAR;
> 	cfsetspeed(…)
> 	tcsetattr(fd, TCSANOW, &t);
> 
> actually it was the tcgetattr and not really the cfmakeraw :-)
> 
> danny
> 

Without the makeraw you're going to get canonicalized input processing,
maybe not what you want/need.

-- Ian


More information about the freebsd-arm mailing list