<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>RVDS 3.1 EULA - LEC-ELA-00069</title>
</head>
<body>
<div align="center"><b>
END USER LICENCE AGREEMENT FOR THE ARM REALVIEW DEVELOPMENT SUITE
</b><br></div><br>
THIS END USER LICENCE AGREEMENT ("<b>LICENCE</b>") IS A LEGAL AGREEMENT
BETWEEN YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND ARM
LIMITED ("<b>ARM</b>") FOR THE USE OF THE SOFTWARE ACCOMPANYING THIS
LICENCE. ARM IS ONLY WILLING TO LICENSE THE SOFTWARE TO YOU ON CONDITION
THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY CLICKING "<b>I
AGREE</b>" OR BY INSTALLING OR OTHERWISE USING OR COPYING THE SOFTWARE
YOU INDICATE THAT YOU AGREE TO BE BOUND BY ALL THE TERMS OF THIS
LICENCE. IF YOU DO NOT AGREE TO THE TERMS OF THIS LICENCE, ARM IS
UNWILLING TO LICENSE THE SOFTWARE TO YOU AND YOU MAY NOT INSTALL, USE OR
COPY THE SOFTWARE, BUT YOU SHOULD PROMPTLY RETURN THE SOFTWARE TO YOUR
SUPPLIER AND ASK FOR A REFUND OF ANY LICENCE FEE PAID.
<br><br>
"<b>Software</b>" means any software, firmware and data accompanying
this Licence, any printed, electronic or online documentation supplied
with it, and any updates, patches and modifications ARM may agree to
make available to you under the terms of this Licence, in all cases
relating to the RealView Development Suite package of software
development tools. The package includes; (i) RealView Compilation Tools,
including compiler, assembler, linker, libraries and example code; (ii)
RealView Debugger; (iii) instruction set level models of ARM
microprocessors; (iv) ARM plug-ins for the Eclipse Integrated
Development Environment (IDE); and (v) if you have obtained the
CodeWarrior version of the Suite, then your package also includes the
Metrowerks CodeWarrior IDE. For convenience, your package also includes
a version of the Eclipse IDE, and other Separate Files (defined below in
Clause 7), but these are licensed under their own terms and not as part
of the Software.
<br><br>
"<b>Seat</b>" means a written or electronic authorisation from ARM
to run any Software component as a single task or process on one (1)
processing unit (such as a processor core, hardware partition, blade,
virtual machine or emulator) only, by itself or concurrently with other
Seats, for the time period specified in that authorization.
<br><br>
"<b>Licence Key</b>" means an electronic licence key issued to you by
ARM to enable the use of the Software.<br>
<br><br>
<b>1. LICENCE GRANTS.</b><br>
(i) SOFTWARE: ARM hereby grants to you, subject to the terms and
conditions of this Licence, a non-exclusive, non-transferable licence,
only for the Seats, to use the Software, solely for the purposes of your
internal development, testing and debugging of software applications
(referred to in this Licence as "Software Applications"). You shall not
modify or redistribute any of the Software except as may be permitted by
clauses 1(ii)-1(iv) below.
<br><br>
(ii) LIBRARIES: In respect of any Language Libraries and Helper
Libraries (together "Target Libraries") identified in the Schedule, ARM
hereby grants you, provided you comply with the terms of clause 1(iv),
additional non-exclusive, non-transferable licences to; (a) incorporate
and link the Language Libraries into or with Software Applications,
provided that Software Applications contain substantial additional
functionality; (b) incorporate and link the Helper Libraries into, or
use them in, Software Applications; and (c) reproduce and distribute the
Target Libraries, only in object code form, and only as part of Software
Applications.
<br><br>
(iii) EXAMPLE CODE: In respect of any Example Code identified in the
Schedule, ARM hereby grants you, provided you comply with the terms of
clause 1(iv), additional non-exclusive, non-transferable licences to;
(a) use copy and modify the Example Code, only for internal testing,
evaluation, and development and testing of Software Applications; (b)
incorporate, compile and link the Example Code and any modifications
into Software Applications (except for Dhrystone which may only be used
for internal testing and evaluation); (c) reproduce and distribute the
Example Code identified in the Schedule as "Limited Use", and any
modifications, only in object code form (except for Dhrystone which
shall not be reproduced except as necessary to exercise the above
internal use licence, nor redistributed); and (d) reproduce and
distribute the Example Code identified in the Schedule as "Extended
Use", and any modifications, in source or object code form and only as
part of Software Applications.
<br><br>
(iv) FURTHER CONDITIONS ON REDISTRIBUTION: If you are authorised and
choose to redistribute the whole or any part of the Example Code or
Target Libraries, you agree to; (a) ensure that they are licensed for
use only as part of Software Applications and only on microprocessors
manufactured or simulated under licence from ARM; (b) not use ARM's
name, logo or trademarks to market Software Applications; (c) include
valid copyright notices on Software Applications, and preserve any
copyright notices which are included with, or in, the Example Code and
Target Libraries; (d) comply with all the other terms of this Licence;
and (e) not permit further redistribution of the Example Code or Target
Libraries by your customers except where your distributors redistribute
them to your end-user customers only as part of Software Applications
and your distributors otherwise comply with the terms of this Licence.
<br><br>
<b>2. RESTRICTIONS ON USE OF THE SOFTWARE.</b><br>
SEATS, INSTALLATION AND LICENCE KEYS: Your use of the Software is
limited to the specific number of Seats issued to you by ARM. For each
Seat, ARM will make a Licence Key available to you to enable use of the
Software, or certain components or optional functionality in the
Software, as applicable. You shall only install and use the Software and
Licence Keys on computers, or virtual machines running on computers,
which are owned by you (or which are in your exclusive possession under
an equipment finance arrangement) and which are either; (i) located at
your premises; or (ii) portable computers which shall remain in the
possession and control of your employees when outside such premises.
Each Seat and Licence Key shall be limited or locked to a single item of
your personal computer hardware (also known as host ID) on which the
Seat or Licence Key is initially installed, except where ARM may
separately agree to authorise the transfer (also known as re-hosting) of
such Seat or Licence Key to another host ID.
<br><br>
COPYING: You shall not use or copy the Software or Licence Keys except
as expressly authorised in this Licence. You may make one additional
copy of the delivered Software media or image for backup or archival
purposes.
<br><br>
UPDATES AND UPGRADES: Upgrades and updates replace the earlier releases
of Software that you are upgrading or updating, and are not additional
copies. When you upgrade or update the Software, the Licence Key for
such new release replaces your existing Licence Key. Therefore, if you
are receiving the Software as an update or upgrade, you obtain no rights
to, and shall not, install or use this update or upgrade unless you have
first ceased all use of, and deleted, your Licence Key for the version
of the Software that you are updating or upgrading.
<br><br>
PERMITTED USERS: The Software and Licence Keys shall be used only by
your employees,or by your bona fide sub-contractors for whose acts and
omissions you hereby agree to be responsible to ARM to the same extent
as those of your employees, and provided always that such
sub-contractors; (i) work only onsite at your premises; (ii) are aware
of the terms of this Licence; (iii) are contractually obligated to use
the same only for your benefit, and (iv) agree to assign all their work
product and any rights they create therein in the supply of such work to
you. Only the single individual, company or other legal entity to whom
ARM is supplying this Licence may use the Software and Licence Keys. You
shall not allow third parties (including but not limited to any
subsidiary, parent or affiliated companies, or offsite contractors you
may have) to use the Software or Licence Keys unless ARM specifically
agrees otherwise with you on a case by case basis.
<br><br>
REMOTE USE: The Software and Licence Keys shall only be used onsite at
your premises, except when used offsite by an employee (but not a
sub-contractor) of yours, on a portable computer, in accordance with the
"SEATS, INSTALLATION AND LICENCE KEYS" paragraph above, as part of his
or her normal work activities, and only for your benefit.
<br><br>
MULTIPLE VERSIONS: The media on which the Software resides may contain
more than one version of the Software, each of which is compatible with
a different operating system (such as Microsoft Windows XP Professional
and Red Hat Linux). Each version may only be installed and used by you
to the extent that you have valid Seats and Licence Keys from ARM.
<br><br>
ACADEMIC OR EDUCATIONAL USE RESTRICTION: If you or your employer or
institution paid academic or educational pricing for the Software, or
the Software is identified as an academic or educational version
(collectively "Academic Software"), then notwithstanding anything else
in this Licence, YOU AGREE TO USE THE ACADEMIC SOFTWARE ONLY FOR
ACADEMIC, NON-COMMERCIAL PURPOSES, AND ARM DOES NOT GRANT YOU ANY RIGHTS
TO DISTRIBUTE OR SUB-LICENCE SOFTWARE APPLICATIONS UNDER THIS LICENCE.
<br><br>
REVERSE ENGINEERING: Except to the extent that such activity is
permitted by applicable law you shall not reverse engineer, decompile or
disassemble any of the Software. If the Software was provided to you in
Europe you shall not reverse engineer, decompile or disassemble any of
the Software for the purposes of error correction.
<br><br>
BENCHMARKING: This licence does not prevent you from using the Software
for internal benchmarking purposes. However, you shall treat any and all
benchmarking data relating to the Software, and any other results of
your use or testing of the Software which are indicative of its
performance, efficacy, reliability or quality, as confidential
information and you shall not disclose such information to any third
party without the express written permission of ARM. ARM may agree to
waive the restrictions in this paragraph if requested in writing.
<br><br>
RESTRICTIONS ON TRANSFER OF LICENSED RIGHTS: The rights granted to you
under this agreement may not be assigned, sublicensed or otherwise
transferred by you to any third party without the prior written consent
of ARM. You shall not rent or lease the Software, or share it with
contractors or third parties.
<br><br>
COPYRIGHT AND RESERVATION OF RIGHTS: The Software is owned by ARM or its
licensors and is protected by copyright and other intellectual property
laws and international treaties. The Software is licensed not sold. You
acquire no rights to the Software other than as expressly provided by
this Licence. You shall not remove from the Software any copyright
notice or other notice and shall ensure that any such notice is
reproduced in any copies of the whole or any part of the Software made
by you.
<br><br>
<b>3. SUPPORT.</b><br>
If you purchased the Software directly from ARM, and you are not
receiving it as Academic Software (defined in clause 2), you are
entitled to reasonable support for the Software, for the period of one
(1) year, commencing from the day of purchase. The support will be
provided by telephone, email or other written format designated by ARM,
prioritised at ARM's discretion, and may not be used as a substitute for
training or as additional resource for your programming projects. If you
obtained the Software from an ARM authorised reseller or other third
party, or no charge was made by ARM for the Software, update or upgrade,
or it is Academic Software, then, except as provided as a remedy to any
claim under the limited warranties provided in clause 5, you are not
entitled to any support for the Software from ARM under this Licence.
The vendor of the Software may or may not offer support to you for the
Software. Please refer to the Technical Support area of
http://www.arm.com for contact details for ARM's support service and (if
applicable) other authorised support channels.
<br><br>
<b>4. CONFIDENTIALITY.</b><br>
You acknowledge that the Software, Licence Keys, and any benchmarking
data and related information mentioned in Clause 2 contain trade secrets
and confidential material, and you agree to maintain them in confidence
and apply security measures no less stringent than the measures which
you apply to protect your own like information, but not less than a
reasonable degree of care, to prevent their unauthorised disclosure and
use. Subject to any restrictions imposed by applicable law, the period
of confidentiality shall be indefinite. You agree that you shall not use
any such information other than in normal use of the Software under the
licences granted in this Licence.
<br><br>
<b>5. LIMITED WARRANTIES.</b><br>
For the period of ninety (90) days from the date of receipt by you of
the Software, ARM warrants to you that (i) the media on which the
Software is provided shall be free from defects in materials and
workmanship under normal use; and (ii) the Software will perform
substantially in accordance with its accompanying documentation (if
any). ARM's total liability and your exclusive remedy for breach of
these limited warranties shall be limited to ARM, at ARM's option; (a)
refunding the price paid by you for the Software; or (b) replacing the
defective Software; or (c) using reasonable efforts to correct material,
documented, reproducible defects in the Software and delivering such
corrected Software to you. Any replacement Software will be warranted
for the remainder of the original warranty period or thirty (30) days,
whichever is the longer.
<br><br>
EXCEPT AS MAY BE PROVIDED ABOVE, YOU AGREE THAT THE SOFTWARE IS LICENSED
"AS IS", AND THAT ARM EXPRESSLY DISCLAIMS ALL REPRESENTATIONS,
WARRANTIES, CONDITIONS OR OTHER TERMS, EXPRESS OR IMPLIED, INCLUDING
WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE.
<br><br>
YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS, FOR USE OR OPERATION OF
SOFTWARE APPLICATIONS, INCLUDING WITHOUT LIMITATION, APPLICATIONS
DESIGNED OR INTENDED FOR MISSION CRITICAL APPLICATIONS, SUCH AS
PACEMAKERS, WEAPONARY, AIRCRAFT NAVIGATION, FACTORY CONTROL SYSTEMS,
ETC. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
<br><br>
<b>6. LIMITATION OF LIABILITY.</b><br>
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL ARM
BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
(INCLUDING LOSS OF PROFITS) ARISING OUT OF THE USE OR INABILITY TO USE
THE SOFTWARE WHETHER BASED ON A CLAIM UNDER CONTRACT, TORT OR OTHER
LEGAL THEORY, EVEN IF ARM WAS ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
<br><br>
ARM does not seek to limit or exclude liability for death or personal
injury arising from ARM's negligence and because some jurisdictions do
not permit the exclusion or limitation of liability for consequential or
incidental damages the above limitation relating to liability for
consequential damages may not apply to you.
<br><br>
NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED IN THIS LICENCE, THE
MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE AGAINST
ARM IN CONTRACT TORT OR OTHERWISE UNDER OR IN CONNECTION WITH THE
SUBJECT MATTER OF THIS LICENCE SHALL NOT EXCEED THE TOTAL OF SUMS PAID
BY YOU TO ARM (IF ANY) FOR THIS LICENCE.
<br><br>
<b>7. THIRD PARTY RIGHTS.</b><br>
The Software is supplied with, and uses, third party software or
materials which are governed by their own separate licence agreements
(together "Separate Files"). This Licence does not apply to such
Separate Files and they are not included in the term "Software" under
this Licence. You agree to comply with all terms and conditions imposed
on you in respect of such Separate Files including those identified in
the Schedule ("Third Party Terms").  Any provisions in this Licence
which differ from Third Party Terms are offered by ARM alone and shall
not supersede or modify any Third Party Terms. In addition to Third
Party Terms, the disclaimer of warranty and limitation of liability
provisions in this Licence shall apply to all Software and Separate
Files.
<br><br>
ARM HEREBY DISCLAIMS ANY AND ALL WARRANTIES EXPRESS OR IMPLIED FROM ANY
THIRD PARTIES REGARDING ANY SEPARATE FILES, ANY THIRD PARTY MATERIALS
INCLUDED IN THE SOFTWARE, ANY THIRD PARTY MATERIALS FROM WHICH THE
SOFTWARE IS DERIVED (COLLECTIVELY "OTHER CODE"), AND THE USE OF ANY OR
ALL THE OTHER CODE IN CONNECTION WITH THE SOFTWARE, INCLUDING (WITHOUT
LIMITATION) ANY WARRANTIES OF SATISFACTORY QUALITY OR FITNESS FOR A
PARTICULAR PURPOSE.
<br><br>
NO THIRD PARTY LICENSORS OF OTHER CODE SHALL HAVE ANY LIABILITY FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
WHETHER MADE UNDER CONTRACT, TORT OR OTHER LEGAL THEORY, ARISING IN ANY
WAY OUT OF THE USE OR DISTRIBUTION OF THE OTHER CODE OR THE EXERCISE OF
ANY RIGHTS GRANTED UNDER EITHER OR BOTH THIS LICENCE AND THE LEGAL TERMS
APPLICABLE TO ANY SEPARATE FILES, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
<br><br>
Distribution of code from the Rogue Wave C++ Language Libraries is
permitted only if: (a) you are granted the right to redistribute those
Libraries under Clauses 1 and 2 of this Licence; and (b) they do not
constitute a major portion of the value of the Software Applications. No
right is granted to use those libraries on any computers as are marketed
or commonly considered to be mainframe computers in the computer
industry. Notwithstanding any provisions in this Licence to the
contrary, you shall not: (a) distribute in any manner any of the header
files, object modules, template-based classes, or independent static
libraries of those libraries or documentation relating thereto; (b)
distribute any portion of the same in a software utility product or
otherwise in competition with Rogue Wave Software Inc's distribution
thereof; nor (c) rent or lease the Software. "Rogue Wave" is a
registered trademark of Rogue Wave Software, Inc.
<br><br>
<b>8. U.S. GOVERNMENT END USERS.</b><br>
US Government Restrictions: Use, duplication, reproduction, release,
modification, disclosure or transfer of this commercial product and
accompanying documentation is restricted in accordance with the terms of
this Licence.
<br><br>
<b>9. TERM AND TERMINATION.</b><br>
This Licence shall remain in force until terminated by you, by ARM or by
expiry (in the case of a time limited licence). Without prejudice to any
of its other rights if you are in breach of any of the terms and
conditions of this Licence then ARM may terminate this Licence
immediately upon giving written notice to you. You may terminate this
Licence at any time. Upon termination of this Licence by you or by ARM
you shall stop using the Software and destroy all copies of the Software
in your possession together with all documentation and related
materials. The provisions of clauses 4, 6, 7, 8, 9 and 10 shall survive
termination of this Licence.
<br><br>
<b>10. GENERAL.</b><br>
This Licence is governed by English Law. Except where ARM agrees
otherwise in a written contract signed by you and ARM, this is the only
agreement between you and ARM relating to the Software and it may only
be modified by written agreement between you and ARM. Except as
expressly agreed in writing, this Licence may not be modified by
purchase orders, advertising or other representation by any person. If
any clause or sentence in this Licence is held by a court of law to be
illegal or unenforceable the remaining provisions of this Licence shall
not be affected thereby. The failure by ARM to enforce any of the
provisions of this Licence, unless waived in writing, shall not
constitute a waiver of ARM's rights to enforce such provision or any
other provision of this Licence in the future.
<br><br>
At ARM's request, you agree to check your computers for installations of
the Software, copies of Licence Keys, contents of any licence server log
files, individual or concurrent usage of Seats, and any other
information requested by ARM relating to Software installation, usage
and Licence Key management, and to provide this information to ARM. ARM
will not make such a request more frequently than once per year, except
as necessary where ARM believes, in good faith, that an additional check
is needed (for example after re-hosting a Licence Key). You agree that
auditors nominated by ARM may also perform such checking and reporting
on behalf of ARM by prior appointment during your normal business hours
on seven (7) days' notice. ARM shall bear the auditors' costs for that
audit unless it reveals unlicensed usage in which case you shall
promptly reimburse ARM for all reasonable costs and expenses, including
professional fees, relating to such audit. Any information which is
disclosed to ARM or such auditors during checking or audit shall be
treated as your confidential information and shall only be used by ARM
for licence management, compliance and enforcement purposes.
<br><br>
The Software provided under this Licence is subject to U.S. export
control laws, including the U.S. Export Administration Act and its
associated regulations, and may be subject to export or import
regulations in other countries. You agree to comply fully with all laws
and regulations of the United States and other countries ("Export Laws")
to assure that the Software, is not (1) exported, directly or
indirectly, in violation of Export Laws, either to any countries that
are subject to U.S.A. export restrictions or to any end user who has
been prohibited from participating in the U.S.A. export transactions by
any federal agency of the U.S.A. government; or (2) intended to be used
for any purpose prohibited by Export Laws, including, without
limitation, nuclear, chemical, or biological weapons proliferation.
<br><br> <div align="center"><b>
THE SCHEDULE
</b><br></div><b>
TARGET LIBRARIES (OBJECT CODE):
</b><br>
<i>Language Libraries:</i> C Libraries; C++ runtime support library;
Rogue Wave C++ Libraries <br>
<i>Helper Libraries:</i> ARM Compiler Helper Libraries found in your
installation at:
<br><tt>"&lt;install_dir&gt;/RVCT/Data/3.1/&lt;buildno&gt;/lib/armlib/h_*.*"</tt><br>
<br><b>
EXAMPLE CODE - LIMITED USE:
</b><br>
Dhrystone; MMUgen; FFT example code
<br><br><b>
EXAMPLE CODE - EXTENDED USE:
</b><br>
Example Flash Download Algorithms found in your installation at:
<br><tt>"&lt;install_dir&gt;/RVD/Flash/3.1/&lt;buildno&gt;/&lt;OS&gt;/&lt;platform&gt;/*.*"</tt><br>
Any and all other example code identified as such and included with the
Software
<br><br><b>
SEPARATE FILES:
</b><br>
A. GNU standard C and C++ language libraries (only installed on Linux
host computers):
<br>
This package includes GNU libgcc_s and libstdc++ libraries in binary
form, licensed to you under the GNU General Public License, version 2.
<br><br>
B. zthread library (only installed on Windows host computers):
<br>
This package includes zthread shared library in source and binary form,
licensed to you under the GNU Lesser General Public License, version
2.1.
<br><br>
C. Portions of the ARM installer:
<br>
Portions of the installer use the JAXB XML binding library and Java 2
Platform Standard Edition Runtime (JRE) binary runtime files. The
applicable Third Party Terms are set out in the
THIRDPARTYLICENSEREADME.txt files, which ARM received with such
binaries, and (in the case of any portions of the MESA graphics library
used in the JRE) in the "SGI Free Software License B" in file
SGIFREEB.txt.
<br><br>
D. The Eclipse IDE:
<br>
The Eclipse IDE is distributed subject to the terms of the Eclipse
Software User Agreement (SUA) version March 17, 2005, except that the
term "Content" used in the SUA shall mean only those Eclipse IDE
materials contained in this package, and it is ARM, not the Eclipse
Foundation, who makes the agreement with you and supplies you with that
Content. That Content is also subject to the legal terms and notices
referred to in the SUA, including but not limited to the Eclipse Public
License version 1.0, the Common Public License version 1.0, the Apache
Software License version 1.1, the Apache Software License version 2.0,
the IBM Public License version 1.0, the Metro Link Public License 1.00,
and the Mozilla Public License version 1.1. For further information on
the Eclipse Foundation's approach to licensing, please see their
guidance notes at 
<a href="http://www.eclipse.org/legal/guidetolegaldoc.php">
http://www.eclipse.org/legal/guidetolegaldoc.php</a>,
or more generally the Eclipse legal resources website at
<a href="http://www.eclipse.org/legal">http://www.eclipse.org/legal</a>.
<br><br>
E. Portions of the ARM plug-ins for the Eclipse IDE:
<br>
Certain modules used in these plug-ins are licensed to you under the
Eclipse Public License, version 1.0.
<br><br>
ARM contract references: LEC-ELA-00069-V14.0 RVDS 3.1 FCS AB/AB
<br>/end
<br>
</body>
</html>
