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-linker-scripts.html] - Rev 174
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 >Linker Scripts</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="HAL Interfaces" HREF="hal-interfaces.html"><LINK REL="PREVIOUS" TITLE="Cache Control" HREF="hal-cache-control.html"><LINK REL="NEXT" TITLE="Diagnostic Support" HREF="hal-diagnostic-support.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-cache-control.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Chapter 9. HAL Interfaces</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="hal-diagnostic-support.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECTION" ><H1 CLASS="SECTION" ><A NAME="HAL-LINKER-SCRIPTS">Linker Scripts</H1 ><P >When an eCos application is linked it must be done under the control of a linker script. This script defines the memory areas, addresses and sized, into which the code and data are to be put, and allocates the various sections generated by the compiler to these.</P ><P >The linker script actually used is in <TT CLASS="FILENAME" >lib/target.ld</TT > in the install directory. This is actually manufactured out of two other files: a base linker script and an <TT CLASS="LITERAL" >.ldi</TT > file that was generated by the memory layout tool.</P ><P >The base linker script is usually supplied either by the architecture HAL or the variant HAL. It consists of a set of linker script fragments, in the form of C preprocessor macros, that define the major output sections to be generated by the link operation. The <TT CLASS="LITERAL" >.ldi</TT > file, which is <TT CLASS="LITERAL" >#include'ed</TT > by the base linker script, uses these macro definitions to assign the output sections to the required memory areas and link addresses.</P ><P >The <TT CLASS="LITERAL" >.ldi</TT > file is supplied by the platform HAL, and contains knowledge of the memory layout of the target platform. These files generally conform to a standard naming convention, each file being of the form:</P ><P ><TT CLASS="FILENAME" >pkgconf/mlt_<architecture>_<variant>_<platform>_<startup>.ldi</TT ></P ><P >where <TT CLASS="LITERAL" ><architecture></TT >, <TT CLASS="LITERAL" ><variant></TT > and <TT CLASS="LITERAL" ><platform></TT > are the respective HAL package names and <TT CLASS="LITERAL" ><startup></TT > is the startup type which is usually one of <TT CLASS="LITERAL" >ROM</TT >, <TT CLASS="LITERAL" >RAM</TT > or <TT CLASS="LITERAL" >ROMRAM</TT >.</P ><P >In addition to the <TT CLASS="LITERAL" >.ldi</TT > file, there is also a congruously name <TT CLASS="LITERAL" >.h</TT > file. This may be used by the application to access information defined in the <TT CLASS="LITERAL" >.ldi</TT > file. Specifically it contains the memory layout defined there, together with any additional section names defined by the user. Examples of the latter are heap areas or PCI bus memory access windows.</P ><P >The <TT CLASS="LITERAL" >.ldi</TT > is manufactured by the <SPAN CLASS="APPLICATION" >Memory Layout Tool</SPAN > (MLT). The <SPAN CLASS="APPLICATION" >MLT</SPAN > saves the memory configuration into a file named</P ><P ><TT CLASS="FILENAME" >include/pkgconf/mlt_<architecture>_<variant>_<platform>_<startup>.mlt</TT ></P ><P >in the platform HAL. This file is used by the <SPAN CLASS="APPLICATION" >MLT</SPAN > to manufacture both the <TT CLASS="LITERAL" >.ldi</TT > and <TT CLASS="LITERAL" >.h</TT > files. Users should beware that direct edits the either of these files may be overwritten if the <SPAN CLASS="APPLICATION" >MLT</SPAN > is run and regenerates them from the <TT CLASS="LITERAL" >.mlt</TT > file.</P ><P >The names of the <TT CLASS="LITERAL" >.ldi</TT > and <TT CLASS="LITERAL" >.h</TT > files are defined by macro definitions in <TT CLASS="FILENAME" >pkgconf/system.h</TT >. These are <TT CLASS="LITERAL" >CYGHWR_MEMORY_LAYOUT_LDI</TT > and <TT CLASS="LITERAL" >CYGHWR_MEMORY_LAYOUT_H</TT > respectively. While there will be little need for the application to refer to the <TT CLASS="LITERAL" >.ldi</TT > file directly, it may include the <TT CLASS="LITERAL" >.h</TT > file as follows:</P ><TABLE BORDER="5" BGCOLOR="#E0E0F0" WIDTH="70%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >#include CYGHWR_MEMORY_LAYOUT_H</PRE ></TD ></TR ></TABLE ></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-cache-control.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-diagnostic-support.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Cache Control</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="hal-interfaces.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Diagnostic Support</TD ></TR ></TABLE ></DIV ></BODY ></HTML >