forked from Imagelibrary/rtems
Redid sections to have right depth.
This commit is contained in:
@@ -18,7 +18,7 @@ The clock driver is located in the clock directory of the BSP.
|
||||
|
||||
@section Primitives
|
||||
|
||||
@section Initialization
|
||||
@subsection Initialization
|
||||
|
||||
The major and minor numbers of the clock driver can be made available to
|
||||
the others, such as the Shared Memory Driver.
|
||||
@@ -36,7 +36,7 @@ the VBR:
|
||||
rtems_interrupt_catch (InterruptHandler, CONSOLE_VECTOR, &old_handler);
|
||||
@end example
|
||||
|
||||
@section The clock interrupt subroutine
|
||||
@subsection The Clock Interrupt Subroutine
|
||||
|
||||
It only has to inform the kernel that a ticker has elapsed, so call :
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ $RTEMS_ROOT/c/src/lib/libc directory,
|
||||
|
||||
@end itemize
|
||||
|
||||
@section Termios and Polled I/O
|
||||
@subsection Termios and Polled I/O
|
||||
|
||||
You have to point Termios out which functions are used for simple
|
||||
character input/output:
|
||||
@@ -122,17 +122,12 @@ int pollread(int minor)
|
||||
|
||||
wait for a character to be available in the UART channel minor, then return it.
|
||||
|
||||
@section Termios and Interrupt Driven I/O
|
||||
@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:
|
||||
|
||||
|
||||
Function
|
||||
|
||||
Description
|
||||
|
||||
@example
|
||||
rtems_isr InterruptHandler (rtems_vector_number v)
|
||||
@end example
|
||||
@@ -162,7 +157,7 @@ UART.
|
||||
|
||||
Figure 5: general TERMIOS driven serial driver functioning
|
||||
|
||||
@section Initialization
|
||||
@subsection Initialization
|
||||
|
||||
The driver initialization is called once during RTEMS initialization
|
||||
process.
|
||||
@@ -200,7 +195,7 @@ rtems_io_register_name ("dev/console", major, i);
|
||||
|
||||
@end itemize
|
||||
|
||||
@section Opening a serial device
|
||||
@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,
|
||||
@@ -221,13 +216,13 @@ The gen68340 BSP defines two kinds of callbacks:
|
||||
|
||||
@end itemize
|
||||
|
||||
@ection Polled I/O
|
||||
@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.
|
||||
|
||||
@ection Interrupt Driven I/O
|
||||
@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
|
||||
@@ -236,14 +231,14 @@ interrupt subroutine (cf. 8.4.2).
|
||||
|
||||
But you actually have to provide a pointer to the InterruptWrite function.
|
||||
|
||||
@section Closing a serial device
|
||||
@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.
|
||||
|
||||
@section Reading characters from the serial device
|
||||
@subsection Reading characters from the serial device
|
||||
|
||||
The driver entry point is: console_read.
|
||||
|
||||
@@ -251,7 +246,7 @@ You just have to return the content of the Termios input buffer.
|
||||
|
||||
Call rtems_termios_read.
|
||||
|
||||
@section Writing characters to the serial device
|
||||
@subsection Writing characters to the serial device
|
||||
|
||||
The driver entry point is: console_write.
|
||||
|
||||
@@ -260,7 +255,7 @@ buffer.
|
||||
|
||||
Call rtems_termios_write.
|
||||
|
||||
@section Changing serial line parameters
|
||||
@subsection Changing serial line parameters
|
||||
|
||||
The driver entry point is: console_control.
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ You'll find two files under the $BSP340_ROOT/start340/ directory, open
|
||||
rtemsfor340only.s which holds initialization code for a MC68340 board only
|
||||
and is simpler.
|
||||
|
||||
@section The Interrupts Vector Table
|
||||
@subsection The Interrupts Vector Table
|
||||
|
||||
After the entry label starts a code section in which some room is
|
||||
allocated for the table of interrupts vectors. They are assigned to the
|
||||
@@ -44,7 +44,7 @@ $BSP_ROOT/startup/dumpanic.c - that pri nts which address caused the
|
||||
interrupt and the contents of the registers, stack...), but this should
|
||||
not return.
|
||||
|
||||
@section Chip Select Initialization
|
||||
@subsection Chip Select Initialization
|
||||
|
||||
When the microprocessor accesses a memory area, address decoding is
|
||||
handled by an address decoder (!), so that the microprocessor knows which
|
||||
@@ -57,20 +57,20 @@ the linkcmds settings. In this BSP ROM and RAM addresses can be found in
|
||||
both the linkcmds and initialization code, but this is not a great way to
|
||||
do, better use some shared variables .
|
||||
|
||||
@section Integrated processor registers initialization
|
||||
@subsection Integrated processor registers initialization
|
||||
|
||||
There are always some specific integrated processor registers
|
||||
initialization to do. Integrated processors' user manuals often detail
|
||||
them.
|
||||
|
||||
@section Data section recopy
|
||||
@subsection Data section recopy
|
||||
|
||||
The next initialization part can be found in
|
||||
$BSP340_ROOT/start340/init68340.c. First the Interrupt Vector Table is
|
||||
copied into RAM, then the data section recopy is initiated
|
||||
(_CopyDataClearBSSAndStart in $BSP340_ROOT/start340/startfor340only.s).
|
||||
|
||||
This code :
|
||||
This code performs the following actions:
|
||||
|
||||
@itemize @bullet
|
||||
|
||||
@@ -85,7 +85,7 @@ Then control is passed to the RTEMS-specific initialization code.
|
||||
|
||||
@section RTEMS-Specific Initialization
|
||||
|
||||
@section The RTEMS configuration table
|
||||
@subsection The RTEMS configuration table
|
||||
|
||||
The RTEMS configuration table contains the maximum number of objects RTEMS
|
||||
can handle during the application (e.g. maximum number of tasks,
|
||||
@@ -101,7 +101,7 @@ The BSP_Configuration label points on this table.
|
||||
For more information on the RTEMS configuration table, refer to C user's
|
||||
guide, chapter 23 <insert a link here>.
|
||||
|
||||
@section RTEMS initialization procedure
|
||||
@subsection RTEMS initialization procedure
|
||||
|
||||
The RTEMS initialization procedure is described in the 3rd chapter of the
|
||||
C user's manual <insert a link here>. Please read it carefully.
|
||||
@@ -109,32 +109,28 @@ C user's manual <insert a link here>. Please read it carefully.
|
||||
There are a few BSP specific functions called from the initialization
|
||||
manager. They can be found in the startup directory of the BSP.
|
||||
|
||||
@table @b
|
||||
|
||||
|
||||
File
|
||||
|
||||
Function
|
||||
|
||||
Note
|
||||
|
||||
bspstart.c
|
||||
|
||||
|
||||
@item bspstart.c
|
||||
|
||||
It starts the application. It includes application, board, and monitor
|
||||
specific initialization and configuration.
|
||||
|
||||
bspstart.c
|
||||
@item bspstart.c
|
||||
|
||||
bsp_pretasking_hook
|
||||
@table @b
|
||||
@item bsp_pretasking_hook
|
||||
|
||||
It starts libc support (needed to allocate some memory using C primitive
|
||||
malloc for example). Heap size must be passed in argument, this is the one
|
||||
which is defined in the linkcmds (cf. 5.)
|
||||
|
||||
bspstart.c
|
||||
@end table
|
||||
|
||||
bsp_start
|
||||
@item bspstart.c
|
||||
|
||||
@table @b
|
||||
@item bsp_start
|
||||
|
||||
Here the user and application specific configuration table has been
|
||||
"loaded" so that BSP_Configuration is up to date.
|
||||
@@ -143,13 +139,21 @@ You can make last modifications here, for instance reserve more room for
|
||||
the RTEMS Work Space, or adjust the heap size (you can for example use the
|
||||
memory left for the lone heap).
|
||||
|
||||
bspclean.c
|
||||
@end table
|
||||
|
||||
bsp_cleanup
|
||||
@item bspclean.c
|
||||
|
||||
@table @b
|
||||
|
||||
@item bsp_cleanup
|
||||
|
||||
Return control to the monitor.
|
||||
|
||||
@section Drivers initialization
|
||||
@end table
|
||||
|
||||
@end table
|
||||
|
||||
@subsection Drivers initialization
|
||||
|
||||
The Driver Address Table is part of the RTEMS configuration table. It
|
||||
defines RTEMS drivers entry points (initialization, open, close, read,
|
||||
|
||||
Reference in New Issue
Block a user