This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

VFP and NEON CE6

Other Parts Discussed in Thread: OMAP3530

I read over the write up http://processors.wiki.ti.com/index.php/WinCE-TIBSP_Neon/VFP_Considerations and I have a few questions. In my case I would like VFP support and I can live without NEON accelerated graphics. Is this still possible in A8_1.00.00 BSP? I thought on older BSP releases there was an option for building ether a NEON accelerated display driver or not. It is not clear to me if this is still an option. If so, I would assume including the VFPv2 library and a non-NEON display driver is a valid option. Are there any issues using this combination?

Are all these issues resolved in CE 7?  

  • Hi David,

    Support for NEON hardware accelerated display driver is still present in the Unified BSP when the "ASSEMBLER_ARM_ARCH7_SUPPORT" environment variable is set. This variable can only be set when compiling the library with a compiler supporting the ARMv7 architecture (which is not the case wih the armv4i compiler of WinCE6), like the official RVDS compiler from ARM. However, the Unified BSP comes with a prebuilt version of the NEON accelerated graphics library that is linked by default to the display driver. You can see how it works from the file below:

    WINCE600\PLATFORM\EVM_OMAP3530\SRC\DRIVERS\DISPLAY\DSS\sources

    There is currently no built-in way of having a non NEON accelerated display driver in the BSP other than manually rewriting the DSS DDGPE driver.

  • So there is no way of having a "non-NEON" version of the display driver and you can not enable the VFP (v2 or 3) with a NEON enabled display. Then it seems to be you can not use the VFP at all (and expect to get reliable results) under CE 6 with a display enabled OSDESIGN.

    Is this the bottom line?

    Are these possible alternatives?:

    1) Use the C6Accel (although does not look like floating point is enabled on 35XX)

    2) Use non-NEON display driver from old versions TI/BSquare BSP

    3) Wait for CE7

  •  

    I don't quite understand why you need a non-NEON version of the display driver, can you please be more specific about that?

    You can actually use the NEON accelerated display driver and have the VFP2CRT.dll used by the OS at the same time, if this is what bothers you in using the NEON accelerated display driver.

    Let me know.

  • David,

    Something additional that you need to take into account for VFP: http://processors.wiki.ti.com/index.php/WinCE-TIBSP_FAQ#Q:_Why_is_the_performance_of_Floating_Point_Operations_.28measured_using_BMQ.29_less_than_expected.3F_Is_VFP_enabled_in_the_BSP_for_WinCE6.3F.  Some of these NEON accelerated functions in the display are disabled due to some specific CETK errors.

    Regards,

    Mauricio

  • After reading the FAQ link and the VFP consideration link, which is all I have to go by, it still seems to me the VFP is unuseable under CE6.  ... that is if you want reliable results. ...for any BSP.

  • DavidVescovi said:
    After reading the FAQ link and the VFP consideration link, which is all I have to go by, it still seems to me the VFP is unuseable under CE6.  ... that is if you want reliable results. ...for any BSP.

    Thats true.

    And to answer your original question - to disable NEON in BSP:

    1. make sure none of the applications/drivers use NEON.

    2. Set the following bit to 0 in dss.reg

    "EnableNeonBlts"=dword:0

    3. Turn off saving and restoring of NEON registers in BSP. See PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI\OAL\OMAP_NEON\vfphandler.c. In function OALVFPInitialize(), set the following to NULL/0/FALSE accordingly.

        pOemGlobal->pfnInitCoProcRegs    = OALInitNeonSaveArea;
        pOemGlobal->pfnSaveCoProcRegs    = OALSaveNeonRegistersEx; //use Extended functions
        pOemGlobal->pfnRestoreCoProcRegs = OALRestoreNeonRegistersEx; // Use Extended funtions
        pOemGlobal->cbCoProcRegSize      = NEON_SAVEAREA_SIZE;
        pOemGlobal->fSaveCoProcReg       = TRUE;

    3. TI DVSDK package also uses NEON routines - so make sure you are not using TI DVSDK.