Clone of public\cellcore component
-
Thursday, July 05, 2012 10:01 AM
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
All Replies
-
Thursday, July 05, 2012 10:39 AM
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 12, 2012 1:27 PM
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:55 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 2:09 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 3:33 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 10:52 PMA 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. -
Friday, July 13, 2012 10:32 AM
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.

