Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: BeagleBone Black doesn't boot without serial console (10.0 release)



> From the schematic here:
> https://github.com/beagleboard/BeagleBone-Black/blob/master/BBB_SCH.pdf
> there is a pulldown resitor on UART0_RX input.

You call it a pulldown, not a pullup, so I infer it's pulling the pin
to a more-negative voltage level.

In RS-232, the more negative level is marking, in which case that is
not a problem; that's the correct way to pull it.  But since you say

> The solution is to either rebuild a kernel without DDB, or tie
> UART0_RX to a +3.3V pin.

I also infer that it is a logic-level signal, not an RS-232-level
signal.  (3.3V is, just barely, within the defined range for RS-232,
but 0V is not.)  I would say this is not unreasonable; the designers
presumably intended for external level-shifter hardware to be added,
which would always drive RXD one way or the other, even with the
external cable disconnected.

In this case, I can see three possibilities.

(1) There is level-shifter hardware in use, to adapt between logic
levels and RS-232 levels, but the cable is being disconnected between
the level shifter and the BeagleBone.  In this case, the correct thing
to do is to disconnect at the connector that's using RS-232 levels
rather than at the one that's using logic levels.

(2) There is no level-shifter hardware in use; the other end is also
using logic-level signals.  In this case there's no clear "correct";
you're not using standard serial-line signals, so arranging
compatibility is on you.  A lower-resistance pullup might help, but
might also cause trouble.  Replacing the pulldown with a pullup might
help.  Adding a buffer gate and disconnecting on the far side of it
could also help.

(3) There is no level-shifter hardware in use; the other end is
designed around RS-232 voltage levels.  In this case, you're lucky it
ever works at all.  Feeding logic level signals to an RS-232 port
produces undefined results, unless you're using very odd logic levels,
because you need at least six volts of swing to get defined levels out
of RS-232 - more if you want any sort of noise immunity - and that six
volts has to be symmetric around zero.  In this case, the correct thing
to do is, of course, to add level-shifter hardware.  (You may also need
inverters on the logic-level side; in most of the cases I've
encountered, the level-shifter hardware and the logic-level serial port
use opposite logic levels.)

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		mouse%rodents-montreal.org@localhost
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index