User`s guide

VxWorks
Hardware Considerations Guide, 6.0
6
with this buffer. Having done all this, memory buffers for DMA operations are
relatively safe from the effect of memory coherency in a copyback situation.
Many processors implement write pipes that can buffer write operations when the
bus controller is busy. Because of this, VxWorks device drivers make use of a
macro,
CACHE_PIPE_FLUSH, to flush cache contents. A CACHE_PIPE_FLUSH
operation should be inserted between any I/O write operation and a I/O read
operation. If a routine begins with an I/O read then drivers should assume that an
I/O write operation precedes it.
MMU Support
VxWorks supports several different MMUs through a virtual memory library.
Because virtual memory is inappropriate for some real-time applications,
VxWorks can be configured to not include virtual memory support. In other
applications, the MMU can provide memory protection for the text section and for
other uses.
For more information on VxWorks virtual memory support, see the following:
the reference entries for vmBaseLib and vmLib
VxWorks Programmers Guide (VxWorks 5.5)
VxWorks Kernel Programmers Guide (VxWorks 6.0)
VxWorks BSP Developer’s Guide
Floating-Point Support
Floating point is supported as a tasking extension to avoid increased context
switch times for tasks that do not use floating-point operations. By default, the
floating-point registers are not saved or restored during context switches. For tasks
that are expected to use the floating-point hardware, each such task can be
spawned with the floating-point option,
VX_FP_TASK, which causes the
floating-point registers to be saved and restored during context switches involving
the specified task. Then, context switch callouts provide the mechanism to
initialize, save, and restore the floating-point context. By switching floating-point
data and control registers in and out, each task effectively shares the single
floating-point unit.
For tasks that do not use the floating-point hardware, the VX_FP_TASK option is
not specified. In this case, floating-point registers are not saved, and the
performance cost incurred by context switch times for those tasks is reduced.