当加入OEM Floating Point CRT (ARM only)组件的时候编译会提示FRCRT未定义,查MSDN都说wince6支持这个功能,百思不得其解,最后终于在网上查到了原因:
http://www.eggheadcafe.com/conversation.aspx?messageid=34789848&threadid=34572975
原文如下:
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 only)
2. Download the VFPv2 library support from the ARM website and incorporate it into your build:
www.arm.com/products/os/windowsce_vfp_dl.html
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.
我的理解:FPCTR组件只是加入了对相关函数的引用定义,具体实现还需要OEM来实现。如果CPU不支持硬浮点是不需要加入这个组件的。
本文详细介绍了在Windows CE 6.0中如何通过加入OEMFloatingPointCRT(ARMonly)组件并结合ARM VFPv2库支持来启用硬件浮点运算,以显著提高基于ARM11或Cortex-A8等支持硬件浮点运算的CPU的性能。
1万+





