none
New Platform does not identify hard drive

    Question

  • I have a CEPC SBC using a Vortex DX DOC with an integrated ehternet.   The board also has 4 serial ports and an IDE interface.   I am using CE5.0.  I made a CEPC based headless platform and I am able to talk to the system using telnet, Ftp and HTTP.

    The image does not detect the harddrive.   Apparently this board is using an intel based IDE controller and requires the ICHIDE.DLL ATAPI driver.  This driver was available for CE 5.0 in a BSP provided by intel but I cant seem to find that anywhere.  Does anyone know how to obtain this DLL for CE5.0.

    The hardware vendor provided a BSP for CE6.0 which has ICHIDE.DLL in it.  The compiled file was found in a DEBUG directory of the BSP.  I dont know if that matters.   I tried including the ICHIDE.DLL in my build by adding it to PLATFORM.BIB in the MODULES section.   This gave me an error that no .REL file was available.   So I move the .REL file from the BSP to my Release Directory and then I get an error
       CANT find import 2569 in coredll.dll
       FATAL IMPORT error in ICHIDE.

    Next I tried adding it to the .BIB file in the FILES Section.  The Platform Builder created an image but it still did not detect the Hard Drive.

    The vendor also provided the source for this DLL.   I moved the source directories into my PLATFORM\DRIVERS path and added the directory into the DIRS file.   Then I tried to build the project. 

    I get unresolved external error SEH_EPILOG4
           unresolved external error except_handler4
           unresolved external error SEH_PROLOG4
          unresolved external error ceopencallerbuffer
           unresolved external error ceclosecallerbuffer

    If anyone has any ideas how to proceed to get this functioning it would be greatly appreciated.

    Saturday, July 03, 2010 12:44 PM

All replies

  • Per the info you gave us, it looks like you are trying to use or compile a CE6 driver in CE5.
    Coredll 2569 is CeOpenCallerBuffer which is a buffer marshaling function and only available in CE 6 and later.
    So it is not surprising, even you got the source, the build still failed due to lack of these functions in CE5. As the memory architecture is different in CE5 and 6, you need to replace these functions with MapCallerPtr and other CE5 pointer mapping functions. Also take a look at http://msdn.microsoft.com/en-us/library/ee481669.aspx, this is a guide for migrating CE5 driver to CE6, but you may use it for back porting reference.
    Another build error is the SEH_xxx, these are exception handling functions, perhaps you can resolve it by enabling /EHa compiler options, for the usage http://msdn.microsoft.com/en-us/library/ms924245.aspx
    And usually, instead of hard-coding compiler option in your SOURCES file, we set
    EXCEPTION_CPP=ENABLE_WITH_SEH and so to indicate the standard makefile to enable corresponding compiler options. The standard makefile, PUBLIC\COMMON\OAK\MISC\makefile.def, is a long one but one of the core of building process.

    Saturday, July 03, 2010 5:19 PM
  • knk53,

    The Vortex86DX board uses the ATAPI driver provided as part of Platform Builder to support IDE storage device.  In addition to the ATAPI driver, FAT file system component and appropriate registry entries are needed to enable support and make the hard drive accessible.

    Is Windows CE 5.0 a requirement for your project?  If not, it's better for you to use the current CE 6.0 release.

    Following are the URLs to download Windows CE 5.0 BSP and development notes for Vortex86DX:

       ftp://download@ftp.dmp.com.tw/vortex86dx/wince/Vortex86DX_50E_BSP_090218.msi

       ftp://download@ftp.dmp.com.tw/vortex86dx/wince/Vortex86DX_50E_BSP_090218_Note.pdf

    ------------------------------------------------------------------------------------------------------------------------------

    If you would like to look into CE 6.0 resources, here  are the link with BSP and jump start guide with exercises in step-by-step format working through the process to develop an OS design, generate OS runtime image and deploy the image to the target device:

      http://www.embeddedpc.net/vortex86dxspark/

    Which Vortex86 board are you using?

     

    Samuel Phung / ICOP

     

     

    Sunday, July 04, 2010 2:28 AM
  • I will take a look at the migration guide and see how much change is required.  Given the responses that were provided it may be a better idea to use CE 6.0.   How much work is required to change existing Platforms from CE5.0 to 6.0?   Do they port easily or is it a complete redo??    Can I support CE 5.0 and 6.0 on the same workstation??
    Tuesday, July 06, 2010 12:42 PM
  • Samuel,

       The board I am trying to bring up made by a different vendor but uses a Vortex DX processor.   I have the WinCE BSP from dmp.com and that is working fine on the ICOP CEPC.  I thought the IDE controller was built into the Vortex System on Chip but apparently this other vendor added an Intel IDE Controller??  This new controller does not appear to be compatible with the built in ATAPI driver. 

    Tuesday, July 06, 2010 12:46 PM
  • So if the original code CE 6.0 Source code was

    ptemp is defined PUCHAR   ptemp;

     

            // Verify embedded pointer access and map user mode pointers

           if (FAILED(CeOpenCallerBuffer(
                        (PVOID *)&ptemp,
                        (LPVOID)pSafe->sglist[i].sb_buf,
                        pSafe->sglist[i].sb_len,
                        dwArgType,
                        FALSE)))

           {

               goto CleanUpLeak;
           }

            ASSERT(ptemp);
            saveoldptrs[i] = pSafe->sglist[i].sb_buf;
            pSafe->sglist[i].sb_buf = ptemp;

    *************************************

    Is this a correct substitution for CE 5.0

            // Verify embedded pointer access and map user mode pointers

          ptemp = MapCallerPtr ((LPVOID)pSafe->sglist[i].sb_buf,
                                                        pSafe->sglist[i].sb_len);
            if (ptemp ==NULL)
            {
                goto CleanUpLeak;
            }

            ASSERT(ptemp);
            saveoldptrs[i] = pSafe->sglist[i].sb_buf;
            pSafe->sglist[i].sb_buf = ptemp;

            

     

     

    Tuesday, July 06, 2010 1:31 PM
  • Basically that is what you need to do.
    But if the driver uese Asynchronous Buffer (with CeAllocAsynchronousBuffer), for back porting to CE5, it needs to rewrite with SetProcPermissions to gain the driver's access permission to other (client's) process.

    And what do you meaan support CE 5 and CE 6 on the same workstation? If you intend to install both PB 5 and PB 6 on the same PC, it won't be a good idea.

    Tuesday, July 06, 2010 7:56 PM