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)
On Sun, Oct 13, 2024 at 04:01:22PM +0200, Dr. Nicola Mingotti wrote:
>
>
>
> On Fri-11-Oct-2024 14:36, Manuel Bouyer wrote:
> > From the schematic here:
> > https://github.com/beagleboard/BeagleBone-Black/blob/master/BBB_SCH.pdf
> >
> > there is a pulldown resitor on UART0_RX input. This means that without
> > a (powered up) USB/serial adapter, UART0_RX sees a logical 0 which
> > is most probably interpreted as a BREAK by the AM335x UART, and causes
> > the kernel to enter DDB.
> >
> > The solution is to either rebuild a kernel without DDB, or tie UART0_RX to
> > a +3.3V pin.
> > Or patch the kernel sources like this:
> >
> > Index: com.c
> > ===================================================================
> > RCS file: /cvsroot/src/sys/dev/ic/com.c,v
> > retrieving revision 1.382
> > diff -u -p -u -r1.382 com.c
> > --- com.c 9 Dec 2022 00:35:58 -0000 1.382
> > +++ com.c 11 Oct 2024 12:33:45 -0000
> > @@ -2647,7 +2647,8 @@ comcnattach1(struct com_regs *regsp, int
> > cn_tab = &comcons;
> > cn_init_magic(&com_cnm_state);
> > - cn_set_magic("\047\001"); /* default magic is BREAK */
> > + // cn_set_magic("\047\001"); /* default magic is BREAK */
> > + cn_set_magic("+++++");
> > comcons_info.frequency = frequency;
> > comcons_info.type = type;
> > @@ -2734,7 +2735,8 @@ com_kgdb_attach1(struct com_regs *regsp,
> > * expects this to be initialized
> > */
> > cn_init_magic(&com_cnm_state);
> > - cn_set_magic("\047\001");
> > + // cn_set_magic("\047\001");
> > + cn_set_magic("+++++");
> > }
> > kgdb_attach(com_kgdb_getc, com_kgdb_putc, NULL);
> >
>
> Manuel, your proposed solution has been tested working.
>
> This means i can plug and unplag the UART in J1 on BBB without entering
> the debugger, the active ssh connection remains alive, and from the
> other side of the "serial" (my computer) everything works after the
> plug-unplug,
> it still can type commands.
>
> As far (or as little) as i can understand, when i connect the UART to J1
> by default "a signal" i generated which is the same signal that opens the
> debugger.
>
> With your change the signal generated is different so the debugger does not
> pop up.
Not exactly; the generated signal (a BREAK) is still the same, but
it doens't cause the kernel to enter the debugger any more.
The signal to enter the debugger is now "+++++" (5 plus signs in a row).
>
> Ok, this works, but it would be very inconvenient for me or anybody else
> to patch the kernel for BBB every time we need to prepare a new device.
> I would be also very annoying to maintain on upgrades etc.
>
> Would it be any bad to change this line in the main kernel ?
>
> I don't see the need to call the debugger when a com is connected, but
> I know nothing of kernel debugging/programming so this may be useful to
> somebody else.
Actually it's very convenient to be able to enter DDB from the
console when working on kernel, even when helping a user which doesn't
know how to use the debugger.
As noted by martin, rebuilding a kernel with
options CNMAGIC="\"+++++\""
in the config file should have the same effect.
What should the CNMAGIC default be ? Maybe it's time to change it, because
some hardware sends spurious BREAK (when disconnecting a USB/serial
adapter for example) and because some hardware cannot send a BREAK on demand
(e.g. Dell's idrac). But this is something that should be discussed first.
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index