solved, was Re: serial on neopi neo

Daniel Braniss danny at cs.huji.ac.il
Fri Feb 9 16:14:55 UTC 2018



> 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



More information about the freebsd-arm mailing list