基于IMX515 EVK+WINCE6.0---soc目录移植BSP的SRC文件夹下

 

EVK安装包安装后会在\WINCE600\PLATFORM\COMMON\SRC\SOC下生成COMMON_FSL_V2和MX51_FSL_V2这两个文件夹,为了修改和编译方便,需要迁移到BSP\SRC\SOC目录下。

 

1.      COMMON_FSL_V2和MX51_FSL_V2目录的内容

COMMON_FSL_V2目录的代码对于所有飞思卡尔基于ARM的SOC是可重复使用的,也就是说,对于基于ARM的SOC,这部分代码都是适用的,比如IMX27、IMX35和IMX515等。

MX51_FSL_V2可适用于任何基于IMX515 EVK平台。

 

这两个目录的代码被编译为一系列的静态库,这些静态库最后和特定平台的库链接一起来创建系统的驱动。

 

2.      编译涉及环境变量及路径的修改

涉及修改的地方包括BSP所有大的目录,比如bootloader、KITL、common、drivers、OAL、SOC,其中修改最多的就是SOC和drivers,

 

BSP\sources.cmn文件比较重要,先来看相关部分:

_COMMONSOCNAME=common

_COMMONSOCVENDOR=fsl

_COMMONSOCLIBVERSION=v2

_COMMONSOCDIR=$(_COMMONSOCNAME)_$(_COMMONSOCVENDOR)_$(_COMMONSOCLIBVERSION)

由此可得_COMMONSOCDIR环境变量的值是COMMON_FSL_V2。

_SOCNAME=mx51

_SOCVENDOR=fsl

_SOCLIBVERSION=v2

_SOCDIR=$(_SOCNAME)_$(_SOCVENDOR)_$(_SOCLIBVERSION)

由此可得_SOCDIR环境变量的值是MX51_FSL_V2。

 

再来看INCLUDES后面包含的内容:

INCLUDES=$(_TARGETPLATROOT)\src\inc; \

        $(_PLATFORMROOT)\common\src\soc\$(_COMMONSOCDIR)\inc; \

        $(_PLATFORMROOT)\common\src\soc\$(_SOCDIR)\inc; \

        $(_PLATFORMROOT)\common\src\inc;

这里的_PLATFORMROOT指向F:\WINCE600\platform(我的WINCE6.0是安装在F盘的),因为我们把COMMON_FSL_V2和MX51_FSL_V2这两个文件夹迁移到BSP\SRC\SOC目录下,所以需要改为如下内容:

INCLUDES=$(_TARGETPLATROOT)\src\inc; \

        $(_TARGETPLATROOT)\src\soc\$(_COMMONSOCDIR)\inc; \

        $(_TARGETPLATROOT)\src\soc\$(_SOCDIR)\inc; \

        $(_PLATFORMROOT)\common\src\inc;

其中_TARGETPLATROOT环境变量的值为F:\WINCE600\platform\BSP(BSP代表BSP名称)

 

其他目录下的主要的修改归类如下:

 

2.1   Sources文件下面INCLUDES内容的修改

⑴由INCLUDES包含路径的修改,比如把SRC\BOOTLOADER\COMMON目录下sources文件INCLUDES下面的内容:

INCLUDES= \

 $(INCLUDES); \

 $(_PLATFORMROOT)\common\src\soc\$(_COMMONSOCDIR)\boot\fmd\sdmmc; \

改为:

INCLUDES= \

 $(INCLUDES); \

 $(_TARGETPLATROOT)\src\soc\$(_COMMONSOCDIR)\boot\fmd\sdmmc; \

 

⑵还有就是把INCLUDES下包含了本来不存在的文件夹内容去掉,比如把SRC\SOC\COMMON_FSL_V2\PMIC\MC13892\PDK\sources下面:

INCLUDES=\

   ..\..\inc; \    //去掉,因为不存在此inc文件夹

 

⑶ 重新指定正确的路径

编译SRC\SOC\COMMON_FSL_V2\BOOT的错误信息:

bootshell.c(28) : fatal error C1083:Cannot open include file: 'oal.h': No such file or directory

把SRC\SOC\COMMON_FSL_V2\BOOT\SHELL\sources下面的内容:

INCLUDES= \

 ..\..\..\inc; \

 ..\..\..\..\..\inc; \

改为:

INCLUDES= \

 ..\..\..\inc; \

 $(_PLATFORMROOT)\common\src\inc;\

 

2.2  Sources文件INCETARGETFILE0和WINCETARGETFILES下内容的修改

 

比如把SRC\SOC\COMMON_FSL_V2\ADC\PDK\sources下面的内容

WINCETARGETFILE0=$(_PLATCOMMONLIB)\$(_CPUINDPATH)\$(TARGETNAME).def

改为下面的内容:

WINCETARGETFILE0=$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\$(TARGETNAME).def

WINCETARGETFILE0用于告诉编译系统在编译当前路径下的源码文件之前,要先由Build.exe编译的非标准目标文件,比如,如果一个目标二进制文件(.res)需要拷贝到不同的位置,这个宏定义可以指定此文件的路径和文件名。

 

_TARGETPLATROOT在WINCE600\PUBLIC\COMMON\OAK\MISC\wince.bat定义,如下:
set _TARGETPLATROOT=%_PLATFORMROOT%\%_TGTPLAT%

_CPUDEPPATH在WINCE600\PUBLIC\COMMON\OAK\MISC\source.default定义,如下:
_CPUINDPATH=$(_TGTCPU)\$(WINCEDEBUG)

_CPUDEPPATH=$(_TGTCPU)\$(WINCEDEBUG)

这里的_TGTCPU值为ARMV4I,WINCEDEBUG如果工程为release则为retail

 

SRC\SOC\COMMON_FSL_V2\BACKLIGHT\CTLPNL

WINCETARGETFILES=$(_PLATCOMMONLIB)\$(_CPUINDPATH)\$(TARGETNAME).res

WINCETARGETFILES=$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\$(TARGETNAME).res

WINCETARGETFILES:用于告诉编译系统在链接当前路径下所有的目标文件之前,要先由Build.exe编译的目标文件。

 

2.3  重复定义

编译SRC\SOC\MX51_FSL_V2\CSPDDK\DDK_IOMUX\ soc_ddk_iomux.c

error C2371: 'CSP_IOMUX_REGS' :redefinition; different basic types

error C2371: 'PCSP_IOMUX_REGS' :redefinition; different basic types

修改CSPDDK \dirs的内容,不编译DDK_IOMUX文件件,因为我们CPU版本是TO2,但要编译DDK_IOMUX_TO2文件夹

你可能感兴趣的:(基于IMX515 EVK+WINCE6.0---soc目录移植BSP的SRC文件夹下)