none
Clone of public\cellcore component RRS feed

  • Question

  • Hi,

    We received a third party RIL driver that we wish to integrate into our platform (Embedded Compact 7).  The correct approach appears to be to clone the relevant public components and make changes in the cloned copy. The third-party update contains a public\cellcore\ril directory, a public\cellcore\oak directory and a public\cellcore\cebasecesysgen.bat file in addition to some platform files.

    Do I need to clone and modify public\cellcore\ril and public\cellcore\OAK or do I need to clone the entire public\cellcore component since the update contains a cebasecesysgen.bat file that exists in the cellcore directory?

    Thanks

    Bruno

    Thursday, July 5, 2012 10:01 AM

All replies

  • The correct approach is to clone the relevant public directories: how to do it exactly depends on how they structured their code (I would blame them since they expect the customer to trash his WINCE tree).

    Basically you need to keep the public\*.* stuff they included in a different directory with respect to the %_WINCEROOT%\public tree: you probably need to add an appropriate RELEASETYPE directive in their PUBLIC\CELLCORE\RIL\DRIVER\MDD\sources file so that the rilmdd.lib you build does not overwrite the standard one in

    %_WINCEROOT%\public\cellcore\oak\lib\...

    Then you probably need to modify the sources file in their code which build the RIL dll in order to link to their rilmdd.lib (the path depends upon the choice of RELEASETYPE above) rather than to the 'standard' one in %_WINCEROOT%\public\cellcore\oak\lib\...


    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com

    Thursday, July 5, 2012 10:39 AM
  • Luca,

    I got around to trying as you suggested but have encountered some problems. The 3rd party code includes public\cellcore\ril and public\cellcore\oak\inc directories. Does it make sense to separately clone the oak directory as well as the ril. Is this the correct approach?

    I did try to clone the ril directory using the sysgen_capture tool on the copied ril directory but it did not generate any files. I have seen mention of the fact that the sysgen_capture tool does not always generate files and so the clone has to be done manually. Is this the case here or am I doing something wrong? The following is the command line output.

    C:\WINCE700\osdesigns\ril>sysgen_capture -p cellcore
    BuildLogs: BUILDMSG: Saving last successful log as "C:\WINCE700\osdesigns\iMX53_RCOM5\Wince700\iMX53_RCOM5_ARMV7_Retail\
    cesysgen\sysgen.lkg.log".
    BuildLogs: BUILDMSG: Starting: SysGen1.bat  -p cellcore
    BuildLogs: BUILDMSG: Logs at "C:\WINCE700\osdesigns\iMX53_RCOM5\Wince700\iMX53_RCOM5_ARMV7_Retail\cesysgen\sysgen.*".
    SYSGEN: BUILDMSG: Starting sysgen phase for project ( cellcore )
    SYSGEN: BUILDMSG: Found localized resources for Languages ( 0404 0407 0409 040c 0410 0411 0412 0413 0416 0419 041d 0804
    0c0a)
    BuildLogs: BUILDMSG: Exiting: SysGen1.bat  -p cellcore (result code 1).
    BuildLogs: BUILDMSG: C:\WINCE700\osdesigns\iMX53_RCOM5\Wince700\iMX53_RCOM5_ARMV7_Retail\cesysgen\sysgen.log
    BuildLogs: BUILDMSG: C:\WINCE700\osdesigns\iMX53_RCOM5\Wince700\iMX53_RCOM5_ARMV7_Retail\cesysgen\sysgen.out


    The sysgen.log file is shown below.


    BuildLogs: BUILDMSG: Starting: SysGen1.bat  -p cellcore ril
    BuildLogs: BUILDMSG: Logs at "C:\WINCE700\osdesigns\iMX53_RCOM5\Wince700\iMX53_RCOM5_ARMV7_Retail\cesysgen\sysgen.*".
    SYSGEN: BUILDMSG: Starting sysgen phase for project ( cellcore )
    SYSGEN: BUILDMSG: Found localized resources for Languages ( 0404 0407 0409 040c 0410 0411 0412 0413 0416 0419 041d 0804 0c0a)

    Microsoft (R) Program Maintenance Utility Version 9.00.30729.199
    Copyright (C) Microsoft Corporation.  All rights reserved.

    makefile.def: Invoked with predefined settings:
    TARGETNAME: dummy
    TARGETTYPE: dummy
    RELEASETYPE:
    TARGETLIBS:
    SOURCELIBS:
    makefile.def: Including C:\WINCE700\public\common\oak\misc\Sources.default
    makefile.def: BUILDROOT is C:\WINCE700\public\cellcore\cesysgen
    makefile.def: Including C:\WINCE700\public\Cellcore\cesysgen\sources
    makefile.def: Including C:\WINCE700\public\common\oak\misc\Sources.framework.default
    makefile.def: Including C:\WINCE700\public\common\oak\misc\Sources.CE
    Directory: C:\WINCE700\public\Cellcore\cesysgen
    TARGETNAME: dummy
    RELEASETYPE is not defined.  Using DEFAULT.
    makefile.def: Including C:\WINCE700\public\common\oak\misc\sources.ReleaseType_DEFAULT
    Copying ril.*
    BuildLogs: BUILDMSG: Exiting: SysGen1.bat  -p cellcore ril (result code 1).
    BuildLogs: BUILDMSG: C:\WINCE700\osdesigns\iMX53_RCOM5\Wince700\iMX53_RCOM5_ARMV7_Retail\cesysgen\sysgen.log
    BuildLogs: BUILDMSG: C:\WINCE700\osdesigns\iMX53_RCOM5\Wince700\iMX53_RCOM5_ARMV7_Retail\cesysgen\sysgen.out


    Thanks

    Bruno




    Thursday, July 12, 2012 1:27 PM
  • Where is the 3rd party PDD? Is it in another folder that you didn't mention or is a file that they add in their MDD folder?


    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com

    Thursday, July 12, 2012 1:55 PM
  • The third party PDD is in a separate directory from the MDD. Their PDD is in the platform directory (platform\BSP\src\drivers\rilpdd) while their MDD is in the public directory of their code.

    The third party code is for CE6. I'm using CE7 which has the PDD in the ril public directory which I think is not the case for CE6.

    Thursday, July 12, 2012 2:09 PM
  • Ok now is clearer to me, let's see what MSFT did under WINCE600: in CEPC you have two PDD RIL driver,  one is the ENFORA under %_WINCE%\PLATFORM\CEPC\SRC\DRIVERS\RILPDD\ENFORA

    The file which builds the DLL is

    !if 0
    Copyright (c) Microsoft Corporation.  All rights reserved.
    !endif
    !if 0
    Use of this sample source code is subject to the terms of the Microsoft
    license agreement under which you licensed this sample source code. If
    you did not accept the terms of the license agreement, you are not
    authorized to use this sample source code. For the terms of the license,
    please see the license agreement between you and Microsoft or, if applicable,
    see the LICENSE.RTF on your install media or the root of your tools installation.
    THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
    !endif
    TARGETNAME=rilenfora
    !include $(_PUBLICROOT)\cellcore\ril\driver\mdd\sources_common.inc
    !include $(_PUBLICROOT)\cellcore\ril\driver\mdd\sources_dll.inc
    CDEFINES=$(CDEFINES) -DALPHA_IN_CPI
    SOURCES=enfora.cpp

    I imagine that it's similar to the one you can find in the 3rd party platform\BSP\src\drivers\rilpdd. You see that the sources file includes other sources files in the public tree.

    Copy under platform\BSP\src\drivers the  3rd party cellcore folders they gave you.

    Add RELEASETYPE=PLATFORM in the 3rd party MDD\sources so that rilmdd.lib will be built in the BSP lib folder.

    Change the 3rd party platform\BSP\src\drivers\rilpdd\sources so it will include the .inc files from from the 3rd party cellcore rather than from the public one

    Change the SOURCELIBS rilmdd.lib path in the 3rd party \MDD\sources_dll.inc file so that it refers to the the BSP lib folder rather than to the public one

    Change the INCLUDES in the 3rd party MDD\sources_common.inc so that the header files are fetched from the 3rd party cellcore rather than from $(_PUBLICROOT)\cellcore\oak\inc and $(_PUBLICROOT)\cellcore\ril\driver\mdd

    This should be almost everything you need


    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com

    Thursday, July 12, 2012 3:33 PM
  • A detailed manual cloning description: http://guruce.com/blogpost/manualcloneofpubliccode

    Good luck,

    Michel Verhagen, eMVP
    Check out my blog: http://guruce.com/blog

    GuruCE
    Microsoft Embedded Partner
    http://guruce.com
    Consultancy, training and development services.

    Thursday, July 12, 2012 10:52 PM
    Moderator
  • Hi Michael,

    I did see this but wanted to try the sysgen_capture approach first as per http://guruce.com/blogpost/cloningpubliccodeanexample

    This did not work and Luca's suggestion looks straighforward - which I think is effectively a manual clone.

    Friday, July 13, 2012 10:32 AM