summaryrefslogtreecommitdiffstats
path: root/doc/bsp_howto/console.t
diff options
context:
space:
mode:
Diffstat (limited to 'doc/bsp_howto/console.t')
-rw-r--r--doc/bsp_howto/console.t269
1 files changed, 0 insertions, 269 deletions
diff --git a/doc/bsp_howto/console.t b/doc/bsp_howto/console.t
deleted file mode 100644
index 09d8b25640..0000000000
--- a/doc/bsp_howto/console.t
+++ /dev/null
@@ -1,269 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-1998.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c $Id$
-@c
-
-@chapter Console Driver
-
-@section Introduction
-
-This chapter describes how to do a console driver using RTEMS Termios
-support.
-
-The serial driver is called as soon as printf/scanf or read/write kind of
-input/output are needed. There are two main functioning modes:
-
-@itemize @bullet
-
-@item console: formatted input/output, with special characters (end of
-line, tabulations, etc...) recognition and processing,
-
-@item raw: permits raw data processing.
-
-@end itemize
-
-We may think that one need two serial drivers to deal with those two types
-of data, but Termios permits having only one driver.
-
-@section Termios
-
-Termios is a standard for terminal management, included in several Unix
-versions. Termios is good because:
-
-@itemize @bullet
-
-@item from the user's side: primitives to access the terminal and change
-configuration settings are the same under Unix and Rtems.
-
-@item from the BSP developer's side: it frees you from dealing with buffer
-states and mutual exclusions on them.
-
-@end itemize
-
-Termios support includes:
-
-@itemize @bullet
-
-@item raw and console handling,
-
-@item blocking or non-blocking characters receive, with or without
-Timeout.
-
-@end itemize
-
-For more information on Termios, type man termios in your Unix box or go
-to http://www.freebsd.org/cgi/man.cgi.
-
-@section Driver Functioning Modes
-
-There are generally two main functioning modes for an UART (Universal
-Asynchronous Receiver-Transmitter, i.e. the serial chip):
-
-@itemize @bullet
-
-@item polling mode: the processor blocks on sending/receiving characters.
-This mode is not powerful, but is necessary when one wants to print an
-error message when the board hung. This is also the most simple mode to
-program,
-
-@item interrupt mode: the processor doesn't block on sending/receiving
-characters. Two buffers (one for the in-going characters, the others for
-the characters to be sent) are used. An interrupt is raised as soon as a
-character is in the UART. Then the int errupt subroutine insert the
-character at the input buffer queue. When a character is asked for input,
-this at the head of the buffer is returned. When characters have to be
-sent, one have to put the first characters (the number depends on the
-UART) in th e UART. Then an interrupt is raised when all the characters
-have been emitted. The interrupt subroutine has to send the characters
-remaining in the output buffer the same way.
-
-@end itemize
-
-@section Serial Driver Functioning Overview
-
-Figure 5 is an attempt of showing how a Termios driven serial driver works :
-
-@itemize @bullet
-
-@item the application programmer uses standard C library call (printf,
-scanf, read, write, etc.),
-
-@item C library (in fact that's Cygnus Newlib) calls RTEMS procedure: glue
-is made in newlib*.c files which can be found under
-$RTEMS_ROOT/c/src/lib/libc directory,
-
-@item Glue code calls your serial driver entry routines.
-
-@end itemize
-
-@subsection Termios and Polled I/O
-
-You have to point Termios out which functions are used for simple
-character input/output:
-
-
-Function
-
-Description
-
-@example
-int pollWrite (int minor, const char *buf, int len)
-
-for (i=0; i<len; i++) @{
- put buf[i] into the UART channel minor
- wait for the character to be transmitted
- on the serial line
-@}
-int pollread(int minor)
-@end example
-
-wait for a character to be available in the UART channel minor, then return it.
-
-@subsection Termios and Interrupt Driven I/O
-
-The UART generally generates interrupts when it is ready to accept or to
-emit a number of characters. In this mode, the interrupt subroutine is the
-core of the driver:
-
-@example
-rtems_isr InterruptHandler (rtems_vector_number v)
-@end example
-
-check whether there was an error
-
-if some characters were received:
- ask Termios to put them on his input buffer
-
-if some characters have been transmitted (i.e. the UART output buffer is empty)
- tell TERMIOS that the characters have been
- transmitted. The TERMIOS routine will call
- the InterruptWrite function with the number
- of characters not transmitted yet if it is
- not zero.
-
-@example
-static int InterruptWrite(int minor, const char *buf, int len)
-@end example
-
-you have to put the n first buf characters in the UART channel minor
-buffer (n is the UART channel size, n=1 on the MC68640). Generally, an
-interrupt is raised after these n characters being transmitted. So you may
-have to enable the UART interrupts after having put the characters in the
-UART.
-
-
-Figure 5: general TERMIOS driven serial driver functioning
-
-@subsection Initialization
-
-The driver initialization is called once during RTEMS initialization
-process.
-
-The console_initialize function has to :
-
-@itemize @bullet
-
-@item initialize Termios support: call rtems_termios_initialize(),
-
-@item initialize your integrated processor's UART: the operation is
-normally described in your user's manual and you must follow these
-instructions but it usually consists in:
-
-@item reinitialize the UART channels,
-
-@item set the channels configuration to Termios default one, i.e.: 9600
-bauds, no parity, 1 stop bit, 8 bits per character,
-
-@item register your console interrupt routine to RTEMS:
-
-@example
- rtems_interrupt_catch (InterruptHandler,CONSOLE_VECTOR,&old_handler);
-@end example
-
-@item enable the UART channels,
-
-@item register your device name: in order to use the console (i.e. being
-able to do printf/scanf on stdin, stdout, and stderr), you have to
-register the "/dev/console" device:
-
-@example
-rtems_io_register_name ("dev/console", major, i);
-@end example
-
-@end itemize
-
-@subsection Opening a serial device
-
-The console device is opened during RTEMS initialization but the
-console_open function is called when a new device is opened. For instance,
-if you register the "/dev/tty1" device for the UART channel 2, the
-console_open will be called with a fopen("/dev/t ty", mode) in your
-application.
-
-The console_open function has to inform Termios of your low-level function
-for serial line support; the "callbacks".
-
-The gen68340 BSP defines two kinds of callbacks:
-
-@itemize @bullet
-
-@item functions to use with polled input/output,
-
-@item functions to use with interrupt input/output.
-
-@end itemize
-
-@subsubsection Polled I/O
-
-You have to point Termios out which functions are used for simple
-character input/output, i.e. pointers to pollWrite and pollRead functions
-defined in 8.4.1.
-
-@subsubsection Interrupt Driven I/O
-
-Driver functioning is quite different in this mode. You can see there's no
-read function passed to Termios. Indeed a console_read call returns the
-content of Termios input buffer. This buffer is filled in the driver
-interrupt subroutine (cf. 8.4.2).
-
-But you actually have to provide a pointer to the InterruptWrite function.
-
-@subsection Closing a serial device
-
-The driver entry point is: console_close.
-
-You just have to notify Termios that the serial device was closed, with a
-call to rtems_termios_close.
-
-@subsection Reading characters from the serial device
-
-The driver entry point is: console_read.
-
-You just have to return the content of the Termios input buffer.
-
-Call rtems_termios_read.
-
-@subsection Writing characters to the serial device
-
-The driver entry point is: console_write.
-
-You just have to add the characters at the end of the Termios output
-buffer.
-
-Call rtems_termios_write.
-
-@subsection Changing serial line parameters
-
-The driver entry point is: console_control.
-
-The application write is able to control the serial line configuration
-with Termios calls (such as the ioctl command, see Termios man page for
-more details). If you want to support dynamic configuration, you have to
-write the console_control piece of code . Look at the gen68340 BSP for an
-example of how it is done. Basically ioctl commands call console_control
-with the serial line configuration in a Termios structure. You just have
-to reinitialize the UART with the correct settings.
-