eCos Home
RedBoot Home
About eCos
Supported Hardware
Downloading and Installation
Documentation
FAQ
Mailing lists
Problems
Licensing
Anonymous CVS
Contributions and Development Projects
Legal
|
Building the MN10300/AM33 development tools for Windows
Introduction
eCos requires mn10300-elf development tools to develop programs for MN10300/AM33 targets.
The development tools come in three parts: the GNU compiler collection
(GCC), the GNU Debugger (GDB) and the GNU binary utilities,
which include the GNU assembler and linker.
This page details the steps required to download and build these development tools.
Downloading the tool sources
GNU Binary Utilities
It is recommended that eCos is used with the most recent official
release of the GNU Binary Utilities (binutils), currently version 2.10.1.
This is available from the binutils area of the
main GNU software
download site or any of its mirror sites. It is also available at any of the
mirror sites for sources.redhat.com. Download sizes are in the
region of 5.5MB for .bz2 format archives, or 7MB for .gz format archives.
Weekly and daily snapshots from the CVS repository are also available
from the main
binutils development site, but these have not been verified
for use with eCos.
If you already have binutils sources available but are unsure
of their version, you can search the file gas/configure for the string
"VERSION" and examine its value.
GNU Compiler Collection
The GNU Compiler Collection
web site contains plenty of information about installing and using GCC.
Unfortunately the most recent official release (GCC 2.95.2) is not capable of
supporting eCos for MN10300/AM33. A
snapshot
of the GCC development sources should be used to obtain the most
up-to-date compiler with new features and bug fixes.
eCos has been tested with the 2000-03-13 snapshot, but it is likely that later
snapshots will fix bugs that have not yet been discovered. If you have compiler
problems you may wish to consider updating to a more recent snapshot, or
reverting to an older one.
When downloading a snapshot from the
GCC snapshot download area note that only the core compiler and C++
distributions are required (prefix gcc-core- and gcc-g++-).
Note that the instructions for building GCC here are only intended for use
with eCos. In any other environment, the tools may not function correctly.
Refer to the CrossGCC
FAQ for details about building a standalone version of GCC.
It is strongly recommended you use a mirror site close to you, which will result in a faster
download, reduced internet congestion, and reduced load on the central
server.
GNU Debugger
Instructions for downloading the GNU Debugger (GDB) are provided
on the
GDB home page.
However, Red Hat has also released an open source graphical front-end to GDB based on
Tcl/Tk called Insight, which has a separate
home page.
The Insight sources are a superset of the standard GDB sources. It is also
still possible to run GDB in command-line mode by using the -nw
command-line option when invoking GDB, so there is nothing to lose by using the Insight
sources.
The latest release (version 5.0) is recommended and may be downloaded via the GDB home page.
Alternatively, click on on one of following links to download the files directly:
Preparing the sources for building
Once the tools sources have been downloaded, they must be prepared before
building. These instructions assume that the tool sources will be extracted in the /src directory hierarchy.
Other locations may be substituted throughout. Similarly placeholders of the form YYYYMMDD and
YYMMDD should be replaced with the actual date of the downloaded files. Ensure that the file system used
has sufficient free space available. The contents of each archive will expand
to occupy approximately 6 times the space required by the compressed archive itself.
The following steps should be followed at the Cygwin bash prompt:
- Create a directory for each set of tool sources, avoiding directory names containing spaces as these can confuse the
build system:
mkdir -p /src/binutils /src/gcc /src/gdb
- Extract the sources for each tool directory in turn. For bzip2 archives:
cd /src/binutils
bunzip2 < binutils-2.10.1.tar.bz2 | tar xvf -
cd /src/gcc
bunzip2 < gcc-core-YYYYMMDD.tar.bz2 | tar xvf -
bunzip2 < gcc-g++-YYYYMMDD.tar.bz2 | tar xvf -
cd /src/gdb
bunzip2 < insight-5.0.tar.bz2 | tar xvf -
For gzip archives:
cd /src/binutils
gunzip < binutils-2.10.1.tar.gz | tar xvf -
cd /src/gcc
gunzip < gcc-core-YYYYMMDD.tar.gz | tar xvf -
gunzip < gcc-g++-YYYYMMDD.tar.gz | tar xvf -
cd /src/gdb
gunzip < insight-5.0.tar.gz | tar xvf -
The following directories should be generated and populated during the extraction process:
/src/binutils/binutils-2.10.1
/src/gcc/gcc-YYYYMMDD
/src/gdb/insight-5.0
If the standard GDB source distribution was downloaded rather than Insight,
then the GDB tools source directory will be /src/gdb/gdb-5.0 rather than
/src/gdb/insight-5.0.
- You may now need to apply a small number of source patches that are
required to fix outstanding problems and add eCos support to the tools.
Patches may be downloaded using most browsers by either shift-clicking
or right-clicking on the link to the patch. You must not view the link
and cut-and-paste because white space must be preserved exactly.
Cygwin users should verify that their /tmp directory (or
the directory specified by the TMPDIR, TMP or TEMP
environment variables) is mounted in binary mode. If this is not the case
the patches will apply, but the build will later fail. You may verify this
using the Cygwin mount command. If /tmp is not explicitly listed,
the entry for / will be used. If it says textmode for this entry,
use the following command from a Cygwin bash prompt:
mount -f -b c:/cygwin/tmp /tmp
You may need to substitute another path for c:/cygwin if Cygwin
was installed to another directory.
If Insight 5.0 is being used, rather than the standard GDB source
distribution, then you must download the
insight-tcl.pat patch to a file and apply it:
cd /src/gdb/insight-5.0
tr -d '\r' < insight-tcl.pat | patch -p0
If you are using a GCC snapshot dated 2000-03-20 or earlier, download
the ecos-gcc-snap-cpp.pat
patch to a file and apply it:
cd /src/gcc/gcc-YYYYMMDD
tr -d '\r' < ecos-gcc-snap-cpp.pat | patch -p0
You must then reset the source file timestamps to ensure that makefile dependencies
are handled correctly:
contrib/gcc_update --touch
Some hosts have had difficulty compiling the mn10300 architectural
simulator (part of the GDB source distribution).
Specifically, the compiler may abort when compiling the source
file sim/mn10300/semantics.c.
If this happens, download the
ecos-mn10300-sim-o1.pat patch to a file and apply it to
reduce the compiler optimization level when compiling the file:
cd /src/gdb/insight-YYYYMMDD
tr -d '\r' < ecos-mn10300-sim-o1.pat | patch -p0
If any of the patches fail to apply you should see if there is some
obvious problem by attempting to apply the patch manually. If this is not
possible, report the problem to the
ecos-discuss mailing list.
If the patch utility reports the following message:
Reversed (or previously applied) patch detected! Assume -R? [n]
then type n because this indicates the patch has already been applied
in the master sources.
Building the tools
Before attempting to build the tools, ensure that the GNU native compiler tools directory is on the
PATH and precedes the current directory. The
following build procedures will fail if . is ahead of the native tools in the PATH.
Avoid using spaces in build and install directory paths. Building on an NTFS file system is
strongly recommended due to the large number of small files involved in the build process.
Cygwin users must set the MAKE_MODE environment variable as follows:
export MAKE_MODE=UNIX
Approximate disk space requirements for building the development tools are as follows:
Tool | Build | Install |
Binary Utilities | 35MB | 20MB |
GCC | 40MB | 20MB |
Insight | 125MB | 35MB |
TOTAL | 195MB | 70MB |
Following successful building and installation of each set of tools, the associated build
tree may be deleted to save space if necessary. These instructions assume that the tools
will be built in the /tmp/build directory hierarchy and
installed to /tools. Other locations may be substituted throughout:
- Configure the GNU Binary Utilities:
mkdir -p /tmp/build/binutils
cd /tmp/build/binutils
/src/binutils/binutils-2.10.1/configure --target=mn10300-elf \
--prefix=/tools \
--exec-prefix=/tools/H-i686-pc-cygwin \
-v 2>&1 | tee configure.out
If there are any problems configuring the tools, you can refer to the file
configure.out as a permanent record of what happened.
- Build and install the GNU Binary Utilities:
make -w all install 2>&1 | tee make.out
If there are any problems building the tools, you can use the file
make.out as a permanent record of what happened.
- Configure GCC, ensuring that the GNU Binary Utilities are at the head of the PATH:
PATH=/tools/H-i686-pc-cygwin/bin:$PATH ; export PATH (for sh, ksh and bash users)
set path = ( /tools/H-i686-pc-cygwin/bin $path ) (for csh and tcsh users)
mkdir -p /tmp/build/gcc
cd /tmp/build/gcc
/src/gcc/gcc-YYYYMMDD/configure --target=mn10300-elf \
--prefix=/tools \
--exec-prefix=/tools/H-i686-pc-cygwin \
--with-gnu-as --with-gnu-ld --with-newlib \
-v 2>&1 | tee configure.out
- Build and install GCC:
make -w all-gcc install-gcc \
LANGUAGES="c c++" 2>&1 | tee make.out
- Configure Insight:
mkdir -p /tmp/build/gdb
cd /tmp/build/gdb
/src/gdb/insight-5.0/configure --target=mn10300-elf \
--prefix=/tools \
--exec-prefix=/tools/H-i686-pc-cygwin \
-v 2>&1 | tee configure.out
- Build and install Insight:
make -w all install CC='gcc -mwin32' 2>&1 | tee make.out
On completion, the MN10300/AM33 development tool executable files will be located at /tools/H-i686-pc-cygwin/bin.
This directory should be added to the head of your PATH.
The eCos Configuration Tool also allows you to set the build tools path.
Troubleshooting
If you encounter difficulties in building or using the development tools, first check
the eCos FAQ and the
ecos-discuss mailing list archive to see
if the topic has come up before. Initial queries
may be directed to the ecos-discuss list. However,
there are other mailing lists which may be more appropriate if a problem is clearly
related to a particular tool:
Before sending messages to the mailing lists, you would also be advised to
consult the various web sites associated with each list, to see if there is
any relevant documentation or FAQs:
It is also worth noting that all these mailing lists have searchable archives.
|