UART: Difference between revisions

4 bytes removed ,  28 days ago
m
Bot: fixing lint errors, replacing obsolete HTML tags:
[unchecked revision][unchecked revision]
(Initial checkin)
m (Bot: fixing lint errors, replacing obsolete HTML tags:)
 
Line 2:
 
This article provides a theoretical introduction to the topic of UARTs and their relevance to operating system development. It does not intend to provide a comprehensive guide to programming any specific implementation, rather to introduce the reader to a high-level understanding of the topic of UART hardware and their use in serial communication.
 
== Common Implementations ==
The most common implementation of a UART is the [[wikipedia:16550_UART|16650 UART]], developed in 1987 by National Semiconductor. It is frequently used to implement the serial port interface for [[wikipedia:IBM_Personal_Computer|IBM PC]] compatible personal computers, where it is commonly connected to an [[wikipedia:RS-232|RS-232]] port. The implementation in [[x86|x86/64]] is known as the COM interface, which is accessible via standard [[I/O_Ports|IO Ports]] mapped to addresses from <tt>0x3F8</tt> through <tt>0x3FF</tt>.
Line 12 ⟶ 11:
UART hardware typically includes a clock generator responsible for regulating the [[wikipedia:Symbol_rate|baud rate]] of communications. As well as multiple memory-mapped registers, commonly referred to as 'shift registers', responsible for holding data to be transmitted or received.
For a more detailed description of an individual hardware implementation, refer to its datasheet. A datasheet explaining the individual hardware components of the 16550D UART manufactured by Texas Instruments can be obtained [http://www.ti.com/product/PC16550D here].
 
== Serial Communication ==
Serial communication is facilitated by the UART hardware taking bytes of data and transmitting individual bits in a sequential fashion, hence the use of the term 'serial'. At the destination, the receiving UART reassembles the stream of bits into the complete data payload. This is facilitated by the use of the aforementioned 'shift registers', which will typically interface with the driver via the generation of [[interrupts]].
Line 32 ⟶ 30:
 
The commonly used standard for serial configuration is known as [[wikipedia:8-N-1|8N1]]: eight (8) data bits, no (N) parity bit, and one (1) stop bit.
 
== Uses ==
Prior to the 2000s, serial ports were a common way for personal computers to interface with external consumer peripherals. Despite being more-or-less entirely superseded by [[USB]] for communicating with peripherals in personal computers, UART remains in more common use in embedded systems for communicating with hardware peripherals.
 
Serial programming is of special relevance to operating system development, as it provides an easy to implement and robust interface between an operating system and external logging mechanisms. In systems where video hardware may not be present, or may not be suitable for the printing of debugging information, a serial driver can easily be implemented to fulfill this need. Serial port interfaces to the host operating system are widely available in common PC emulators such as [[QEMU]] and [[bochs]].
 
== See Also ==
=== Related Articles ===
[[Serial_Ports|Serial Ports]]
=== Related Links ===
* [httphttps://en.wikibooks.org/wiki/Serial_Programming A Wikibook about serial device programming]
 
[[Category:Network Hardware]]
[[Category:Common Devices]]
40

edits