AN10902 Using the LPC32xx VFP

Similar documents
AN10955 Full-duplex software UART for LPC111x and LPC13xx

IoT Sensing SDK. Getting started with IoT Sensing SDK (ISSDK) v1.7 middleware. Document information. IoT Sensing SDK, ISSDK, MCUXpresso, middleware

AN10917 Memory to DAC data transfers using the LPC1700's DMA

ES_LPC5410x. Errata sheet LPC5410x. Document information

UM LPC54018 IoT module. Document information. LPC54018, OM40007, Amazon FreeRTOS, AWS, GT1216 LPC54018 IoT module user manual

QSG DAC1x08D+ECP3 DB

ES_LPC81xM. Errata sheet LPC81xM. Document information

UM NVT2008PW and NVT2010PW demo boards. Document information

AN LPC82x Touch Solution Quick Start Guide. Document information. Keywords

OM13071 LPCXpresso824-MAX Development board

UM User Manual for LPC54018 IoT Module. Rev November Document information

Using LPC11Axx EEPROM (with IAP)

Release notes for ISSDK v1.7

QPP Proprietary Profile Guide

UM NVT2001GM and NVT2002DP demo boards. Document information

How to use the NTAG I²C plus for bidirectional communication. Rev June

CAUTION This device is sensitive to ElectroStatic Discharge (ESD). Therefore care should be taken during transport and handling.

UM PR533 - PCSC Tool. User manual COMPANY PUBLIC. Rev November Document information

AN NTAG I²C plus memory configuration options. Application note COMPANY PUBLIC. Rev June Document information

UM User manual for the BGU MHz LNA evaluation board. Document information

UM NXP USB PD shield board user manual COMPANY PUBLIC. Document information

AN10913 DSP library for LPC1700 and LPC1300

Broadband system applications i.e. WCDMA, CATV, etc. General purpose Voltage Controlled Attenuators for high linearity applications

DC connector: 5VDC, 2,5A, round; 2,1x5,5x10 mm, inside positive External power supply: AC 230V 50/60Hz, 5V 2,5A out

In data sheets and application notes which still contain NXP or Philips Semiconductors references, use the references to Nexperia, as shown below.

UM LPC General Purpose Shield (OM13082) Rev November Document information. Keywords

AN10942 MFRX852 Evaluation Board- Quick start up Guide

PNP 500 ma, 50 V resistor-equipped transistor; R1 = 2.2 kω, R2 = open

UM PCAL6524 demonstration board OM Document information

300 V, 100 ma PNP high-voltage transistor

UM EEPROM Management of PN746X and PN736X. User manual COMPANY PUBLIC. Rev February Document information

AN BGA301x Wideband Variable Gain Amplifier Application. Document information. Keywords

LPC-Link2 Debug Probe Firmware Programming. Rev June, 2017 User Guide

uip, TCP/IP Stack, LPC1700

STB-CE v Overview. 2 Features. Release notes for STB-CE v What's new in STB-CE v2.5

SiGe:C Low Noise High Linearity Amplifier

74ABT General description. 2. Features and benefits. 3. Ordering information. Quad 2-input AND gate

OM bit GPIO Daughter Card User Manual

AN BGA GHz 18 db gain wideband amplifier MMIC. Document information. Keywords. BGA3018, Evaluation board, CATV, Drop amplifier.

UM QN908x Quick Start. Document information. QN908x, Quick Start, Development Kit, QN9080 DK, QN9080 Development Kit

UM OM bit GPIO Daughter Card User Manual. Document information. Keywords Abstract

AN MIFARE Type Identification Procedure. Application note COMPANY PUBLIC. Rev August Document information

AN LPC1700 secondary USB bootloader. Document information. LPC1700, Secondary USB Bootloader, ISP, IAP

UM10766 User manual for the I2C-bus RTC PCF85263A demo board OM13510

AN Sleep programming for NXP bridge ICs. Document information

AN CBTL08GP053 Programmer's Guide. Document information. Keywords Abstract

AN LPC1700 Ethernet MII Management (MDIO) via software. Document information. LPC1700, Ethernet, MII, RMII, MIIM, MDIO

Installation Manual Installation Manual for the MicroWave Office design kit version v1.0

In data sheets and application notes which still contain NXP or Philips Semiconductors references, use the references to Nexperia, as shown below.

In data sheets and application notes which still contain NXP or Philips Semiconductors references, use the references to Nexperia, as shown below.

NWP2081T. 1. General description. 2. Features and benefits. 3. Applications. 4. Ordering information. Half-bridge driver IC

LPC1300, FM+, Fast-mode Plus, I 2 C, Cortex-M3

LPC81x, LPC82x, LPC83x Errata Sheet and Datasheet Update for Vdd.1 Errata

General-purpose Zener diodes in a SOD323F (SC-90) very small and flat lead Surface-Mounted Device (SMD) plastic package.

NCR402T. 1. General description. 2. Features and benefits. 3. Applications. 4. Quick reference data

MMBZ16VAL. 1. General description. 2. Features and benefits. 3. Applications. 4. Quick reference data

AN Over-the-Air top-up with MIFARE DESFire EV2 and MIFARE Plus EV1. Document information

Installation Manual. Installation Manual for the ADS design kit version v2.1. ADS Design kit Windows Linux Unix Instruction Manual RF small signal

UM Gaming suitcase demo system. Document information

Wafer Fab process Assembly Process Product Marking Design

NXP AN11528 sensor Application note

SOD Package summary

AN Automatic RS-485 address detection. Document information

AN Entering ISP mode from user code. Document information. ARM ISP, bootloader

UM NXP USB Type-C Shield 2 Demo Kit User Manual COMPANY PUBLIC. Document information

plastic surface-mounted package; 5 leads D (double) Package type descriptive code TSOP5 Package type industry code

QPP Programming Guide

PESD18VV1BBSF. Very symmetrical bidirectional ESD protection diode

PTVSxS1UR series. 1. Product profile. 400 W Transient Voltage Suppressor. 1.1 General description. 1.2 Features and benefits. 1.

Installation Manual Installation Manual for the Ansoft Designer v5.0 design kit version v1.0

UM LPC54114 Audio and Voice Recognition Kit. Rev February Document information. Keywords

In data sheets and application notes which still contain NXP or Philips Semiconductors references, use the references to Nexperia, as shown below.

Bidirectional ESD protection diode

MF1ICS General description. Functional specification. 1.1 Key applications. 1.2 Anticollision. Product data sheet PUBLIC

D (double) Package type descriptive code. SOD2 Package type industry code. DSN Package style descriptive code

DATA SHEET. BGA2031/1 MMIC variable gain amplifier DISCRETE SEMICONDUCTORS. Product specification Supersedes data of 2000 Mar 02.

PESD18VF1BL. 1. General description. 2. Features and benefits. 3. Applications. 4. Quick reference data. 5. Pinning information

GreenChip synchronous rectifier controller. The TEA1792TS is fabricated in a Silicon-On-Insulator (SOI) process.

AN10688_1. PN532C106 demoboard. Document information. NFC, PN532, PN532C106, demoboard. This document describes PN532C106 demoboard.

General-purpose Zener diodes in an SOD523 (SC-79) ultra small and flat lead Surface-Mounted Device (SMD) plastic package.

UM OM11057 quick start guide. Document information

D (double) Package type descriptive code. TSSOP8 Package type industry code. TSSOP8 Package style descriptive code

B (bottom) Package type descriptive code. BGA658 Package type industry code. BGA658 Package style descriptive code

S (single) Package type descriptive code. DPAK Package type industry code. DPAK Package style descriptive code

UM NTAG I²C plus Explorer Kit Peek and Poke. Rev September User manual COMPANY PUBLIC. Document information

D (double) Package type descriptive code. SMT3; MPAK Package type industry code. SMT3; MPAK Package style descriptive code

S (surface mount) Issue date

SOT404-REFLOW REL Major version date Minor version date Security status

PESD5V0C1USF. in portable electronics, communication, consumer and computing devices.

SOD123W. 1. Package summary. plastic, surface mounted package; 2 terminals; 2.6 mm x 1.7 mm x 1 mm body 9 April 2018 Package information

In data sheets and application notes which still contain NXP or Philips Semiconductors references, use the references to Nexperia, as shown below.

PESD5V0X2UM. 1. General description. 2. Features and benefits. 3. Applications. 4. Quick reference data

ESD protection for ultra high-speed interfaces

Q (quad) Package type descriptive code PLCC52. PLCC (plastic leaded chip carrier) Package style suffix code

ES_LPC5411x. Errata sheet LPC5411x. Document information LPC54113J256UK49, LPC54114J256UK49, LPC54113J128BD64, LPC54113J256BD64, LPC54114J256BD64

MF1 MOA4 S50. Contactless Chip Card Module Specification. This document gives specifications for the product MF1 MOA4 S50.

B (bottom) Package type descriptive code. LFBGA208 Package type industry code. LFBGA208 Package style descriptive code

45 V, 100 ma NPN general-purpose transistors

Unidirectional ESD protection diode

PESD24VF1BSF. Table 1. Quick reference data Symbol Parameter Conditions Min Typ Max Unit C d diode capacitance f = 1 MHz; V R = 0 V

Transcription:

Rev. 01 9 February 2010 Application note Document information Info Content Keywords Vector Floating Point (VFP) coprocessor, LPC32x0, LPC3180 Abstract This application note describes how to use LPC32x0 Vector Floating Point (VFP) coprocessor.

Revision history Rev Date Description 01 20100209 Initial version. Contact information For additional information, please visit: http://www.nxp.com For sales office addresses, please send an email to: salesaddresses@nxp.com _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 2 of 15

1. Introduction The ARM processor core does not contain floating-point hardware. In typical ARM systems where floating point support is needed, software emulation is used to provide the floating point capability. Although software emulation works well, it does offer good CPU performance. ARM offers a hardware based Vector Floating Point (VFP) coprocessor that accelerates floating point operation. The ARM VFP supports single-precision and double-precision add, subtract, multiply, divide, multiply-accumulate operations and divide/square root at CPU clock speeds. The ARM VFP can be used to increase performance of imaging applications such as scaling, 2D and 3D transforms, font generation, digital filters, or any application that uses floating point operations. Because the ARM VFP is a coprocessor developed and supported by ARM, it has support in various tool chains, RTOS s, and operating systems such as the Keil MDK development environment or Linux. The ARM VFP complies with the IEEE 754 standard. Many real-time control applications in the industrial and automotive fields benefit from the dynamic range and precision of floating-point offered by the ARM VFP. Automotive powertrain, anti-lock braking, traction control, and active suspension systems are all mission-critical applications where precision and predictability are essential requirements. The next generation of consumer products such as Internet appliances, set-top boxes, and home gateways, can directly benefit from the ARM VFP. The LPC3180 and LPC32x0 series devices from NXP offer an ARM926EJS core with the ARM VFP coprocessor. Use of the ARM VFP instead of software emulated floating point improves system performance by reducing CPU load for floating point operations. More CPU work can be done in the same time reducing system power usage and allowing the CPU to better handle other tasks. The LPC32x0 can be used in the following example applications: Medical monitors Portable diagnostics Portable GPS Fingerprint/image identification Security systems Automotive control applications ABS, traction control, and active suspension 3D graphics Fig 1 shows the connection of the VFP in the LPC32x0 CPU subsystem. _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 3 of 15

Fig 1. LPC32x0 CPU subsystem block diagram 1.1 VFP architecture The ARM VFP coprocessor uses coprocessor 10 for single-precision instructions and coprocessor 11 for double-precision instructions. In some cases, such as mixedprecision instructions, the coprocessor ID represents the destination precision. Fig 2 shows the internal connection between ARM926E core and VFP. Fig 2. LPC32x0 VFP internal connection The ARM VFP contains thirty-two 32-bit registers. Each register can store either a singleprecision floating-point number or an integer. Any consecutive pair of registers can store a double-precision floating-point number. Because a load or store operation does not modify the data, the registers can also be used as secondary data storage by another application that does not use floating-point values. Fig 3 shows the overlapping of singleprecision and double precision. For example, D0 uses the same memory as S0/S1. _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 4 of 15

2. How to use VFP Fig 3. LPC32x0 VFP data register The VFP registers can be accessed through the ARM core instructions MRC (Move to Register form Coprocessor), MCR (Move to Coprocessor from Register), MCRR (double precision MRC), or MRCC (double precision MCR). ARM compilers offer a number of assembly language instruction aliases that handle these operations such as FMSR (Move from ARM register to VFP single precision register), FMRS (Move from VFP single precision register to ARM register), etc. See the ARM VFP9-S Technical Reference Manual for a complete list of instructions. The VFP9-S coprocessor provides floating-point functionality through a combination of hardware and software support. Normally, the ARM VFP hardware executes floating point instructions completely in hardware. However, the ARM VFP can, under certain circumstances, refuse to accept a floating point instruction, causing the ARM Undefined Instruction exception. This is known as bouncing the instruction. There are two main reasons for bouncing an instruction: potential floating point arithmetic exceptions illegal instructions. When an instruction bounces, software installed on the ARM Undefined instruction vector determines why the VFP9 coprocessor rejected the instruction and takes appropriate remedial action. This software is called the VFP support code. The support code has two components: a library of routines that perform floating-point arithmetic functions a set of exception handlers that process exceptional conditions. See the Firmware Suite Reference Guide (AFS) for details of support code. Using VFP for floating point operations requires a compiler that supports ARM VFP instructions, the implementation of a library to handle the bounced instruction trap, initialization of the VFP, and VFP context switching support (if used in an OS). Operating systems such as Linux and tool chains such as Keil MDK provide the support necessary to seamlessly support VFP in software. Complete initialization of the library for bounced instructions and VFP initialization is beyond the scope of this document. More information about VFP can be found in the ARM VFP9-S Technical Reference Manual if you need to develop new support for the ARM VFP. _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 5 of 15

2.1 VFP support with various tool chains and operating systems 2.1.1 For Keil MDK The Keil MDK development environment uses the ARM RealView compiler. More detail can be found in the RealView Compiler User Guide. Table 1 contains a description of the VFP compiler options available. Table 1. Option --fpu=vfp MDK VFP compiler options Description This is a synonym for vfpv2. --fpu=vfpv2 --fpu=softvfp --fpu=softvfp+vfpv2 Selects a hardware vector floating-point unit conforming to architecture VFPv2. Selects the software floating-point library fplib. This is the default if you select a CPU that does not have a FPU. Selects a floating-point library with software floating-point linkage that can use VFPv2 instructions. Select this option if you are interworking Thumb code with ARM code on a system that implements a VFP unit. More detailed information about floating-point linkage and computations for different compiler options can be found in the RealView Compiler User Guide. To use the LPC32x0 VFP, users can follow the setting as described in Fig 4 and Fig 5. Fig 4. MDK setting _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 6 of 15

2.1.2 For IAR Fig 5. MDK setting More information on the IAR compiler can be found in the IAR C/C++ Development Guide-Compiling and linking. The following is the VFP compiler option description. Fig 6. IAR VFP compiler options Use this option to generate code that carries out floating-point operations using a Vector Floating Point (VFP) coprocessor. By selecting a VFP coprocessor, you will override the use of the software floating-point library for all supported floating-point operations. To use LPC3200 VFP, users can follow the setting as described in Fig 7. _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 7 of 15

Fig 7. IAR setting 2.1.3 For GNU compiler (GCC) The GNU compiler and assembler have some ARM Dependent Features. The following description of the VFP compiler option is from Using as, the GNU Assembler Version 2.18.50. -mfpu=floating-point-format This option specifies the floating point format to assemble for. The assembler will issue an error message if an attempt is made to assemble an instruction which will not execute on the target floating point unit. The floating-point-format options recognized are: softfpa, fpe, fpe2, fpe3, fpa, fpa10, fpa11,arm7500fe, softvfp, softvfp+vfp, vfp, vfp10, vfp10-r0, vfp3 vfp9, vfpxd,vfpv2 vfpv3 vfpv3-d16 arm1020t, arm1020e, arm1136jf-s, maverick and neon. In addition to determining which instructions are assembled, this option also affects the way in which the.double assembler directive behaves when assembling little-endian code. The default is dependent on the processor selected. For Architecture 5 or later, the default is to assembler for VFP instructions; for earlier architectures the default is to assemble for FPA instructions. 2.1.4 Linux applications with VFP support To use VFP with Linux, you need to use a version of GCC that has support for the ARM VFP coprocessor. In addition to GCC, ARM VFP support will also need to be enabled in the Linux kernel configuration. GCC with VFP support will enable the floating point instructions in the assembled Linux code. For floating point operations that cannot be handled by the VFP, a software floating _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 8 of 15

point library and suitable software float ABI must also be supplied. The following compiler options enable VFP support with software handled through the softfp ABI: -mfpu=vfp mfloat-abi=softfp Under Linux, VFP performs about 5x to 6x faster in single precision operations when compared to software emulated floating point. For double precision operations, VFP performs about 11x to 12x faster than software emulated floating point. This benchmark can vary based on selected kernel and system options, network load, and all types of system factors. 2.1.5 WinCE applications with VFP support Because the Platform Builder 6.0 compiler does not support VFP, users have to write their own VFP software library. ARM VFPv2 Floating Point Support Library for Windows Embedded CE 6.0 can be downloaded at http://www.nxp.com/redirect/arm.com. Based on the library, VFP arithmetic can be implemented. 2.2 Enable VFP There are 5 control and status registers associated with the VFP9-S Floating-point system ID register (FPSID) Floating-point status and control register (FPSID) Floating-point exception register (FPEXC). Floating-point instruction register (FPINST) Floating-point instruction register 2 (FPINST2) More details about these registers can be found in the VFP9 Technical Reference Manual. On all systems, it is necessary to enable the VFP by setting the VFPEnable (EN) bit in the VFP s FPEXC register. Until this is done, the VFP coprocessor is disabled and any other access to the VFP causes an undefined instruction exception. On pre-v7 cores, it is necessary to reset the EX bit in this register to clear any pending exceptions. This operation must be carried out in a privileged mode. In the Keil/IAR startup source file, the code for VFP Enable is as follows: VFPEnable EQU 0x40000000 Enable_VFP FUNCTION ; Enable VFP itself MOV r0,#vfpenable FMXR FPEXC, r0 BX LR ENDFUNC ; FPEXC = r0 Fig 8 shows the VFP enable function from Keil/IAR startup source code. _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 9 of 15

Fig 8. VFP enable in startup When debugging with VFP, take note of the state of the DEBUG_CTRL register. Bit4 (VFP9_CLKEN) of DEBUG_CTRL controls VFP9 GCLK. If VFP9_CLKEN =0, then VFP clock is stopped. If VFP9_CLKEN =1, VFP clock is enabled. The default is enabled. Fig 9. DEBUG_CTRL register 2.3 Programming hints The following are some programming hints when using the LPC3200 VFP unit. When using the VFP with an RTOS such as ucos-ii or FreeRTOS, the RTOS must preserve the VFP register states during the task or interrupt context switch. If the VFP register states aren t saved, only one task is allowed to use VFP. An OS such as Linux will save the VFP states during a context switch as part of the task context block. An interrupt route which uses VFP should save VFP registers on the stack if the VFP is also used in normal mode or other interrupts. A floating point operation that cannot be handled by the VFP will cause an undefined instruction. A handler needs to be installed to process to floating point operation in software when this happens. The Keil and Realview toolchains install the software floating point handler as part of their library startup when VFP support is enabled. The VFP can be powered off through a control register. With the clocks disabled, this unit will consume zero dynamic power. _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 10 of 15

3. VFP performance Avoid cases where two consecutive floating-point instructions use the same floating-point data registers. VFP provides floating-point computation suitable for a wide spectrum of applications such as voice compression and decompression, three-dimensional graphics and digital audio, printers, set-top boxes, and automotive applications. The VFP architecture also supports execution of short vector instructions allowing a single instruction to execute on multiple data at the same time. This is useful in graphics and signal-processing applications by reducing code size and increasing throughput. John Walker s Floating-point benchmark (Fbench) method is available on the website at http://www.nxp.com/redirect/fourmilab.ch/fbench/fbench.html. The results in (1) are based on that Fbench code running on the LPC3180 internal RAM. From the table, we can see VFP increases performance by about 5x, reduces Code size by about 25 % and also reduces power consumption. (1) Fbench test results Micro Frequency (MHz) I-Cache VFP9 Time Normalized Icore ma Code & constants kb LPC3180 200 No No 48 77.66 35.2 LPC3180 200 Yes No 28 91.73 35.3 LPC3180 200 No Yes 8 76.81 26.8 LPC3180 200 Yes Yes 6 88.8 26.8 To characterize the microcontroller, we selected a set of performance tests from the AutoBench suite of the Embedded Microprocessor Benchmark Consortium (EEMBC). Fig 10 shows a diagram of the AutoBench/EnergyBench test setup. It consists of three parts: the data acquisition system (DAC), the software development environment, and the target under test. The DAC, from National Instruments, is connected to a PC running the Energy-Bench power and energy measurement software. The software development environment used the Keil Integrated Development tools to compile, download, and run the AutoBench benchmarks. We isolated the three power supply voltages to the microprocessor so EnergyBench could measure the power consumed during the Autobench benchmark testing and calculate the total energy consumed during each test. _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 11 of 15

Fig 10. Testing result based on EEMBC The test results shown in Fig 11 are based on data from http://www.nxp.com/redirect/eembc.org. The effect on performance and energy consumption by using the VFP coprocessor is shown in Fig 10. This graph is quite dramatic in demonstrating the performance effects of an integrated VFP coprocessor. At 208 MHz and with the Icache enabled, the microcontroller LPC3180 runs about 8500 iterations/sec using software floating point, but this value jumps to over 32500 iterations/sec using the VFP coprocessor for a better than 280 % performance improvement. The power chart in Fig 11 shows that VFP could reduce power consumption by approximately 15 %. Fig 11. Testing result based on EEMBC _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 12 of 15

4. Conclusion 5. Reference From the above test results, it can be seen that the VFP provides improved floating point performance and reduced power consumption and code size as compared to using software only floating point operations. [1] LPC32x0 User manual, Rev. 1.0 [2] VFP9 Technical Reference Manual, r0p2, ARM Limited [3] AN_Using VFP with RVDS, ARM Limited [4] RealView Compilation Tools Compiler Reference Guide, Version 4.0, ARM Limited [5] AN_Getting Started Linux with LPC3250 _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 13 of 15

6. Legal information 6.1 Definitions Draft The document is a draft version only. The content is still under internal review and subject to formal approval, which may result in modifications or additions. NXP Semiconductors does not give any representations or warranties as to the accuracy or completeness of information included herein and shall have no liability for the consequences of use of such information. 6.2 Disclaimers Limited warranty and liability Information in this document is believed to be accurate and reliable. However, NXP Semiconductors does not give any representations or warranties, expressed or implied, as to the accuracy or completeness of such information and shall have no liability for the consequences of use of such information. In no event shall NXP Semiconductors be liable for any indirect, incidental, punitive, special or consequential damages (including - without limitation - lost profits, lost savings, business interruption, costs related to the removal or replacement of any products or rework charges) whether or not such damages are based on tort (including negligence), warranty, breach of contract or any other legal theory. Notwithstanding any damages that customer might incur for any reason whatsoever, NXP Semiconductors aggregate and cumulative liability towards customer for the products described herein shall be limited in accordance with the Terms and conditions of commercial sale of NXP Semiconductors. Right to make changes NXP Semiconductors reserves the right to make changes to information published in this document, including without limitation specifications and product descriptions, at any time and without notice. This document supersedes and replaces all information supplied prior to the publication hereof. Suitability for use NXP Semiconductors products are not designed, authorized or warranted to be suitable for use in medical, military, aircraft, space or life support equipment, nor in applications where failure or malfunction of a NXP Semiconductors product can reasonably be expected to result in personal injury, death or severe property or environmental damage. NXP Semiconductors accepts no liability for inclusion and/or use of NXP Semiconductors products in such equipment or applications and therefore such inclusion and/or use is at the customer s own risk. Applications Applications that are described herein for any of these products are for illustrative purposes only. NXP Semiconductors makes no representation or warranty that such applications will be suitable for the specified use without further testing or modification. NXP Semiconductors does not accept any liability related to any default, damage, costs or problem which is based on a weakness or default in the customer application/use or the application/use of customer s third party customer(s) (hereinafter both referred to as Application ). It is customer s sole responsibility to check whether the NXP Semiconductors product is suitable and fit for the Application planned. Customer has to do all necessary testing for the Application in order to avoid a default of the Application and the product. NXP Semiconductors does not accept any liability in this respect. Export control This document as well as the item(s) described herein may be subject to export control regulations. Export might require a prior authorization from national authorities. 6.3 Trademarks Notice: All referenced brands, product names, service names and trademarks are property of their respective owners. _1 All information provided in this document is subject to legal disclaimers. NXP B.V. 2010. All rights reserved. Application note Rev. 01 9 February 2010 14 of 15

7. Contents 1. Introduction...3 1.1 VFP architecture...4 2. How to use VFP...5 2.1 VFP support with various tool chains and operating systems...6 2.1.1 For Keil MDK...6 2.1.2 For IAR...7 2.1.3 For GNU compiler (GCC)...8 2.1.4 Linux applications with VFP support...8 2.1.5 WinCE applications with VFP support...9 2.2 Enable VFP...9 2.3 Programming hints...10 3. VFP performance...11 4. Conclusion...13 5. Reference...13 6. Legal information...14 6.1 Definitions...14 6.2 Disclaimers...14 6.3 Trademarks...14 7. Contents...15 Please be aware that important notices concerning this document and the product(s) described herein, have been included in the section 'Legal information'. NXP B.V. 2010. All rights reserved. For more information, please visit: http://www.nxp.com For sales office addresses, please send an please send an email to: salesaddresses@nxp.com Date of release: 9 February 2010 Document identifier: _1