(Oh, BTW, Robert:  I thought perhaps your site 
at https://eewiki.net/display/linuxonarm/BeagleBone+Black might add a 
couple lines about kernel 3.8.13.  It explains 4.1, 4.4, and RT versions of 
those, but 3.8.13 is still being maintained and some things still only work 
there.  Just a suggestion...)

On Wednesday, March 2, 2016 at 3:59:13 PM UTC-5, Richard Krehbiel wrote:
>
> USE KERNEL 3.8.13.  I spent days trying to figure out why 
> 4.4.1/2/3-bone-rt-5 wasn't working.  Selecting the omap-serial driver 
> (rather than the 8250-omap driver) won't work because some of the rs485 
> patches didn't get included in later kernels.
>
> Since last Thursday, my job was getting RS485 working on BBB.
>
> I used a MikroElectrinika MikroBUS cape*, and an RS485 Click** plugged 
> into mikroBUS socket 1.  I actually rather like this setup.
>
> *http://www.mikroe.com/click/mikrobus-cape/
> **http://www.mikroe.com/click/rs485-3.3v/
>
> For mikroBUS socket 1, RX and TX pins are routed to the Sitara uart2, and 
> the data direction control connects to J9 pin 14 (a.k.a gpio1[18], a.k.a. 
> "echo 50 >/sys/class/gpio/exports").  It's only necessary to load the 
> BB-UART2 overlay ("echo BB-UART2 >/sys/devices/capemgr.*/slots" or 
> "capemgr.enable_partno=BB-UART2" in the uEnv.txt boot file) and do your 
> programming.
>
> Use this for the RS485 setup structure:
>
> struct omap_serial_rs485 {
>     __u32 flags;                            /* RS485 feature flags */
> #define OMAP_SER_RS485_ENABLED (1 << 0)     /* If enabled */
> #define OMAP_SER_RS485_RTS_ON_SEND (1 << 1) /* Logical level for
>                                                RTS pin when
>                                                sending */
> #define OMAP_SER_RS485_RTS_AFTER_SEND (1 << 2) /* Logical level for
>                                                   RTS pin after sent*/
> #define OMAP_SER_RS485_RTS_BEFORE_SEND (1 << 3)
> #define OMAP_SER_RS485_USE_GPIO (1 << 5)
>     __u32 delay_rts_before_send; /* Delay before send (milliseconds) */
>     __u32 delay_rts_after_send;  /* Delay after send (milliseconds) */
>     __u32 gpio_pin;              /* GPIO Pin Index */
>     __u32 padding[4];            /* Memory is cheap, new structs
>                                     are a royal PITA .. */
> };
>
> ... because the omap-serial rs485 patches slightly enhanced the regular 
> struct serial_rs485 you find in sys/serial.h
>
> Here's my rs485 setup code (error checking omitted):
>
>         struct omap_serial_rs485 rs485;
>         i = ioctl(m_fd, TIOCGRS485, &rs485); // whats' the current setup?
>         rs485.flags |= OMAP_SER_RS485_ENABLED; // Enable RS485 mode
>         rs485.flags |= OMAP_SER_RS485_USE_GPIO; // use a GPIO pin for
>                                                 // direction control
>         rs485.flags &= 
> ~(OMAP_SER_RS485_RTS_AFTER_SEND|OMAP_SER_RS485_RTS_ON_SEND);
>         rs485.delay_rts_before_send = 0; // No delay from RTS-assert 
> before xmit
>         rs485.delay_rts_after_send = 0; // No delay after xmit until 
> RTS-negate
>         rs485.gpio_pin = m_pin;         // select the direction control pin
>
>         i = ioctl(m_fd, TIOCSRS485, &rs485); // establish
>
> I built and installed kernel 3.8.13-bone79 this morning.   Finally I'm 
> working well.
>
> On Friday, February 12, 2016 at 10:42:24 AM UTC-5, RobertCNelson wrote:
>>
>> On Fri, Feb 12, 2016 at 9:33 AM, Taceant Omnes <[email protected]> wrote: 
>> > I would like to use RS485 with the BBB. 
>> > 
>> > root@beaglebone:~/test# uname -a 
>> > Linux beaglebone 4.1.15-ti-r40 #1 SMP PREEMPT Thu Jan 7 23:32:17 UTC 
>> > 2016 armv7l GNU/Linux 
>> > 
>> > I am using the kernel above. Its source code is at 
>> > 
>> https://github.com/RobertCNelson/linux-stable-rcn-ee/tree/4.1.15-ti-rt-r40 
>>
>> You need to rebuild and swap these two configs: 
>>
>> disable: CONFIG_SERIAL_8250_OMAP 
>>
>> enable: CONFIG_SERIAL_OMAP 
>>
>> > ... however it does not include the changes in this patch: 
>> > 
>> https://github.com/RobertCNelson/bb-kernel/blob/am33x-v3.8/patches/fixes/0007-omap-RS485-support-by-Michael-Musset.patch#L30
>>  
>>
>> 485 is pretty much built-in to CONFIG_SERIAL_OMAP 
>>
>> It's the last thing still being talked about for integration into 
>> CONFIG_SERIAL_8250_* for possibly 4.6.x 
>>
>> > Which kernel should I use that includes the changes in the patch or 
>> > something similar? 
>>
>> and use this overlay as reference, as it's been reported to work with 
>> that config chanage above.. 
>>
>>
>> https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART4-RS485-00A0.dts
>>  
>>
>> Regards, 
>>
>> -- 
>> Robert Nelson 
>> https://rcn-ee.com/ 
>>
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to