VFP in CE 6.0

有關 CE 6 的 ARM VFP 支援

這一篇 google groupe討論
The VS2005 compiler used by PB for CE6.0 emits no VFP instructions and
unless you implement FPCRT.DLL for an ARM then all CE implementations
are integer (default MS implementation of FPCRT uses software
emulation), even if you have a hardware VFP in your core (e.g. ARM11
or Cortex-A8). To actually use the VFP you must do the following:

1. Use SYSGEN_OEM_FPCRT - catalog item "OEM Floating Point CRT (ARM
2. Download the VFPv2 library support from the ARM website and
incorporate it into your build:

Instructions are included with the download from ARM.

My tests show a 4x increase in performance on floating point
operations on a release build on an ARM1136JF-S core.


也就是說,CE 6 的 VFP driver(?) library f是由 ARM 提供的。

還有這一篇 MSDN 討論,說
The current version of Windows CE supports the ARMV4I architecture. Cortex A8 it's ARMv7 (ARM's naming can be even more confusing than ms one...) and currently the compiler does not use its specific features (NEON, VFP3 etc.).

The new release of Windows CE (named Windows Embedded Compact 7) will support the ARMv7 architecture.

Here you can find some information about the new features of this release:


You can download a public beta from connect.microsoft.com.

If your project has not a very short time frame (you plan to release your device Q2 next year, for example), you may consider using this new release for your development to be able to "unleash" all the power of your CPU core.

Valter Minute
Windows Embedded MVP

所以你藥用 CE 6 寫 VFP 或是 NEON 的 code 是不可能的,要等 Windows Embedded 7.

總合起來,可以要看一下 msdn :
Including a Replacement Floating Point C Run-Time Library in a Run-Time Image
還有這一篇的實做 copy 下來,免得不見:

Download and install the "ARM® VFPv2 Floating Point Support Library" from ARM.

If building with Platform Builder to build your OS image

simply add the FPCRT project to your solution, and set the following catalog feature

EVM_3530\Core OS\CEBASE\Applications and Services Development\C Libraries and Runtimes\OEM Floating Point CRT (ARM only)

A SYSGEN is required.

If building without Platform Builder, ensure the SYSGEN variable is set. I added the following to my "tinykernel DEBUG.bat" file.


Add entries to platform.bib

fpcrt.dll            $(_FLATRELEASEDIR)\fpcrt.dll               NK  SH
k.fpcrt.dll $(_FLATRELEASEDIR)\fpcrt.dll NK SHMK

I copied the contents of %WINCEROOT%\OTHERS\ARM\VFPv2\src\ARMVFPv2\obj to my prebuilt directory.
Then copied the DLL project to my %WINCEROOT%\OTHERS\ARM\VFPv2\src\FPCRT to my %PLATFORMROOT%\%_TGTPLAT%\src\drivers directory.
Modified dirs, and updated sources to point to new library location.

A SYSGEN is required.

Visual Studio 2008 VFP Support

VS2008 ARM compiler supports emulated and hardware floating point. To enable hardware based Vector Floating point you need to use this option


This means not floating point emulation.

If you use


it will generate software floating point, as it means floating point emulation.

Microsoft KB 947894

Note: This is not related to NEON support

有關 multimedia (video/audio/graphic) 部份,ARM 有提供 OpenMax 的實做 (實際用 ARM11, Cortex A8 feature optimize) 的 library
Khronos Standards
...但是依照慣例,ARM的網頁連結 半年後一定又會改 >_<

喔?是以 library 的方式提供,用 realview compile (當然不是 VS...)