[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pc386 BSP: printk apparently outputs on the same serial port as the console ?
- Date: Mon, 25 May 2009 17:22:23 +0100
- From: simon.clubley at googlemail.com (Simon Clubley)
- Subject: pc386 BSP: printk apparently outputs on the same serial port as the console ?
I'm looking at the changes I made manually in the (old) version of
RTEMS I am currently using (as part of the process of moving to RTEMS
4.9.2) and I rediscovered an issue with the pc386 BSP apparently
emitting printk() output on the same serial port as the console (when
serial port I/O is the chosen console method) regardless of the serial
port settings in console.c.
Here is my walkthrough of what I _think_ is happening (I've omitted
some top level directories in the paths):
cpukit/libcsupport/src/printk.c contains the support for printk() and
printk() calls BSP_output_char() to perform the actual write.
BSP_output_char() is defined (for pc386) in
libbsp/i386/pc386/console/console.c to point to either
BSP_output_char_via_serial() or _IBMPC_outch() depending on the
contents of BSPPrintkPort.
BSP_output_char_via_serial() is defined in
libbsp/i386/shared/comm/uart.c. However, BSP_output_char_via_serial()
uses the contents of BSPConsolePort, and not BSPPrintkPort, to output
the character via BSP_uart_polled_write().
This means that even if you define BSPConsolePort = BSP_UART_COM2 and
BSPPrintkPort = BSP_UART_COM1, both the console and printk() output
will end up been transmitted on the same port.
Is my understanding correct ?
My patch BTW, just forces uart.c to output via BSPPrintkPort (after
defining it as an extern variable) instead of via BSPConsolePort.
I don't know if this would be acceptable as a general fix for this
problem - the uart.c code is sharable with all the i386 BSPs and I
don't know if all of them define BSPPrintkPort (or set it up
correctly). There may also be other uses of
BSP_output_char_via_serial() other than
simon.clubley at googlemail.com