END USER LICENCE AGREEMENT FOR THE CORTEX MICROCONTROLLER SOFTWARE INTERFACE
STANDARD (CMSIS) SPECIFICATION AND SOFTWARE

THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT BETWEEN YOU (EITHER A
SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND ARM LIMITED ("ARM") FOR THE USE OF THE
CMSIS SPECIFICATION, EXAMPLE CODE, DSP LIBRARY SPECIFICATION AND DSP LIBRARY
IMPLEMENTATION AS SUCH TERMS ARE DEFINED BELOW (COLLECTIVELY, THE "ARM
DELIVERABLES"). ARM IS ONLY WILLING TO LICENSE THE ARM DELIVERABLES TO YOU ON CONDITION
THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY CLICKING "I AGREE", OR BY INSTALLING
OR OTHERWISE USING OR COPYING THE ARM DELIVERABLES 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 YOU TO USE THE ARM DELIVERABLES AND YOU MAY NOT
INSTALL, USE OR COPY THE ARM DELIVERABLES.

"CMSIS Specification" means any documentation and C programming language files defining the application
programming interface, naming and coding conventions of the Cortex Microcontroller Software Interface
Standard (CMSIS) as well as the System View Description (SVD) documentation and associated XML schema
file. Notwithstanding the foregoing, "CMSIS Specification" shall not include (i) the implementation of other
published specifications referenced in the CMSIS Specification; (ii) any enabling technologies that may be
necessary to make or use any product or portion thereof that complies with the CMSIS Specification, but are not
themselves expressly set forth in the CMSIS Specification (e.g. compiler front ends, code generators, back ends,
libraries or other compiler, assembler or linker technologies; validation or debug software or hardware;
applications, operating system or driver software; RISC architecture; processor microarchitecture); (iii)
maskworks and physical layouts of integrated circuit designs; or (iv) RTL or other high level representations of
integrated circuit designs.

"DSP Library Implementation" means any C programming language source code implementing the functionality
of the digital signal processor (DSP) algorithms and the application programming interface as defined in the DSP
Library Specification. The DSP Library Implementation makes use of CMSIS application programming interface
and therefore is targeted at Cortex-M class processors.

"DSP Library Specification" means the DSP library documentation and C programming language file defining the
application programming interface of the DSP Library Implementation. Notwithstanding the foregoing, "DSP
Library Specification" shall not include (i) the implementation of other published specifications referenced in the
DSP Library Specification; (ii) any enabling technologies that may be necessary to make or use any product or
portion thereof that complies with the DSP Library Specification, but are not themselves expressly set forth in the
DSP Library Specification (e.g. compiler front ends, code generators, back ends, libraries or other compiler,
assembler or linker technologies; validation or debug software or hardware; applications, operating system or
driver software; RISC architecture; processor microarchitecture); (iii) maskworks and physical layouts of
integrated circuit designs; or (iv) RTL or other high level representations of integrated circuit designs.

"Example Code" means any files in C, C++ or ARM assembly programming languages, associated project and
configuration files that demonstrate the usage of the CMSIS Specification, the DSP Library Specification and the
DSP Library Implementation, for microprocessors or device specific software applications that are for use with
microprocessors.

1. LICENCE GRANTS.

1.1 ARM hereby grants to you, subject to the terms and conditions of this Licence, a non-exclusive, nontransferable
licence, to;

(i) use and copy the CMSIS Specification for the purpose of developing, having developed, manufacturing,
having manufactured, offering to sell, selling, supplying or otherwise distributing products that comply with the
CMSIS Specification, provided that you preserve any copyright notices which are included with, or in, the CMSIS
Specification and provided that you do not use ARM's name, logo or trademarks to market such products;

(ii) use, copy, and modify (solely to the extent necessary to incorporate the whole or any part of the DSP Library
Specification into your documentation), the DSP Library Specification, for the purpose of developing, having
developed, manufacturing, having manufactured, offering to sell, selling, supplying or otherwise distributing
products that comply with the DSP Library Specification, and distribute and have distributed any documentation
created by or for you that has been derived from the DSP Library Specification with such products, provided that
you preserve any copyright notices which are included with, or in, the DSP Library Specification and provided that
you do not use ARM's name, logo or trademarks to market such products;

(iii) use, copy, modify and sublicense the Example Code solely for the purpose of developing, having developed,
manufacturing, having manufactured, offering to sell, selling, supplying or otherwise distributing products that
comply with either or both the CMSIS Specification and the DSP Library Specification, provided that you preserve
any copyright notices which are included with, or in, the Example Code and that you do not use ARM's name,
logo or trademarks to market such products;

(iv) use, copy and modify (provided that the logical functionality and the application programming interface of the
DSP Library Implementation are maintained) the DSP Library Implementation, solely for the purposes of
developing; (a) software applications for use with microprocessors manufactured or simulated under licence from
ARM ("Software Applications"); and (b) tools that are designed to develop software programs for use with
microprocessors manufactured or simulated under licence from ARM ("Tools"); and

(v) subject to clause 1.1(vi) below; (a) distribute and sublicense the use of the DSP Library Implementation
(including any modified forms thereof created under Clause 1.1(iv) above) in binary or source format, solely as
incorporated into Software Library Applications and Tools to third parties; and (b) sublicense to such third parties
the right to use and copy the Tools for the purposes of developing and distribute software programs for use with
microprocessors manufactured or simulated under licence from ARM.

(vi) CONDITIONS ON REDISTRIBUTION: If you choose to redistribute the whole or any part of the DSP Library
Implementation as incorporated into Software Library Applications or Tools, you agree to; (a) ensure that the
DSP Library Implementation is licensed for use only as part of Software Library Applications and Tools and only
for use with microprocessors manufactured or simulated under licence from ARM; (b) not to use ARM's name,
logo or trademarks to market Software Applications and Tools; and (c) include valid copyright notices on
Software Applications and Tools, and preserve any copyright notices which are included with, or in, the DSP
Library Implementation.

2. RESTRICTIONS ON USE OF THE ARM DELIVERABLES.

PERMITTED USERS: The ARM Deliverables shall be used only by you (either a single individual, or single legal
entity) your employees, or by your on-site bona fide sub-contractors for whose acts and omissions you hereby
agree to be responsible to ARM for to the same extent as you are for your employees, and provided always that
such sub-contractors; (i) are contractually obligated to use the ARM Deliverables only for your benefit, and (ii)
agree to assign all their work product and any rights they create therein in the supply of such work to you.
COPYRIGHT AND RESERVATION OF RIGHTS: The ARM Deliverables are owned by ARM or its licensors and
are protected by copyright and other intellectual property laws and international treaties. The ARM Deliverables
are licensed not sold. Except as expressly licensed herein, you acquire no right, title or interest in the ARM
Deliverables or any intellectual property therein. In no event shall the licences granted herein be construed as
granting you, expressly or by implication, estoppels or otherwise, a licence to use any ARM technology except
the ARM Deliverables.

3. SUPPORT.

ARM is not obligated to support the ARM Deliverables but may do so entirely at ARM's discretion.

4. NO WARRANTY

YOU AGREE THAT THE ARM DELIVERABLES ARE LICENSED "AS IS", AND THAT ARM EXPRESSLY
DISCLAIMS ALL REPRESENTATIONS, WARRANTIES, CONDITIONS OR OTHER TERMS, EXPRESS,
IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NONINFRINGEMENT,
SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE. THE ARM
DELIVERABLES MAY CONTAIN ERRORS. ARM RESERVES THE RIGHT TO INCORPORATE
MODIFICATIONS TO THE ARM DELIVERABLES IN LATER REVISIONS OF THEM, AND TO MAKE
IMPROVEMENTS OR CHANGES IN THE ARM DELIVERABLES AT ANY TIME.

5. LIMITATION OF LIABILITY.

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 GREATER OF (I) THE TOTAL OF SUMS PAID BY YOU TO ARM (IF
ANY) FOR THIS LICENCE AND (II) US$10.00. THE LIMITATIONS, EXCLUSIONS AND DISCLAIMERS IN
THIS LICENCE SHALL APPLY TO THE MAXIMUM EXTENT ALLOWED BY APPLICABLE LAW.

6. U.S. GOVERNMENT END USERS.
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.

7. TERM AND TERMINATION.

7.1 This Licence shall remain in force until terminated in accordance with the terms of Clause 7.2 or Clause 7.3
below.

7.2 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.

7.3 This Licence shall immediately terminate and shall be unavailable to you if you or any party affiliated to you
asserts any patents against ARM, ARM affiliates, third parties who have a valid licence from ARM for the ARM
Deliverables, or any customers or distributors of any of them based upon a claim that your (or your affiliate)
patent is Necessary to implement the CMSIS Specification or DSP Library Specification. In this Licence; (i)
"affiliate" means any entity controlling, controlled by or under common control with a party (in fact or in law, via
voting securities, management control or otherwise) and "affiliated" shall be construed accordingly; (ii) "assert"
means to allege infringement in legal or administrative proceedings, or proceedings before any other competent
trade, arbitral or international authority; (iii) "Necessary" means with respect to any claims of any patent, those
claims which, without the appropriate permission of the patent owner, will be infringed when implementing the
CMSIS Specification or DSP Library Specification because no alternative, commercially reasonable, noninfringing
way of implementing the CMSIS Specification or DSP Library Specification is known.

7.4 Upon termination of this Licence, you shall stop using the ARM Deliverables and destroy all copies of the
ARM Deliverables in your possession. The provisions of clauses 5, 6, 7, and 8 shall survive termination of this
Licence.

8. GENERAL.

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 ARM Deliverables 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. This Licence may not be assigned without the prior written consent of ARM.

ARM contract reference LEC-PRE-00489
