• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Embedded Software » WinCE » WinCE forum » Using NEON with WinCE 6.0 on OMAP3530
Share
WinCE
  • Forum
Options
  • Subscribe via RSS

Forums

Using NEON with WinCE 6.0 on OMAP3530

This question is answered
Bertrand Forestier
Posted by Bertrand Forestier
on Mar 31 2010 01:51 AM
Prodigy140 points

Hi,

Could you tell me whether there is a WinCE 6.0 library to use NEON on OMAP3530 ? Indeed, we would like to use it in order to perform vector/matrix floating point operations in few cycle.

Thanks for your help.

Report Abuse
  • Reply
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
All Replies
  • DavidBercovitz
    Posted by DavidBercovitz
    on Mar 31 2010 03:52 AM
    Verified Answer
    Verified by Jatin Jain
    Intellectual2000 points

    WinCE6.0 has no "native" support for NEON. When multiple threads use either NEON or VFP, the registers have to be saved and restored by the kernel during context switches when a VFP/NEON exception is raised. The OMAP3 uses VFPv3 and as a consequence shares the same set of registers as NEON. Visit ARM website here for details: http://infocenter.arm.com/help/topic/com.arm.doc.dht0002a/DHT0002A_introducing_neon.pdf

    • Problem:
      • The WinCE6.0 R2 (and R3) kernel only saves D0 to D15 registers only when a VFP instruction occurs. Although Microsoft provides kernel hooks like OEMSaveVFPCtrlRegs() and OEMRestoreVFPCtrlRegs() in order to save extra VFP registers, implementing these functions won't work as they will only allow you to save eight additional 32 bits registers. We need at least sixteen more i.e. from D16 to D31. Visit MSDN here for details: http://msdn.microsoft.com/en-us/library/aa913547.aspx
      • If you are interested and have access to the Microsoft WinCE Kernel Source code, look at the %_WINCEROOT%\Private\WINCEOS\COREOS\NK\KERNEL\ARM\armtrap.s OEMSaveVFPCtrlRegs/OEMRestoreVFPCtrlRegs.
      • You would think you can just increment the number of VFP registers in the %_WINCEROOT%\PUBLIC\COMMON\SDK\INC\winnt.h file. However, all the kernel source code would not be aligned if not re-built from the %_WINCEROOT%\PRIVATE source tree which we are not allowed to modify besides Microsoft itself.
    • Solution to support both VFP + NEON:
      • Don't know if a reliable one exists as Microsoft has not support for it in its kernel code and their official position is to NOT support it. And the Shared Source Microsoft Program only allows people to look at the kernel code, no modifications allowed.
      • The only available option with WinCE6 is to use either the ARM supplied VFPv2 library OR Neon - Neon is used by the accelerated GDI functions in the current WinCE BSP for the display driver so you would need to disable/remove this part.
        • Neon context is saved/restored using the co-proc kernel callbacks in the BSP.
        • If you use the ARM supplied VFPv2 library then you must disable the co-proc kernel callback and allow the Microsoft kernel to save/restore the VFP context.
        • Enabling both the Neon co-proc callback functions for save and restore context, and using VFPv2 library from ARM will lead to corruption of graphics or incorrect floating point results.
     
    Hope this helps. 
    Regards
    David.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • DavidBercovitz
    Posted by DavidBercovitz
    on Mar 31 2010 08:49 AM
    Intellectual2000 points

    This means the current WinCE6.0 toolchain has no support for NEON and there is no emulated library like the VFPv2 one from ARM. Your only chance is to get access to WinCE7.0 if you have a special agreement with Microsoft like ADP program or wait for WinCE7.0 RTM.

    Regards, David.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Bertrand Forestier
    Posted by Bertrand Forestier
    on Apr 01 2010 23:47 PM
    Prodigy140 points

    Hi David,

    Thanks for your detailed answer. I have other questions :

    • If we choose to disable NEON use for GDI display acceleration, what are potential impacts ? Is it going to slow our OpenGLES rendereing that is using a Window handle to build its surface ? If not, would it be possible to easily use a toolchain like ceggc that supports neon instruction set and matching C functions and generate a compliant WinCE lib ?
    •  You are talking about WinCE 7.0 that is our only chance to access NEON. Do you know if current BSQUARE BSP for OMAP3530 are compatible with CE 7.0 or if they are already working on dedicated BSP for WINCE 7.0 on OMAP3530 board ?

     

    Thanks.

    Best Regards.

    Bertrand.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • DavidBercovitz
    Posted by DavidBercovitz
    on Apr 02 2010 03:52 AM
    Intellectual2000 points

    Bertrand,

    • NEON disabled: it means GDI won't be accelerated. However, it has no impact on OGLES. OGLES doesn't run on the ARM Cortex-A8 but on the Imagination SGX530 core. I'm not familiar with cegcc and what level of WinCE it has. I'd rather consider this as experimental. The problem with WinCE is in the binary format which is COFF/PE i.e. non-standard COFF.
    • There are very few things I'm allowed to share concerning any future development. I'd rather recommend you to contact your TI local sales representative. 

    Best regards

    David.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Eugen Feraru
    Posted by Eugen Feraru
    on Oct 27 2010 11:06 AM
    Intellectual375 points

    Hi all,

    I am using VFPv2. TI's/BSquare documentation mentions "If you use the ARM supplied VFPv2 library then you must disable the co-proc kernel callback

    and allow the Microsoft kernel to save/restore the VFP context." How can co-proc kernel callback be disabled?

    Thanks,

    Eugen

    OMAP WINCE OMAP35xx BSP 6.13 omap3530 OMAP 3530 OMAP35x wince BSP OMAP EVM BSP WinCE omap3 OMAP35xx EVM BSP omap3 evm 35x 3530 Framework component EDMA fastcopy ACPY3 DMAN3 omap 3530 suspend power bsp6.14.00 Windows CE bsp6.14.01 wiNCE bSP6.14.01 OMAP3530 CTL_CODE omap3530 bsp06.15.00 wince6.0 bsp 6.15.00 omap3530 wince6
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • DavidVescovi
    Posted by DavidVescovi
    on Oct 28 2010 17:21 PM
    Genius4150 points

    I may be wrong but I thought there was another issue with the VFPv2 under CE 6? I'll have to dig around maybe it was the NEON interaction. I do remember having it working in an earlier dorp of the BSP.

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Madhvi
    Posted by Madhvi
    on Oct 28 2010 17:58 PM
    Expert5080 points

    In vfphandler.c, in OALVFPInitialize(), change these lines as follows:

     

        pOemGlobal->pfnInitCoProcRegs    = NULL;
        pOemGlobal->pfnSaveCoProcRegs    = NULL;
        pOemGlobal->pfnRestoreCoProcRegs = NULL;
        pOemGlobal->cbCoProcRegSize      = 0;
        pOemGlobal->fSaveCoProcReg       = FALSE;

     


    Please click Verify Answer button if this response answers your question. For updated information on TI WINCE BSP, please check out the WinCE Handbook.

     

    NEON VFP OMAP3530 WINCE BSP
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
TI E2E™ Community
  • Support Forums
  • Blogs
  • Videos
  • Groups
  • Site Support & Feedback
  • Settings
TI E2E™ Community Groups
  • TI University Program
  • Make the Switch
  • Microcontroller Projects
  • Motor Drive & Control
Other Communities
  • Deyisupport
  • Designsomething.org
  • beagleboard.org
  • TI on Element 14
  • TI on TechXchangeSM
Other Technical & Support Resources
  • WEBENCH® Design Center
  • Product Information Centers
  • Technical Documents
  • TI Design Network
  • TI Technical Articles
  • TI Training

All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
embedded processors, along with software, tools and the industry’s largest sales/support staff.

© Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy Policy | Terms of Use