none
Porting Wince 6 R3 BSP to winec 7 -- numerous warnings and errors RRS feed

  • Question

  • Hi

    Followed the guides/tutorials found on msdn and other sites on porting bsp to winec7.

    having build fail issues with numerous warnings, errors about pre-compiled headers, help!!!

    got the pbxml file edited, the bsp shows up correctly in the new OS design wizard.

    when I create and compile a new OS Design, I get errors like the following:

    coredllhs_ALL.lib(sorting.obj) : warning LNK4099: PDB 'sortinglib.pdb' was not found with 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\lib\ARMV7\retail\coredllhs_ALL.lib' or at 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\sortinglib.pdb'; linking object as if no debug info

    coredllhs_ALL.lib(fscanf.obj) : warning LNK4099: PDB 'ccrtstio.pdb' was not found with 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\lib\ARMV7\retail\coredllhs_ALL.lib' or at 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ccrtstio.pdb'; linking object as if no debug info

    coredllhs_ALL.lib(fputc.obj) : warning LNK4099: PDB 'ccrtstio.pdb' was not found with 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\lib\ARMV7\retail\coredllhs_ALL.lib' or at 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ccrtstio.pdb'; linking object as if no debug info

    coredllhs_ALL.lib(fgetc.obj) : warning LNK4099: PDB 'ccrtstio.pdb' was not found with 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\lib\ARMV7\retail\coredllhs_ALL.lib' or at 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ccrtstio.pdb'; linking object as if no debug info

    coredllhs_ALL.lib(vfprintf.obj) : warning LNK4099: PDB 'ccrtstio.pdb' was not found with 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\lib\ARMV7\retail\coredllhs_ALL.lib' or at 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ccrtstio.pdb'; linking object as if no debug info

    coredllhs_ALL.lib(scanf.obj) : warning LNK4099: PDB 'ccrtstio.pdb' was not found with 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\lib\ARMV7\retail\coredllhs_ALL.lib' or at 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ccrtstio.pdb'; linking object as if no debug info

    ...... there is lots of these!!

    and like these...

    C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\sdk\lib\ARMV7\retail\ole32.exp
    ole32_ALL.lib(UTILS.obj) : warning LNK4204: 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ole32com.pdb' is missing debugging information for referencing module; linking object as if no debug info

    ole32_ALL.lib(PLEX.obj) : warning LNK4204: 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ole32com.pdb' is missing debugging information for referencing module; linking object as if no debug info

    ole32_ALL.lib(memstm.obj) : warning LNK4204: 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ole32com.pdb' is missing debugging information for referencing module; linking object as if no debug info

    ole32_ALL.lib(MAP_KV.obj) : warning LNK4204: 'C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\oak\target\ARMV7\retail\ole32com.pdb' is missing debugging information for referencing module; linking object as if no debug info

    ...... there is lots of these!!

    sources.cmn were edited as per the msdn porting guide.
    I am pretty sure I have goofed something somehwere, but I am at a loss.

    anyone can shed some light that would be much appreciated,

    I dont wish to post the entire log file but I can make it available to anyone who is willing to take a look etc.

    thanks.

    Tuesday, September 4, 2012 3:50 AM

All replies

  • Hi there,

    The warnings that you quote just tell you that some DLLs were created without full debugging information.

    Although they may be important down the line, they should not prevent you from completing a full build successfully, including a working system image.

    Can you post the actual build errors (instead of warnings), so we can try to help you solve them?

    Ilan,

    Integrity-Project

    Wednesday, September 5, 2012 5:52 AM
  • Hi Ilan,

    Thanks for responding.

    I thought I had posted the errors but looks like I had missed it, here it is:

    BUILD: [01:0000000339:ERRORE] Error(s) in directory "C:\WINCE700\platform\Mini210\SRC\DRIVERS\DISPLAY\DISPLAY_DRV\". {log="C:\WINCE700\build.log(37777)"}
    BUILD: [01:0000000340:ERRORE] c:\wince700\platform\mini210\src\drivers\display\display_drv\precomp.h(45) : fatal error C1083: Cannot open include file: 'ldi.h': No such file or directory {log="C:\WINCE700\build.log(37778)"}
    BUILD: [01:0000000341:ERRORE] NMAKE : fatal error U1077: 'C:\WINCE700\sdk\bin\i386\ARM\cl.EXE' : return code '0x2' {log="C:\WINCE700\build.log(37779)"}
    BUILD: [01:0000000343:ERRORE]  clean TargetPCHPass  -nologo BUILDMSG=Stop.  BUILDROOT=C:\WINCE700\platform\Mini210 CLEANBUILD=1 NOLINK=1 PASS0ONLY=1 PASSPCH=1 failed - rc = 2. {log="C:\WINCE700\build.log(37781)"}
    BLDDEMO: ERROR: There were errors building CEBASE. {log="C:\WINCE700\build.log(37813)"}

    I dont know what to do with precompiled headers....in other words what chanegs should I be making in the sources files in each.

    Thanks for any ideas and suggestions to help me in the right direction.

    much appreciate it.

    Wednesday, September 5, 2012 6:35 PM
  • The build error is because of the "Cannot open include file: 'ldi.h'". Specify the path of this file correctly to the build system. You can specify path in your sources file. for example,

    INCLUDES=$(INCLUDES); \
    $(_PLATFORMROOT)\common\src\soc\$(_TGTSOC)\inc; \
    $(_PLATFORMROOT)\common\src\soc\$(_TGTSOC)\display\inc;\
    ..\inc

    Best Regards,

    Rakesh.

    Thursday, September 6, 2012 4:59 AM
  • Thanks for the tip.

    I added the INCLUDES to sources.cmn in the platform root folder, and now the build is progressing.

    hope its ok to add to the sources.cmn file.

    I am pretty new to porting a wince 6.0 bsp to Winec 7.

    Thursday, September 6, 2012 2:22 PM
  • You own your platform, so of course it is okay to modify your souces.cmn.  That is why it is in your platform.

    Bruce Eitman (eMVP)
    Senior Engineer
    Bruce.Eitman AT Eurotech DOT com
    My BLOG http://geekswithblogs.net/bruceeitman

    Eurotech Inc.
    www.Eurotech.com

    Thursday, September 6, 2012 5:45 PM
    Moderator
  • maybe I should have been clearer.

    should I be adding it in sources.cmn or in sources file in each folder.

    so far my sources.cmn includes is growing as below, not sure if this is right or not:

    INCLUDES=$(SG_OUTPUT_ROOT)\Platform\$(_TGTPLAT)\src\inc
    INCLUDES=$(INCLUDES);$(SG_OUTPUT_ROOT)\Platform\$(_TGTPLAT)\sdk\inc
    INCLUDES=$(INCLUDES);$(_PLATFORMROOT)\common\src\soc\s5pv210_sec_v1\oal\inc
    INCLUDES=$(INCLUDES);$(_WINCEROOT)\public\common\oak\drivers\block\msflashfmd\inc
    INCLUDES=$(INCLUDES);$(_PUBLICROOT)\common\oak\inc
    INCLUDES=$(INCLUDES);$(_PLATFORMROOT)\common\src\inc
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SDK\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\DISPLAY\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\CAMERAIF\HAL\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\CMM
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\CAMERAIF\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\COMMON\i2c_emul\EmulEngine2.3
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\DISPLAY\LDI_LIB\MIPI\INC

    Thursday, September 6, 2012 8:01 PM
  • I would prefer to add INCLUDES in indivisual sources file as a standard practice. The sources.cmn changes will apply to all folders under the root folder where sources.cmn file is present.

    Best Regards,
    Rakesh.

    Friday, September 7, 2012 4:01 AM
  • CMN is short for common.   So if the setting is common to the sub-tree, it makes sense to add it there.

    Then be sure to do this in sub-folder sources:

    INCLUDES=$(INCLUDES);<folder specific paths>

                       ^^^^^^^^

    if you want it to use the parent settings.


    Bruce Eitman (eMVP)
    Senior Engineer
    Bruce.Eitman AT Eurotech DOT com
    My BLOG http://geekswithblogs.net/bruceeitman

    Eurotech Inc.
    www.Eurotech.com

    Friday, September 7, 2012 12:44 PM
    Moderator
  • Thanks Bruce. I meant the same but you clarified it better way.

    Best Regards,

    Rakesh.

    Friday, September 7, 2012 1:02 PM
  • Gents,

    thanks for the valuable info. all of this is slowly starting to make sense and I am making some progress as well...

    I was going thru one of the sources file in a leaf node (folder) and found the following include:

    INCLUDES=$(INCLUDES);$(SG_OUTPUT_ROOT)\Platform\$(_TGTPLAT)\SRC\DRIVERS\DISPLAY\INC;
    INCLUDES=$(INCLUDES);$(SG_OUTPUT_ROOT)\Platform\$(_TGTPLAT)\SRC\DRIVERS\DISPLAY\DISPLAY_DRV;
    INCLUDES=$(INCLUDES);$(SG_OUTPUT_ROOT)\Platform\$(_TGTPLAT)\SRC\DRIVERS\CAMERAIF\INC;
    INCLUDES=$(INCLUDES);$(SG_OUTPUT_ROOT)\Platform\$(_TGTPLAT)\SRC\DRIVERS\CAMERAIF\HAL\INC;

    So I tried to expand out what SG_OUTPUT_ROOT is and there is no SRC folder

    so is this include wrong (its from factory I think, I could be wrong about that) or one of PB's batch file not creating and populating the SRC folder and sub folders as listed above??

    I am posting my sources.cmn perhaps additional set(s) of eyes could give a better perspective if soemthing in there is out of line or just wrong:

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

    WINCEOEM=1
    WINCECPU=1
    NOIMPLICITIMPORT=1
    RELEASETYPE=PLATFORM

    CDEFINES=$(CDEFINES) -DCEDDK_USEDDKMACRO

    !IF "$(ENABLE_OAL_ILTIMING)"=="1"
    CDEFINES=$(CDEFINES) -DOAL_ILTIMING
    !ENDIF



    !if 0
    following line is original from Wince 6 BSP, kept for reference only
    _COMMONPUBROOT=$(_PROJECTROOT)\cesysgen
    !endif

    _COMMONPUBROOT=$(SG_OUTPUT_ROOT)
    _PLATCOMMONLIB=$(_COMMONPUBROOT)\platcomm\$(_TGTPLAT)\lib
    _PLATLIB=$(_COMMONPUBROOT)\platform\$(_TGTPLAT)\lib
    _RAWFILETGT=$(SG_OUTPUT_ROOT)\platform\$(_TGTPLAT)\target

    _OEMINCPATH=$(_COMMONPUBROOT)\sdk\inc;
    _OEMINCPATH=$(_OEMINCPATH);$(_COMMONPUBROOT)\oak\inc;
    _OEMINCPATH=$(_OEMINCPATH);$(_COMMONPUBROOT)\ddk\inc;

    _ISVINCPATH=$(_WINCEROOT)\public\common\sdk\inc

    INCLUDES=$(SG_OUTPUT_ROOT)\Platform\$(_TGTPLAT)\src\inc
    INCLUDES=$(INCLUDES);$(SG_OUTPUT_ROOT)\Platform\$(_TGTPLAT)\sdk\inc
    INCLUDES=$(INCLUDES);$(_PLATFORMROOT)\common\src\soc\s5pv210_sec_v1\oal\inc
    INCLUDES=$(INCLUDES);$(_WINCEROOT)\public\common\oak\drivers\block\msflashfmd\inc
    INCLUDES=$(INCLUDES);$(_PUBLICROOT)\common\oak\inc
    INCLUDES=$(INCLUDES);$(_PLATFORMROOT)\common\src\inc
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SDK\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\DISPLAY\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\CAMERAIF\HAL\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\CMM
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\CAMERAIF\INC
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\COMMON\i2c_emul\EmulEngine2.3
    INCLUDES=$(INCLUDES);$(_TARGETPLATROOT)\SRC\DRIVERS\DISPLAY\LDI_LIB\MIPI\INC

    !if "$(BSP_POCKETSTORE)" == "1"
    CDEFINES=$(CDEFINES) -DBSP_POCKETSTORE
    ADEFINES=$(ADEFINES) -pd "BSP_POCKETSTORE SETL {TRUE}"
    !else
    ADEFINES=$(ADEFINES) -pd "BSP_POCKETSTORE SETL {FALSE}"
    !endif

    !if "$(BSP_NOTVOUT)" == "1"
    CDEFINES=$(CDEFINES) -DNO_USE_TVOUT
    !endif

    !if "$(BSP_NOHDCP)" == "1"
    CDEFINES=$(CDEFINES) -DNO_USE_HDCP
    !endif

    !if "$(BSP_NOCEC)" == "1"
    CDEFINES=$(CDEFINES) -DNO_USE_CEC
    !endif

    !if "$(BSP_POP_TYPE)" == "H_TYPE_POP"
    CDEFINES=$(CDEFINES) -DH_TYPE_POP
    ADEFINES=$(ADEFINES) -pd "H_TYPE_POP SETL {TRUE}"
    !endif

    !if "$(BSP_POP_TYPE)" == "AC_TYPE_POP"
    CDEFINES=$(CDEFINES) -DAC_TYPE_POP
    ADEFINES=$(ADEFINES) -pd "AC_TYPE_POP SETL {TRUE}"
    !endif

    CDEFINES=$(CDEFINES) -DS5PV210_EVT=$(S5PV210_EVT)
    !if "$(S5PV210_EVT)" == "0"
    ADEFINES=$(ADEFINES) -pd "S5PV210_EVT0 SETL {TRUE}"
    !endif

    CDEFINES=$(CDEFINES) -DBSP_TOUCH_TYPE=$(BSP_TOUCH_TYPE)

    CDEFINES=$(CDEFINES) -DBSP_KEYBD_TYPE=$(BSP_KEYBD_TYPE)

    !if "$(BSP_DEEPIDLE_TEST)" == "1"
    CDEFINES=$(CDEFINES) -DDEEPIDLE_TEST
    !endif
    !if "$(BSP_TICK_COMPENSATION)" == "1"
    CDEFINES=$(CDEFINES) -DRTC_TICK_ERROR_COMPENSATION
    !endif

    !if "$(BSP_USEDVFS)" == "1"
    CDEFINES=$(CDEFINES) -DBSP_USEDVFS
    !endif

    !if "$(BSP_NOSDMMC_BOOT)" == ""
    CDEFINES=$(CDEFINES) -DSDMMC_BOOT
    !endif

    !if "$(BSP_PMIC_VOLTAGE_CONTROL)" == "1"
    CDEFINES=$(CDEFINES) -DENABLE_VOLTAGE_CONTROL
    !endif

    !if "$(BSP_NOVFP)" == "1"
    ADEFINES=$(ADEFINES) -pd "VFP_ENABLE SETL {FALSE}"
    !else
    ADEFINES=$(ADEFINES) -pd "VFP_ENABLE SETL {TRUE}"
    !endif

    !if "$(BSP_NOUSBHCD)" != "1"
    CDEFINES=$(CDEFINES) -DBSP_USE_USBHOST
    !endif

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

    Friday, September 7, 2012 3:19 PM
  • Got another error after making some good progress, but this one doesnt make much sense to me:

    BUILD: [Thrd:Sequence:Type  ] Message
    BUILD: [01:0000001779:ERRORE] Error(s) in directory "C:\WINCE700\platform\Mini210\SRC\OAL\OALEXE\".
    BUILD: [01:0000001780:ERRORE] oal_ioctl_S5PV210_sec_v1.lib(deviceinfo.obj) : error LNK2005: g_oalIoCtlPlatformManufacturer already defined in oal.lib(ioctl.obj)
    BUILD: [01:0000001781:ERRORE] oal_ioctl_S5PV210_sec_v1.lib(deviceinfo.obj) : error LNK2005: g_oalIoCtlPlatformName already defined in oal.lib(ioctl.obj)
    BUILD: [01:0000001782:ERRORE] C:\WINCE700\OSDesigns\Mini210s_BSP\Mini210s_BSP\Wince700\Mini210_ARMV7_Retail\cesysgen\platform\Mini210\target\ARMV7\retail\oal.exe : fatal error LNK1169: one or more multiply defined symbols found
    BUILD: [01:0000001783:ERRORE] NMAKE : fatal error U1077: 'C:\WINCE700\sdk\bin\i386\ARM\link.EXE' : return code '0x491'
    BUILD: [01:0000001785:ERRORE] TargetExeFiles  -nologo BUILDMSG=Stop.  BUILDROOT=C:\WINCE700\platform\Mini210 CLEANBUILD=1 LINKONLY=1 NOPASS0=1 failed - rc = 2.

    scratching my head, hoping someone can point me in the right direction on how to solve this issue.

    looking at my particular platforms sources.cmn includes (posted above), I am starting to wonder if something is very wrong in the way I have gone about adding all sorts of includes in the sources.cmn file.

    Sunday, September 9, 2012 2:56 AM
  • any one?
    Thursday, September 13, 2012 7:37 PM
  • What is actually happening is that, during link, two C variables of the same name are found to be defined in two different object files. One of those is yours, oal_ioctl_S5PV210_sec_v1.lib/deviceinfo.obj. The other is Microsoft's, oal.lib/ioctl.obj. This is the same as if your application defined the same global variable name in two .C files in your application; the linker will complain. As to what the fix is, my thought is that you should be *referencing* the variable in oal.lib:

    extern LPWSTR g_oalIoCtlPlatformName;

    and setting it to the value for your platform name in your code.

    Paul T.

    Tuesday, September 18, 2012 11:50 PM
  • Hi Paul,

    Thanks for the info.

    To be honest, I am pretty new at this, so what file should I put the following into?

    extern LPWSTR g_oalIoCtlPlatformName;

    another thought, since I am porting the sdk from wince 6 and it does not complain there, is it possible that my sources.cmn path above in a previous post is wrong somewhere OR wince 6 and winec 7 compile these files diffferently?

    thx

    Thursday, September 27, 2012 8:27 PM
  • still stuck!

    hoping someone can help.

    thanks.

    Wednesday, October 10, 2012 9:40 PM
  • I think it's unlikely to be caused by an include path problem.

    If you have this:

    extern LPWSTR g_oalIoCtlPlatformName;

    that's fine. The problem is when you don't have "extern":

    LPWSTR g_oalIoCtlPlatformName;   // THIS *DEFINES* THE VARIABLE, AS IN "ALLOCATES MEMORY SPACE FOR IT*.

    Remember how C works. You *declare* something everywhere you need it (all callers of a function, all accessors of a variable, etc.), but *define* it exacly once. The linker is telling you that a Microsoft library already defines those items. Your *definitions* are duplicates. If I were trying to do a quick and dirty fix, rather than understand the problem, I'd search my OAL files, header and source, for "g_oalIoCtlPlatformName". Make sure anywhere that name is found it is *declared*, NOT *defined*. Repeat for the other multiply defined symbols indicated in the linker output.

    Paul T.

    Wednesday, October 10, 2012 11:17 PM
  • Paul,

    thanks for taking the time to clarify.

    I searched for g_oalIoCtlPlatformName and located it in ioctl.c in oallib folder and added the extern.

    what I am puzzled with is that, this error does not show up in vs2005 platform builder but only in vs2008 PB. weird.

    I am compiling now, keeping my fingers crossed.

    I wonder where else this is defined. i will keep looking if this build fails.

    thanks again!

    Thursday, October 11, 2012 3:33 PM