URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [doc/] [html/] [ref/] [hal-porting-structure.html] - Rev 437
Go to most recent revision | Compare with Previous | Blame | View Log
<!-- Copyright (C) 2003 Red Hat, Inc. -->
<!-- This material may be distributed only subject to the terms -->
<!-- and conditions set forth in the Open Publication License, v1.0 -->
<!-- or later (the latest version is presently available at -->
<!-- http://www.opencontent.org/openpub/). -->
<!-- Distribution of the work or derivative of the work in any -->
<!-- standard (paper) book form is prohibited unless prior -->
<!-- permission is obtained from the copyright holder. -->
<HTML
><HEAD
><TITLE
>HAL Structure</TITLE
><meta name="MSSmartTagsPreventParsing" content="TRUE">
<META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="eCos Reference Manual"
HREF="ecos-ref.html"><LINK
REL="UP"
TITLE=" Porting Guide"
HREF="hal-porting-guide.html"><LINK
REL="PREVIOUS"
TITLE=" Porting Guide"
HREF="hal-porting-guide.html"><LINK
REL="NEXT"
TITLE="Virtual Vectors (eCos/ROM Monitor Calling Interface)"
HREF="hal-calling-if.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>eCos Reference Manual</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="hal-porting-guide.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 11. Porting Guide</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="hal-calling-if.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="HAL-PORTING-STRUCTURE">HAL Structure</H1
><P
>In order to write an eCos HAL it's a good idea to have at least a
passing understanding of how the HAL interacts with the rest of the
system.</P
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN8659">HAL Classes</H2
><P
>The eCos HAL consists of four HAL sub-classes. This table gives a
brief description of each class and partly reiterates the description
in <A
HREF="hal-architecture-variant-and-platform.html"
>Chapter 7</A
>. The links
refer to the on-line CVS tree (specifically to the sub-HALs used by
the PowerPC MBX target).</P
><DIV
CLASS="INFORMALTABLE"
><A
NAME="AEN8663"><P
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><THEAD
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
>HAL type</TH
><TH
ALIGN="LEFT"
VALIGN="TOP"
>Description</TH
><TH
ALIGN="LEFT"
VALIGN="TOP"
>Functionality Overview</TH
></TR
></THEAD
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Common HAL <A
HREF="http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/ecos/packages/hal/common/current?cvsroot=ecos"
TARGET="_top"
>(hal/common)</A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Configuration options and functionality shared by all HALs.</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Generic debugging functionality, driver API, eCos/ROM monitor
calling interface, and tests.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Architecture HAL <A
HREF="http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/ecos/packages/hal/powerpc/arch/current?cvsroot=ecos"
TARGET="_top"
>(hal/<architecture>/arch)</A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Functionality specific to the given architecture. Also default
implementations of some functionality which can be overridden by
variant or platform HALs.</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Architecture specific debugger functionality (handles single
stepping, exception-to-signal conversion, etc.),
exception/interrupt vector definitions and handlers, cache
definition and control macros, context switching code, assembler
functions for early system initialization, configuration options,
and possibly tests. </TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Variant HAL <A
HREF="http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/ecos/packages/hal/powerpc/mpc8xx/current?cvsroot=ecos"
TARGET="_top"
>(hal/<architecture>/<variant>)</A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Some CPU architectures consist of a number variants, for example
MIPS CPUs come in both 32 and 64 bit versions, and some variants
have embedded features additional to the CPU core.</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Variant extensions to the architecture code (cache,
exception/interrupt), configuration options, possibly drivers for
variant on-core devices, and possibly tests.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Platform HAL <A
HREF="http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/ecos/packages/hal/powerpc/mbx/current?cvsroot=ecos"
TARGET="_top"
>(hal/<architecture>/<platform>)</A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Contains functionality and configuration options specific to the
platform.</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Early platform initialization code, platform memory layout
specification, configuration options (processor speed, compiler
options), diagnostic IO functions, debugger IO functions,
platform specific extensions to architecture or variant code
(off-core interrupt controller), and possibly tests.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Auxiliary HAL <A
HREF="http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/ecos/packages/hal/powerpc/quicc/current?cvsroot=ecos"
TARGET="_top"
>(hal/<architecture>/<module>)</A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Some variants share common modules on the core. Motorola's PowerPC
QUICC is an example of such a module.</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Module specific functionality (interrupt controller, simple
device drivers), possibly tests.</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
></DIV
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN8696">File Descriptions</H2
><P
>Listed below are the files found in various HALs, with a short
description of what each file contains. When looking in existing HALs
beware that they do not necessarily follow this naming scheme.
If you are writing a new HAL, please try to follow it as
closely as possible. Still, no two targets are the same, so sometimes
it makes sense to use additional files.</P
><DIV
CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN8699">Common HAL</H3
><DIV
CLASS="INFORMALTABLE"
><A
NAME="AEN8701"><P
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><THEAD
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
>File</TH
><TH
ALIGN="LEFT"
VALIGN="TOP"
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/dbg-thread-syscall.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines the thread debugging syscall function. This is used by
the ROM monitor to access the thread debugging API in the RAM
application. .</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/dbg-threads-api.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines the thread debugging API. .</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/drv_api.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines the driver API.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/generic-stub.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines the generic stub features.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/hal_if.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines the ROM/RAM calling interface API.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/hal_misc.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines miscellaneous helper functions shared by all HALs.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/hal_stub.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines eCos mappings of GDB stub features.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/dbg-threads-syscall.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Thread debugging implementation.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/drv_api.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Driver API implementation. Depending on configuration this
provides either wrappers for the kernel API, or a minimal
implementation of these features. This allows drivers to be written
relying only on HAL features.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/dummy.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Empty dummy file ensuring creation of libtarget.a.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/generic-stub.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Generic GDB stub implementation. This provides the
communication protocol used to communicate with GDB over a serial
device or via the network.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/hal_if.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>ROM/RAM calling interface implementation. Provides wrappers from
the calling interface API to the eCos features used for the
implementation.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/hal_misc.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Various helper functions shared by all platforms and
architectures.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/hal_stub.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Wrappers from eCos HAL features to the features required by the
generic GDB stub.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/stubrom/stubrom.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>The file used to build eCos GDB stub images. Basically a
cyg_start function with a hard coded breakpoint.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/thread-packets.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>More thread debugging related functions.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/thread-pkts.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines more thread debugging related function.</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
></DIV
><DIV
CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN8776">Architecture HAL</H3
><P
>Some architecture HALs may add extra files for architecture
specific serial drivers, or for handling interrupts and exceptions if it
makes sense.</P
><P
>Note that many of the definitions in these files are only
conditionally defined - if the equivalent variant or platform headers
provide the definitions, those override the generic architecture
definitions.</P
><DIV
CLASS="INFORMALTABLE"
><A
NAME="AEN8780"><P
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><THEAD
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
>File</TH
><TH
ALIGN="LEFT"
VALIGN="TOP"
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/arch.inc</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Various assembly macros used during system initialization.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/basetype.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Endian, label, alignment, and type size definitions. These
override common defaults in CYGPKG_INFRA.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/hal_arch.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Saved register frame format, various thread, register and stack
related macros.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/hal_cache.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Cache definitions and cache control macros.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/hal_intr.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Exception and interrupt definitions. Macros for configuring and
controlling interrupts. eCos real-time clock control macros.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/hal_io.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Macros for accessing IO devices.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/<arch>_regs.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Architecture register definitions.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/<arch>_stub.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Architecture stub definitions. In particular the register frame
layout used by GDB. This may differ from the one used by eCos.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/<arch>.inc</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Architecture convenience assembly macros.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/<arch>.ld</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Linker macros.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/context.S</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Functions handling context switching and setjmp/longjmp.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/hal_misc.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Exception and interrupt handlers in C. Various other utility
functions.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/hal_mk_defs.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Used to export definitions from C header files to assembler
header files.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/hal_intr.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Any necessary interrupt handling functions.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/<arch>stub.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Architecture stub code. Contains functions for translating eCos
exceptions to UNIX signals and functions for single-stepping.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/vectors.S</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Exception, interrupt and early initialization code.</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
></DIV
><DIV
CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN8851">Variant HAL</H3
><P
>Some variant HALs may add extra files for variant specific serial
drivers, or for handling interrupts/exceptions if it makes sense.</P
><P
>Note that these files may be mostly empty if the CPU variant can be
controlled by the generic architecture macros. The definitions present
are only conditionally defined - if the equivalent platform headers
provide the definitions, those override the variant definitions.</P
><DIV
CLASS="INFORMALTABLE"
><A
NAME="AEN8855"><P
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><THEAD
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
>File</TH
><TH
ALIGN="LEFT"
VALIGN="TOP"
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/var_arch.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Saved register frame format, various thread, register and stack
related macros.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/var_cache.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Cache related macros.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/var_intr.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Interrupt related macros.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/var_regs.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Extra register definitions for the CPU variant.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/variant.inc</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Various assembly macros used during system initialization.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/var_intr.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Interrupt functions if necessary.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/var_misc.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>hal_variant_init function and any necessary extra functions.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/variant.S</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Interrupt handler table definition.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/<arch>_<variant>.ld</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Linker macros.</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
></DIV
><DIV
CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN8898">Platform HAL</H3
><P
>Extras files may be added for platform specific serial
drivers. Extra files for handling interrupts and exceptions will be
present if it makes sense.</P
><DIV
CLASS="INFORMALTABLE"
><A
NAME="AEN8901"><P
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><THEAD
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
>File</TH
><TH
ALIGN="LEFT"
VALIGN="TOP"
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/hal_diag.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines functions used for HAL diagnostics output. This would
normally be the ROM calling interface wrappers, but may also be the
low-level IO functions themselves, saving a little overhead.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/platform.inc</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Platform initialization code. This includes memory controller,
vectors, and monitor initialization. Depending on the architecture,
other things may need defining here as well: interrupt decoding,
status register initialization value, etc.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/plf_cache.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Platform specific cache handling.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/plf_intr.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Platform specific interrupt handling.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/plf_io.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>PCI IO definitions and macros. May also be used to override
generic HAL IO macros if the platform endianness differs from that of
the CPU.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>include/plf_stub.h</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Defines stub initializer and board reset details.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/hal_diag.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>May contain the low-level device drivers. But these may also
reside in plf_stub.c</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/platform.S</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Memory controller setup macro, and if necessary interrupt
springboard code.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/plf_misc.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Platform initialization code.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/plf_mk_defs.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Used to export definitions from C header files to assembler
header files.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><TT
CLASS="FILENAME"
>src/plf_stub.c</TT
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Platform specific stub initialization and possibly the low-level
device driver.</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
><P
>The platform HAL also contains files specifying the platform's
memory layout. These files are located in
<TT
CLASS="FILENAME"
>include/pkgconf</TT
>.</P
></DIV
><DIV
CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN8954">Auxiliary HAL</H3
><P
>Auxiliary HALs contain whatever files are necessary to provide the
required functionality. There are no predefined set of files required
in an auxiliary HAL.</P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="hal-porting-guide.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="ecos-ref.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="hal-calling-if.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Porting Guide</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="hal-porting-guide.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Virtual Vectors (eCos/ROM Monitor Calling Interface)</TD
></TR
></TABLE
></DIV
></BODY
></HTML
> Go to most recent revision | Compare with Previous | Blame | View Log
