No, xyz_earlyearlyinit() initializes the serial driver to support a serial console device (stdin, stdout, stderr).  xyz_lowsetup() may initialize any hardware, not necessarily UART.  It has nothing to do with the serial driver. It initializes whatever hardware in necessary to start the system.  That normally includes the hardware UART that will be used later for the console.

On 3/11/2021 8:59 AM, Sara da Cunha Monteiro de Souza wrote:
Hi Mr Nutt,

I am so sorry for delaying my answer.
I went into vacation and missed this conversation.

So, I came up to the conclusion that the *<chip>_lowsetup *function that
I've seen in many chips
is a standard deviation and it is actually playing the role of the
*xyz_earlyserialinit().*
Am I right?

Thanks too much for the detailed explanation.

Em qua., 10 de fev. de 2021 às 12:33, Gregory Nutt <spudan...@gmail.com>
escreveu:

As I said, the early serial initialization is needed for boot-up debug
output.  Here is a little more detail:

If the serial is not initialized, then up_putc will not work.  In fact,
any calls to up_putc() could hang.  If the serial console is the syslog
debug channel, then up_putc is called from syslog under certain conditions:

   * Syslog output from an interrupt handler
   * Syslog() is called with LOG_EMERG
   * Syslog() is called early in the initialization (while using the
     g_default_channel)

up_putc is also used in most very low level startup logic in the
PROGRESS macro that outputs the ABCDEF that you see when booting most
NuttX systems.

What happens if the serial device used by up_putc is not initialized?
It will certainly fail to ouput anything but could also hang on a busy
wait polling an uninitialized device.




Reply via email to