mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-05 23:23:13 +00:00
2003-05-21 Ralf corsepius <corsepiu@faw.uni-ulm.de>
* adaintr.t, ata.t, ide-ctrl.t, target.t: Various typo-fixes, Update to reflect introduction of the cpukit.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2003-05-21 Ralf corsepius <corsepiu@faw.uni-ulm.de>
|
||||||
|
|
||||||
|
* adaintr.t, ata.t, ide-ctrl.t, target.t: Various typo-fixes, Update
|
||||||
|
to reflect introduction of the cpukit.
|
||||||
|
|
||||||
2003-01-28 Joel Sherrill <joel@OARcorp.com>
|
2003-01-28 Joel Sherrill <joel@OARcorp.com>
|
||||||
|
|
||||||
* makefiles.t, support.t: Updated to reflect use of automake in
|
* makefiles.t, support.t: Updated to reflect use of automake in
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ SIGFPE and SIGSEGV. These signals should be raised when a spurious
|
|||||||
or erroneous trap occurs.
|
or erroneous trap occurs.
|
||||||
|
|
||||||
To enable gnat interrupt and error exception support for a particular
|
To enable gnat interrupt and error exception support for a particular
|
||||||
bsp, the following has to be done:
|
BSP, the following has to be done:
|
||||||
|
|
||||||
@enumerate
|
@enumerate
|
||||||
|
|
||||||
@@ -42,12 +42,12 @@ signal depending on the interrupt/trap number.
|
|||||||
@item Install the interrupt handler for all interrupts/traps that will be
|
@item Install the interrupt handler for all interrupts/traps that will be
|
||||||
handled by gnat (including spurious).
|
handled by gnat (including spurious).
|
||||||
|
|
||||||
@item At startup, gnat calls @code{__gnat_install_handler()}. The bsp
|
@item At startup, gnat calls @code{__gnat_install_handler()}. The BSP
|
||||||
must provide this function which installs the interrupt/trap handlers.
|
must provide this function which installs the interrupt/trap handlers.
|
||||||
|
|
||||||
@end enumerate
|
@end enumerate
|
||||||
|
|
||||||
Which cpu-interrupt will generate which signal is implementation
|
Which CPU-interrupt will generate which signal is implementation
|
||||||
defined. There are 32 POSIX signals (1 - 32), and all except the
|
defined. There are 32 POSIX signals (1 - 32), and all except the
|
||||||
three error signals (SIGILL, SIGFPE and SIGSEGV) can be used. I
|
three error signals (SIGILL, SIGFPE and SIGSEGV) can be used. I
|
||||||
would suggest to use the upper 16 (17 - 32) which do not
|
would suggest to use the upper 16 (17 - 32) which do not
|
||||||
@@ -63,7 +63,7 @@ done separately, typically by writing various device register.
|
|||||||
An example program (@code{irq_test}) is included in the
|
An example program (@code{irq_test}) is included in the
|
||||||
Ada examples package to show how interrupts can be handled
|
Ada examples package to show how interrupts can be handled
|
||||||
in Ada95. Note that generation of the test interrupt
|
in Ada95. Note that generation of the test interrupt
|
||||||
(@code{irqforce.c}) is bsp specific and must be edited.
|
(@code{irqforce.c}) is BSP specific and must be edited.
|
||||||
|
|
||||||
NOTE: The @code{irq_test} example was written for the SPARC/ERC32
|
NOTE: The @code{irq_test} example was written for the SPARC/ERC32
|
||||||
BSP.
|
BSP.
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ ATA device - physical device attached to an IDE controller
|
|||||||
@section Introduction
|
@section Introduction
|
||||||
|
|
||||||
ATA driver provides generic interface to an ATA device. ATA driver is
|
ATA driver provides generic interface to an ATA device. ATA driver is
|
||||||
hardware independant implementation of ATA standart defined in working draft
|
hardware independent implementation of ATA standard defined in working draft
|
||||||
"AT Attachment Interface with Extentions (ATA-2)" X3T10/0948D revision 4c,
|
"AT Attachment Interface with Extensions (ATA-2)" X3T10/0948D revision 4c,
|
||||||
March 18, 1996. ATA Driver based on IDE Controller Driver and may be used for
|
March 18, 1996. ATA Driver based on IDE Controller Driver and may be used for
|
||||||
computer systems with single IDE controller and with multiple as well. Although
|
computer systems with single IDE controller and with multiple as well. Although
|
||||||
current implementation has several restrictions detailed below ATA driver
|
current implementation has several restrictions detailed below ATA driver
|
||||||
@@ -29,7 +29,7 @@ commands are implemented
|
|||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
The reference implementation for ATA driver can be found in
|
The reference implementation for ATA driver can be found in
|
||||||
@code{c/src/exec/libblock/src/ata.c}.
|
@code{cpukit/libblock/src/ata.c}.
|
||||||
|
|
||||||
@section Initialization
|
@section Initialization
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ rtems_device_driver ata_initialize(
|
|||||||
|
|
||||||
for each IDE controller successfully initialized by the IDE Controller
|
for each IDE controller successfully initialized by the IDE Controller
|
||||||
driver
|
driver
|
||||||
if the controller is interuupt driven
|
if the controller is interrupt driven
|
||||||
set up interrupt handler
|
set up interrupt handler
|
||||||
|
|
||||||
obtain information about ATA devices attached to the controller
|
obtain information about ATA devices attached to the controller
|
||||||
@@ -67,7 +67,7 @@ rtems_device_driver ata_initialize(
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
Special processing of ATA commands is required because of absence of
|
Special processing of ATA commands is required because of absence of
|
||||||
multitasking enviroment during the driver initialization.
|
multitasking environment during the driver initialization.
|
||||||
|
|
||||||
Detected ATA devices are registered in the system as physical block devices
|
Detected ATA devices are registered in the system as physical block devices
|
||||||
(see libblock library description). Device names are formed based on IDE
|
(see libblock library description). Device names are formed based on IDE
|
||||||
@@ -118,7 +118,7 @@ typedef struct ata_req_s @{
|
|||||||
|
|
||||||
ATA driver supports separate ATA requests queues for each IDE
|
ATA driver supports separate ATA requests queues for each IDE
|
||||||
controller (one queue per controller). The following structure contains
|
controller (one queue per controller). The following structure contains
|
||||||
inforamtion about controller's queue and devices attached to the controller:
|
information about controller's queue and devices attached to the controller:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@group
|
@group
|
||||||
@@ -128,7 +128,7 @@ inforamtion about controller's queue and devices attached to the controller:
|
|||||||
*/
|
*/
|
||||||
typedef struct ata_ide_ctrl_s @{
|
typedef struct ata_ide_ctrl_s @{
|
||||||
rtems_boolean present; /* controller state */
|
rtems_boolean present; /* controller state */
|
||||||
ata_dev_t device[2]; /* ata diveces description */
|
ata_dev_t device[2]; /* ata devices description */
|
||||||
Chain_Control reqs; /* requests chain */
|
Chain_Control reqs; /* requests chain */
|
||||||
@} ata_ide_ctrl_t;
|
@} ata_ide_ctrl_t;
|
||||||
@end group
|
@end group
|
||||||
@@ -137,7 +137,7 @@ typedef struct ata_ide_ctrl_s @{
|
|||||||
Driver uses array of the structures indexed by the controllers minor
|
Driver uses array of the structures indexed by the controllers minor
|
||||||
number.
|
number.
|
||||||
|
|
||||||
The following struture allows to map an ATA device to the pair (IDE
|
The following structure allows to map an ATA device to the pair (IDE
|
||||||
controller minor number device is attached to, device number
|
controller minor number device is attached to, device number
|
||||||
on the controller):
|
on the controller):
|
||||||
|
|
||||||
@@ -176,14 +176,14 @@ typedef enum ata_msg_type_s @{
|
|||||||
All ATA driver functionality is available via ATA driver ioctl. Current
|
All ATA driver functionality is available via ATA driver ioctl. Current
|
||||||
implementation supports only two ioctls: BLKIO_REQUEST and
|
implementation supports only two ioctls: BLKIO_REQUEST and
|
||||||
ATAIO_SET_MULTIPLE_MODE. Each ATA driver ioctl() call generates an
|
ATAIO_SET_MULTIPLE_MODE. Each ATA driver ioctl() call generates an
|
||||||
ATA request which is appended to the apropriate controller queue depending
|
ATA request which is appended to the appropriate controller queue depending
|
||||||
on ATA device the request belongs to. If appended request is single request in
|
on ATA device the request belongs to. If appended request is single request in
|
||||||
the controller's queue then ATA driver event is generated.
|
the controller's queue then ATA driver event is generated.
|
||||||
|
|
||||||
ATA driver task which manages queue of ATA driver events is core of ATA
|
ATA driver task which manages queue of ATA driver events is core of ATA
|
||||||
driver. In current driver version queue of ATA driver events implemented
|
driver. In current driver version queue of ATA driver events implemented
|
||||||
as RTEMS message queue. Each message contains event type, IDE controller
|
as RTEMS message queue. Each message contains event type, IDE controller
|
||||||
minor number on which event happaned and error if an error occured. Events
|
minor number on which event happened and error if an error occurred. Events
|
||||||
may be generated either by ATA driver ioctl call or by ATA driver task itself.
|
may be generated either by ATA driver ioctl call or by ATA driver task itself.
|
||||||
Each time ATA driver task receives an event it gets controller minor number
|
Each time ATA driver task receives an event it gets controller minor number
|
||||||
from event, takes first ATA request from controller queue and processes it
|
from event, takes first ATA request from controller queue and processes it
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ The reference implementation for an IDE Controller driver can
|
|||||||
be found in @code{$RTEMS_SRC_ROOT/c/src/libchip/ide}. This driver
|
be found in @code{$RTEMS_SRC_ROOT/c/src/libchip/ide}. This driver
|
||||||
is based on the libchip concept and allows to work with any of the IDE
|
is based on the libchip concept and allows to work with any of the IDE
|
||||||
Controller chips simply by appropriate configuration of BSP. Drivers for a
|
Controller chips simply by appropriate configuration of BSP. Drivers for a
|
||||||
paticular IDE Controller chips locate in the following directories: drivers
|
particular IDE Controller chips locate in the following directories: drivers
|
||||||
for well-known IDE Controller chips locate into
|
for well-known IDE Controller chips locate into
|
||||||
@code{$RTEMS_SRC_ROOT/c/src/libchip/ide}, drivers for IDE Controller chips
|
@code{$RTEMS_SRC_ROOT/c/src/libchip/ide}, drivers for IDE Controller chips
|
||||||
integrated with CPU locate into
|
integrated with CPU locate into
|
||||||
@@ -38,7 +38,7 @@ for that particular IDE Controller chip.
|
|||||||
|
|
||||||
@section Initialization
|
@section Initialization
|
||||||
|
|
||||||
IDE Controller chips used by a BSP are statically confiured into
|
IDE Controller chips used by a BSP are statically configured into
|
||||||
@code{IDE_Controller_Table}. The @code{ide_controller_initialize} routine is
|
@code{IDE_Controller_Table}. The @code{ide_controller_initialize} routine is
|
||||||
responsible for initialization of all configured IDE controller chips.
|
responsible for initialization of all configured IDE controller chips.
|
||||||
Initialization order of the chips based on the order the chips are defined in
|
Initialization order of the chips based on the order the chips are defined in
|
||||||
@@ -56,7 +56,7 @@ rtems_device_driver ide_controller_initialize(
|
|||||||
)
|
)
|
||||||
@{
|
@{
|
||||||
for each IDE Controller chip configured in IDE_Controller_Table
|
for each IDE Controller chip configured in IDE_Controller_Table
|
||||||
if (BSP dependant probe(if exists) AND device probe for this IDE chip
|
if (BSP dependent probe(if exists) AND device probe for this IDE chip
|
||||||
indicates it is present)
|
indicates it is present)
|
||||||
perform initialization of the particular chip
|
perform initialization of the particular chip
|
||||||
register device with configured name for this chip
|
register device with configured name for this chip
|
||||||
@@ -73,7 +73,7 @@ number. This routine is not allowed to be called from an application.
|
|||||||
@example
|
@example
|
||||||
@group
|
@group
|
||||||
void ide_controller_read_register(rtems_device_minor_number minor,
|
void ide_controller_read_register(rtems_device_minor_number minor,
|
||||||
unsigned32 reg, unsiged32 *value)
|
unsigned32 reg, unsigned32 *value)
|
||||||
@{
|
@{
|
||||||
get IDE Controller chip configuration information from
|
get IDE Controller chip configuration information from
|
||||||
IDE_Controller_Table by minor number
|
IDE_Controller_Table by minor number
|
||||||
@@ -92,7 +92,7 @@ number. This routine is not allowed to be called from an application.
|
|||||||
@example
|
@example
|
||||||
@group
|
@group
|
||||||
void ide_controller_write_register(rtems_device_minor_number minor,
|
void ide_controller_write_register(rtems_device_minor_number minor,
|
||||||
unsigned32 reg, unsiged32 value)
|
unsigned32 reg, unsigned32 value)
|
||||||
@{
|
@{
|
||||||
get IDE Controller chip configuration information from
|
get IDE Controller chip configuration information from
|
||||||
IDE_Controller_Table by minor number
|
IDE_Controller_Table by minor number
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ into one of the following categories.
|
|||||||
This class of code includes the foundation
|
This class of code includes the foundation
|
||||||
routines for the executive proper such as the context switch and
|
routines for the executive proper such as the context switch and
|
||||||
the interrupt subroutine implementations. Sources for the supported
|
the interrupt subroutine implementations. Sources for the supported
|
||||||
processor families can be found in @code{c/src/exec/score/cpu}.
|
processor families can be found in @code{cpukit/score/cpu}.
|
||||||
A good starting point for a new family of processors is the
|
A good starting point for a new family of processors is the
|
||||||
@code{no_cpu} directory, which holds both prototypes and
|
@code{no_cpu} directory, which holds both prototypes and
|
||||||
descriptions of each needed CPU dependent function.
|
descriptions of each needed CPU dependent function.
|
||||||
@@ -34,7 +34,7 @@ descriptions of each needed CPU dependent function.
|
|||||||
CPU dependent code is further subcategorized if the implementation is
|
CPU dependent code is further subcategorized if the implementation is
|
||||||
dependent on a particular CPU model. For example, the MC68000 and MC68020
|
dependent on a particular CPU model. For example, the MC68000 and MC68020
|
||||||
processors are both members of the m68k CPU family but there are significant
|
processors are both members of the m68k CPU family but there are significant
|
||||||
differents between these CPU models which RTEMS must take into account.
|
differences between these CPU models which RTEMS must take into account.
|
||||||
|
|
||||||
@section Board Dependent
|
@section Board Dependent
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ The CPU dependent files in the RTEMS executive source code are found
|
|||||||
in the following directory:
|
in the following directory:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
c/src/exec/score/cpu/@i{CPU}
|
cpukit/score/cpu/@i{CPU}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
where @i{CPU} is replaced with the CPU family name.
|
where @i{CPU} is replaced with the CPU family name.
|
||||||
|
|||||||
Reference in New Issue
Block a user