16550 UART Requirement for OS-A Platforms


Kumar Sankaran
 

Hi All,

During our Platform HSC meeting today, one of the topics that came up for discussion was whether we should mandate the 16550 UART for all OS-A platforms and keep this requirement within the “Common Requirements” document that would apply to all OS-A platforms.

I am starting this thread to discuss this topic. Please provide all your feedback in this thread.

 

Currently, we are mandating the 16550 UART requirement for both the OS-A Embedded and OS-A Server platforms. The goal is for hardware to implement support for the 16550 UART and the low-level bring-up firmware to support this UART as a console. We are not mandating any OS requirements for UART.

Below are some of the reasons for this.

  • All OS-A platforms will need some kind of early console serial port access in boot firmware
  • 16550 UART is a pretty standard UART supported widely. ARM mandates 8250 UART for all servers.
  • To cover the case for OS flavors that won’t have any UART support, we limited this requirement to firmware only.

 

To give context, the below is the wording we proposed for the UART feature requirement as is mentioned in the spec currently.

2.1.5. System Peripherals

2.1.5.1. UART/Serial Console

In order to facilitate the bring-up and debug of the low level initial platform, hardware is required to implement a UART port that confirms to the following requirements and firmware must support the console using this UART:

  • The UART register addresses are required to be aligned to 4 byte boundaries. If the implemented register width is less than 4 bytes then the implemented bytes are required to be mapped starting at the smallest address.
  • The UART port implementation is required to be register-compatible with one of the following:
    • UART 16550 - MANDATORY
    • UART 8250 - DEPRECATED

 

Regards

Kumar

 


Jonathan Behrens <behrensj@...>
 

Could you say a bit more about the OS aspect? Is the idea that an OS must be provided access to a UART, but has the option to ignore it in favor of other I/O methods? I don't think we should allow firmware to block the OS from using the UART, but I'm not sure if that is being proposed

Jonathan


On Mon, Nov 15, 2021 at 3:08 PM Kumar Sankaran via lists.riscv.org <ksankaran=ventanamicro.com@...> wrote:

Hi All,

During our Platform HSC meeting today, one of the topics that came up for discussion was whether we should mandate the 16550 UART for all OS-A platforms and keep this requirement within the “Common Requirements” document that would apply to all OS-A platforms.

I am starting this thread to discuss this topic. Please provide all your feedback in this thread.

 

Currently, we are mandating the 16550 UART requirement for both the OS-A Embedded and OS-A Server platforms. The goal is for hardware to implement support for the 16550 UART and the low-level bring-up firmware to support this UART as a console. We are not mandating any OS requirements for UART.

Below are some of the reasons for this.

  • All OS-A platforms will need some kind of early console serial port access in boot firmware
  • 16550 UART is a pretty standard UART supported widely. ARM mandates 8250 UART for all servers.
  • To cover the case for OS flavors that won’t have any UART support, we limited this requirement to firmware only.

 

To give context, the below is the wording we proposed for the UART feature requirement as is mentioned in the spec currently.

2.1.5. System Peripherals

2.1.5.1. UART/Serial Console

In order to facilitate the bring-up and debug of the low level initial platform, hardware is required to implement a UART port that confirms to the following requirements and firmware must support the console using this UART:

  • The UART register addresses are required to be aligned to 4 byte boundaries. If the implemented register width is less than 4 bytes then the implemented bytes are required to be mapped starting at the smallest address.
  • The UART port implementation is required to be register-compatible with one of the following:
    • UART 16550 - MANDATORY
    • UART 8250 - DEPRECATED

 

Regards

Kumar

 


Anup Patel
 

On Tue, Nov 16, 2021 at 9:05 PM Jonathan Behrens <behrensj@...> wrote:

Could you say a bit more about the OS aspect? Is the idea that an OS must be provided access to a UART, but has the option to ignore it in favor of other I/O methods? I don't think we should allow firmware to block the OS from using the UART, but I'm not sure if that is being proposed
The required UART is not for exclusive use by firmwares so the OS can
certainly use the UART but it is not mandatory for the OS to support
the UART.

Regards,
Anup


Jonathan

On Mon, Nov 15, 2021 at 3:08 PM Kumar Sankaran via lists.riscv.org <ksankaran=ventanamicro.com@...> wrote:

Hi All,

During our Platform HSC meeting today, one of the topics that came up for discussion was whether we should mandate the 16550 UART for all OS-A platforms and keep this requirement within the “Common Requirements” document that would apply to all OS-A platforms.

I am starting this thread to discuss this topic. Please provide all your feedback in this thread.



Currently, we are mandating the 16550 UART requirement for both the OS-A Embedded and OS-A Server platforms. The goal is for hardware to implement support for the 16550 UART and the low-level bring-up firmware to support this UART as a console. We are not mandating any OS requirements for UART.

Below are some of the reasons for this.

All OS-A platforms will need some kind of early console serial port access in boot firmware
16550 UART is a pretty standard UART supported widely. ARM mandates 8250 UART for all servers.
To cover the case for OS flavors that won’t have any UART support, we limited this requirement to firmware only.



To give context, the below is the wording we proposed for the UART feature requirement as is mentioned in the spec currently.

2.1.5. System Peripherals

2.1.5.1. UART/Serial Console

In order to facilitate the bring-up and debug of the low level initial platform, hardware is required to implement a UART port that confirms to the following requirements and firmware must support the console using this UART:

The UART register addresses are required to be aligned to 4 byte boundaries. If the implemented register width is less than 4 bytes then the implemented bytes are required to be mapped starting at the smallest address.
The UART port implementation is required to be register-compatible with one of the following:

UART 16550 - MANDATORY
UART 8250 - DEPRECATED



Regards

Kumar