展讯开发环境配置.docx

上传人:牧羊曲112 文档编号:1907272 上传时间:2022-12-25 格式:DOCX 页数:30 大小:290.30KB
返回 下载 相关 举报
展讯开发环境配置.docx_第1页
第1页 / 共30页
展讯开发环境配置.docx_第2页
第2页 / 共30页
展讯开发环境配置.docx_第3页
第3页 / 共30页
展讯开发环境配置.docx_第4页
第4页 / 共30页
展讯开发环境配置.docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《展讯开发环境配置.docx》由会员分享,可在线阅读,更多相关《展讯开发环境配置.docx(30页珍藏版)》请在三一办公上搜索。

1、Make/Build环境使用手册主标题:(默认)Arial,(中文)宋体,二号字体,加粗;段落:右对齐,右缩进为3.27字符,单倍行距副标题:(默认)Arial,(中文)宋体,四号字体,加粗;段落:右对齐,右缩进为3.27字符,单倍行距Version: 0.1.52009-10-21文字格式:(默认)Arial,(中文)宋体,四号字体;段落:右对齐,右缩进为3.27字符,单倍行距 修订历史版本日期作 者审 核说 明0.0.12007-12-11Daniel.LuoCreate0.022008-1-31Daniel.Luo增加客户发布及使用内容0.032009-03-10Mingjianliu基

2、于MOCOR_W09.11修改0.042009-03-31Mingjianliu增加多线程编译,Windows command 编译0.052009-04-09Mingjianliu删除Cygwin 相关所有信息0.062009-04-15Mingjianliu编译命令增加5.18 特别提醒,新建工程部分增加NV,Resource 部分的说明0.072009-04-20Mingjianliu根据评审结果修改0.082009-04-28Mingjianliu增加编译暂停说明;资源编译说明更新,增加编译出错的一个说明0.092009-05-06Mingjianliu增加对VC模拟器编译说明,提醒修

3、改工程0.102009-05-30MingjianliuResource,NV 说明更新0.112009-07-08Mingjianliu增加通过复制方式创建新工程说明;增加 source Insight 与CC集成说明;增加全局变量和转义宏的实现区分;增加第三方编译选项说明;更新多套资源编译说明0.122009-08-19Mingjianliu1.第三方逻辑部分独立成一个文件Makefile.third-partyMakefile.third-party 2 编译APP 需要调用toolsDEBUG_TOOLBMP2Array 工具3. 增加分布式编译说明.4.鼠标右键增加命令行快捷方式说明

4、5. DOS下输入命令时用Tab键进行命令自动填充6增加动态生成模拟器部分说明0.132009-08-31Mingjianliu更新 3.2 统一编译部分关于:makefile宏赋制值的特别说明0.142009-09-24Mingjianliu更新复制方式创建项目编译脚本 部分:大工程中增加 PRODUCT_BASELIB_DIR变量 及使用说明; MS_Customize/source/product/config 驱动部分根据工程名字自适应 ;7.2.4 项目修改编译选项注意事项更新;更新NV编译选项说明;增加3.5 编译命令最大长度 8K限制0.152009-10-21Mingjianl

5、iuIn分布式编译,路径不能有括号,担搁括号也不可以.重要声明版权声明本文档中的任何内容受中华人民共和国著作权法的保护,版权所有 2006, 展讯通信有限公司,保留所有权利,但注明引用其他方的内容除外。商标声明本文档中展讯通信有限公司的产品的所有商标是展讯通信有限公司专有,但注明属于其他公司拥有的商标除外。在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。不作保证声明 展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。保密声明本文档(包括任何附件)包含的信息是保密信息。接收

6、人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。目 录1说明62运行环境72.1编译环境及安装相关软件73编译架构84目录结构及关键脚本114.1make/build环境的关键目录结构114.2关键脚本124.2.1Makefile.rules124.2.2Makefile.modules134.2.3Makefile.third-party134.2.4Makefile.verify134.2.5Makefile134.2.6make.bat135基本命令145.1帮助145.2编译参数中 projectname 与项目编译脚本对应关系145

7、.3编译整个项目update145.4重新编译整个项目new155.5清除所有编译结果cleanall155.6清除模块编译结果155.7编译模块155.8生成可执行文件155.9编译FDL/bootloader155.10编译NV155.11编译Resource165.12编译手机模拟器工程176其它命令206.1编译Logel工具206.2pclint 扫描206.3编译完成net send提醒功能206.4编译命令的简写206.5多线程编译206.6分布式编译216.7编译出错暂停216.8特别提醒217模块修改及项目定制227.1模块修改227.1.1模块目录结构调整227.1.2添加

8、或删除文件227.1.3修改编译选项227.1.4新增模块237.2项目定制237.2.1创建全新的项目编译脚本237.2.2复制方式创建项目编译脚本237.2.3添加或删除模块247.2.4修改项目编译选项247.2.5客户发布及使用258第三方编译选项说明269相关使用技巧279.1查看log文件279.2makefile 编译过程中报错: No rule to make target XXX , needed by yyy.279.3Makefile 中全局变量和转义宏的区分279.4Source Insight和ClearCase配置279.5鼠标右键命令行快捷方式设置309.6DOS

9、下输入命令时用Tab键进行命令自动填充301 说明Make/Build环境中实现了项目开发和维护使用的GNU标准应用脚本,基于这些应用脚本和相关make工具,Make/Build环境可以完成项目全部代码的编译和二进制文件的生成,对其他一些需要的文件也可以在Make/Build环境中通过编译的方式产生,如fdl,bootloader, nv_parameter,resource等。Make/Build的相关操作命令需要在Windows Command环境下进行,因为每个大工程编译出来的临时文件都独立存放,所以可以通过开启多个Command窗口对多个不同的项目进行同时build。2 运行环境2.1

10、 编译环境及安装相关软件操作系统: 建议 Windows2000 或 windows XPADS(ARM Developer Suit V1.2) 注意需要安装 848 的patch,查看方法见下图:Microsoft Excel 2000 或者 Microsoft Excel 2003 或者 WPS 2005及以上版本(用于编译资源):Microsoft Visual C+ 6.0 需要安装sp6补丁(用于编译模拟器)保证源代码文件中的make 配置文件 Makefile.rules 中各项配置均正确 3 编译架构对一个项目的所有模块和要使用的一些工具,目前是采用两种方式编译。1独立的mak

11、efile编译目前采用独立的makefile编译的模块有: l fdl1l fdl2l bootloaderl nv_parameterl resourcel logell winsimulatorl pclint这些模块或功能,对应的 make/module_name/module_name.mk 本身已经是一个完整的makefile文件,直接调用就可以了。目前实现方式是在 大的工程文件中,将这些模块的列表对INDEPENDENT 赋值,指示这些模块需要单独编译。采用独立编译的的另外一个特点是他们一般不参与大工程的link,往往只是一些辅助工具。# independent compile I

12、NDEPENDENT=nor_fdllogel winsimulator_lib winsimulator_r_nor resource如果项目有新的模块或工具需要独立编译,可以实现makefile 并将他们的名字添加到INDEPENDENT 的列表总即可。编译方式为 :make PROJECT=projectname MODULES=bootloader注意: 独立编译的模块,通过这种方式调用只能执行默认的最终目标。 2 统一方式编译绝大部分的模块都是通过这种编译方式来完成编译的。这种编译方式使用一致的依赖关系生成方法,统一控制编译的行为。对应的 make/module_name/modul

13、e_name.mk 文件并不是一个完整的makefile 文件,一般其中只包含编译需要的宏列表,文件列表,搜索文件路径 即可。其他都由框架自动完成。在您的项目需要添加模块时,推荐您使用这种方式。每个大工程在编译的时候,会自动将Feature Options 部分转义成真正的代码中使用的宏传给相应的子模块,在对子模块代码编译的时候,自动附加上这些宏。转义的规则如下:1对 开关型的 Feature Options ,当Feature Options 为TRUE 时转义,为FALSE时不转义export NANDBOOT_SUPPORT = TRUE # Boot From Nandflash Su

14、pport: # Option1:TRUE # Option2:FALSE 对上面的定义也就是 转义一个宏 -DNANDBOOT_SUPPORT. 2. 对 列表型的 Feature Options ,将 Feature Options 的名字和值拼接起来转义成一个宏,同时对非NONE 的值,同时转义一个Feature Options 名字的宏。 export SUBLCD_SIZE = 96X64 # Resolution Of Main LCD # Option1:NONE #define SUBLCD_SIZE_NONE# Option2:96X64 #define SUBLCD_SIZ

15、E_96X64 对上面的定义也就是 转义一个宏 -DSUBLCD_SIZE_96X64 -DSUBLCD_SIZE转义的宏临时文件存放在如下位置,每次编译的时候该文件会自动更新.MS_Codebuildprojectname_builddirtmpprojectname_public_macro.txtMS_Codebuildprojectnam _builddirtmpprojectname_public_macro_s.txt特别注意:1Feature Options 的书写请严格按照上述的示例书写,当对工程中Feature Options转义的时候,对符合下面模板的行都会转义。expor

16、t NANDBOOT_SUPPORT = TRUE #示例如下: 大工程 project_rocky_3201.mk中有如下片段 代码中可以这样使用:2Feature Options 只能出现在大工程中,在子make中定义和赋值都是无效的,并且会导致编译结果不正确;3Feature Options 只接受直接赋值,不能包含在条件语句中;4Feature Options 只能赋值一次。3 编译的依赖关系在统一方式编译下,系统会自动生成依赖关系文件,这些依赖关系文件存放在MS_Codebuildprojectname_builddirdep 下。 注意: 1 makefile中的配置文件 Make

17、file.rules 没有作为依赖,所以其内容改变时,用update参数编译时将不自动编译相应文件.2 对编译后生成的 .a 文件及其相应的依赖文件,这些文件默认都有固定的存放位置,没有特别需求,请不要改变,否则有可能造成编译依赖错误,导致出现一些问题.4 Debug 版本和Release版本 SPRD MOCOR平台Debug 版本和Release版本的控制是通过在大makefile工程中对宏RELEASE_INFO 赋不同值来实现的。默认情况下这个RELEASE_INFO的值为FALSE, 即 Debug 版本。Debug 版本: RELEASE_INFO=FALSE用这个配置编译出来的所

18、有文件都是Debug版本的,包括bin文件,NV,等Release版本: RELEASE_INFO=TRUE 用这个配置编译出来的所有文件都是Release版本的,包括bin文件,NV,等.5 编译命令最大长度 8K限制注意:Windows 环境最大只支持8K长度的命令,所以请控制宏的数量,搜索目录的数量,防止命令行超长而无法编译.4 目录结构及关键脚本4.1 make/build环境的关键目录结构MS_Code build编译结果的输出总目录 rocky _3201_builddir和具体项目名称对应,自动生成的输出目录 dep编译依赖文件存放目录 img编译最终结果存放目录,包括arm b

19、in,fdl,bootloader, resource,nv等 lib客户编译模块.a存放目录 log编译log文件目录,包括编译出错信息、告警信息等 nv编译生成的nv_parameter文件目录 fdl_bootloader编译生成的fdl bootloader文件目录 res编译生成的resource文件目录 pclint编译生成的pclint文件目录 tmp编译生成的临时文件目录 obj模块目标文件存放目录 win自动生成模拟器工程存放目录 rocky_6901_builddir chip_drv MS_Ref PS atc common nv_parameters统一NV proje

20、ct存放目录 source目标统一main.c存放目录 make依据编译选项文件,makefile将自动搜寻该目录并循环| 对模块进行编译 aac aac.mk对应模块的编译脚本 | | MS_Customize config custom product区分不同产品驱动配置文件version目标统一版本version.cMS_MMI Third-party从MS_APP下link过来保持目录结构 bt_csr include lib lib展讯开放库文件目录存放地和build目录分开 fdl_bootloaderfdl bootloader 存放目录make/build环境的关键目录如上图所

21、示,所有相关代码和脚本都统一集中在MS_Code目录下,下面将对特殊的目录做些详细的说明:1) build目录 bulild目录及其下的相关内容在程序编译过程中自动生成,对于特定的项目,build目录会生成projectname_builddir目录,并在该目录下自动生成dep、img、lib、log、nv、tmp及obj等目录。2) make目录make目录存放和模块对应的编译脚本,子目录和模块呈一一对应关系,各个子目录中存放着和目录名称对应的脚本文件。一旦有了新添的模块源文件或删减,相关脚本需要进行修改。同样,如果有了新增的模块,则需要在make目录下建立新的模块子目录。相关过程在后面会有

22、更详尽的描述。3) MS_Customize目录和项目相关的scatter file文件存放在MS_Customize目录中,需要注意该文件名称需要和项目名称保持一致。4) version目录version目录中存放项目相关的version.c文件,目前需要注意该文件名称需要和项目名称保持一致。4.2 关键脚本在MS_Code目录下存放有Makefile.rules、Makefile.modules、Makefile以及项目的相关make脚本,即项目编译脚本,比如project_rocky_3201.mk等等,同时在make目录的各个子目录下存放有各个模块的make脚本,即模块编译脚本,比如a

23、ac.mk、app.mk等等。一般情况下开发人员仅维护项目编译脚本即可, Makefile.rules、Makefile.modules和Makefile不需要修改。针对模块和项目的变化,开发人员需要修改模块编译脚本和增加新的项目编译脚本。下面将针对Makefile.rules、Makefile.modules和Makefile进行简单的说明,关于模块编译脚本和项目编译脚本将在后面的章节中详细描述。4.2.1 Makefile.rulesMakefile.rules中定义了绝大部分平台无关、模块无关以及项目无关的公共变量,其中包括编译器的指定、公共编译参数的定义、文件复制、删除、目录创建等系统

24、命令、公共头文件路径、SPRD库路径以及第三方库文件路径等变量的定义。这些需要指出的是语句:ARM_HOME =C:/Program Files/ARM/ADSv1_2ARMCC =$(ARM_HOME)/Bin/armccCC =$(ARM_HOME)/Bin/tccCPP =$(ARM_HOME)/Bin/tcppASM =$(ARM_HOME)/Bin/armasmLINK =$(ARM_HOME)/Bin/armlinkAR =$(ARM_HOME)/Bin/armarFROMELF =$(ARM_HOME)/Bin/fromelfARMINC =$(ARM_HOME)/Include

25、请根据您的机器上的软件安装情况修改这些设置。另外,在Makefile.rules中定义了编译器公共编译选项CFLAGS ,CFLAGS 的定义如下:CFLAGS = $(DEFINES) $(OPTFLAGS) $(WARNFLAGS) $(DEBUGFLAGS)即CFLAGS是由:DEFINES、OPTFLAGS、WARNFLAGS及DEBUGFLAG这四个变量组合而成,其定义分别如下:DEFINES = OPTFLAGS = -O1 -bi -g+ -apcs /interwork/swst -fy -D_RTOS -D_DEBUG -EcWARNFLAGS = -WallDEBUGFLA

26、GS =组合后的编译选项构成了各个模块编译器选项的公共部分,如果有特殊需要(比如过滤特定的告警信息),则可以修改相关选项。如果有模块需要扩充编译选项,则可以在模块自己的模块编译选择项中进行添加,这样也不会影响到其它模块。除此之外,该文件一般不需要维护。4.2.2 Makefile.modulesMakefile.modules定义了make/bulid系统中的目标依赖关系,一般开发中不需要维护该文件,这里需要指出的是:目前有部分模块采用了armcc编译器(比如:mpeg4_codec),对于这部分模块需要在Makefile.modules中申明,具体操作可以参考该文件中已经被申明的相关模块部分

27、。4.2.3 Makefile.third-partyMakefile.third-party 将第三方逻辑独立成一个文件,便于维护,这个文件会 被 include 到各工程.mk 中.4.2.4 Makefile.verifyMakefile.verify 对makefile中的宏的父子关系进行校验,防止出错.4.2.5 MakefileMakefile是最上层的总控脚本,该脚本直接处理用户的命令,并执行相关的处理,在没有特殊需要的情况下用户不需要维护该文件。4.2.6 make.batmakefile的外壳文件,请不要直接运行,主要用来对make附加一些额外的参数.5 基本命令make/b

28、uild的所有操作命令都要在Windows Command 下执行,并且需要在关键脚本的当前路径,即MS_Code目录下完成输入。示例如下:5.1 帮助在MS_Code目录下输入make help可以获得相关的帮助信息,这些相关信息内容可以从下面对于小节中获取更详细的内容,这里不再重复。5.2 编译参数中 projectname 与项目编译脚本对应关系在编译项目时,会使用类似make PROJECT=projectname 命令,这里projectname必须和项目编译脚本的名称保持一定的对应关系,否则系统会报:Project defined Makefile project_projectn

29、ame.mk is not exist!这样的错误。如项目编译脚本文件名为 project_rocky_3201.mk,则projectname的内容为rocky_3201,因此我们可以执行如下的命令来实现编译 make PROJECT= rocky_32015.3 编译整个项目update在MS_Code目录下输入make PROJECT=projectname 或 make PROJECT=projectname update 命令,makefile根据已有的依赖关系编译因修改涉及到的相关的模块并在没有错误出现的情况下完成最终的链接,若不存在依赖关系,makefile 会在编译文件时自动生

30、成依赖关系。因为只编译较少的模块文件,可以节省编译时间。这个命令也会将 fdl,bootloader,NV 同时编译出来。5.4 重新编译整个项目new在MS_Code目录下输入make PROJECT=projectname new,该命令将清除编译过程中生成的全部目标码和库文件,然后对projectname所指定的项目进行整体编译并在没有错误出现的情况下完成最终的链接,编译过程中会自动生成依赖关系。会这一命令适合在项目进行了较大修改:比如公共头文件数据结构发生变化、公共接口参数发生变化、文件更新中时间戳混乱或makefile相关脚本被修改等等情况下建议使用这一命令,确保重新对项目进行完全编

31、译得到正确的输出结果。这个命令也会将 fdl,bootloader,NV ,Resource同时编译出来。该命令相当于运行如下3个命令make PROJECT=projectname cleanallmake PROJECT=projectname MODULES=resourcemake PROJECT=projectname update5.5 清除所有编译结果cleanall在MS_Code目录下输入make PROJECT=projectname cleanall,该命令将清除编译过程中生成的全部目标码和库文件。5.6 清除模块编译结果在MS_Code目录下输入make PROJECT

32、=projectname MODULES=”module1 module2 ” clean,该命令将清除指定模块的编译输出结果,其中包含指定模块的目标文件和库文件。该命令适合在指定模块内部出现重大修改或者模块本身makefile脚本被修改,在进行模块编译前使用。5.7 编译模块在MS_Code目录下输入make PROJECT=projectname MODULES=”module1 module2 ” update,该命令将对指定模块进行编译,但不会编译完成后进行自动链接。该命令属于模块开发人员最常用的命令,在具体模块开发中需要经常使用该命令来验证模块的编译完整性。5.8 生成可执行文件在M

33、S_Code目录下输入make PROJECT=projectname image可以进行链接生成相关的可执行文件,该命令可以在模块修改并编译完成后进行,也适合第三方库文件更新后进行。5.9 编译FDL/bootloader在MS_Code目录下输入make PROJECT=projectname MODULES=bootloader 对bootloader编译在MS_Code目录下输入make PROJECT=projectname MODULES=fdl1 对fdl1进行编译。在MS_Code目录下输入make PROJECT=projectname MODULES=fdl2 对fdl2进

34、行编译。在MS_Code目录下输入make PROJECT=projectname MODULES=nor_fdl 对nor_fdl 进行编译。输出结果位置: build/projectname_builddir/fdl_bootloader.同时会自动将最终的bin文件copy 到build/projectname_builddir/img 下,方便下载到手机中。当然,您也可以根据工程具体情况用一条命令编译出所有目标,示例如下:make PROJECT=rocky_6901 MODULES=fdl1 fdl2 bootloadermake PROJECT=rocky_3201 MODULES

35、=nor_fdl5.10 编译NV在MS_Code目录下输入make PROJECT=projectname MODULES= nv_parameter 对nv_parameter编译输出结果位置: build/projectname_builddir/nvm。同时会自动将最终的bin文件copy 到build/projectname_builddir/img 下,方便下载到手机中。注意:1. 当 大工程中的 RELEASE_INFO 的值为 TRUE 时编译出来的 NV 自动为 Release 版本的NV2. 大工程中的 RELEASE_INFO 的值为 FALSE 时编译出来的 NV 自动

36、为 Debug 版本的NV3. 平台发布的代码中没有NV prj,即此时是无法使用NVEditor打开,需要使用make指令编译后才会生成。4.请注意 make/nv_parameter/nv_parameter.mk,这个文件中定义了NV 的配置信息,请确定是否满足项目的需要。5请注意 make/nv_parameter/config_info.nv文件,这个文件里的配置项,根据里面的判断条件,如果成立会覆盖到make生成的nv中。这里比较关系大的是,如果是release版本,据此会自动配置一些nv项目。所以客户正式出货的版本一定是用make生成,而不建议用nveditor生成,以防漏配置。

37、6如果希望修改某项参数,例如希望修改nv_type.nvm某项,应该在使用make指令编译出NV后,使用NVEDITOR打开,修改后保存,此时修改后的nvm文件保存在build目录下,此时应该将此文件拷贝回common/nv_parameters目录。否则修改的文件经过重新编译后,会被冲掉。5.11 编译Resource在MS_Code目录下输入make PROJECT=projectname MODULES= resource 对Resource编译对一个工程来说,资源定义在大工程文件中,分两部分export MAINLCD_SIZE = 240X320 # Resolution Of Ma

38、in LCD: # Option1:240X320 #define MAINLCD_SIZE_240X320 # Option2:240X400 #define MAINLCD_SIZE_240X400export MMI_RES_DIR = mmi_res_240x320 # resource directory # Option1:mmi_res_240x320 # Option2:mmi_res_240x400MAINLCD_SIZE 用来说明资源对应的 LCD 分辨率,MMI_RES_DIR 指定对应的资源的文件夹位置。这里增加了一个变量 MMI_RES_DIR的目的是某些情况下,同一

39、分辨率对应的资源有可能有多套。另一个与资源相关的变量是 SPECIAL_EFFECT_ICON_SIZE,这个文件与工程 app 模块相关,也请一并修改export SPECIAL_EFFECT_ICON_SIZE = 60X60 # Wide x Height of special effect icon # Option1:60X60 if MAINLCD_SIZE = 240X320 or 240X400 # Option2:45X40 if MAINLCD_SIZE = 176X220输出结果位置: build/projectname_builddir/res。同时会自动将最终的bin

40、文件copy 到build/projectname_builddir/img 下,方便下载到手机中。默认情况下编译Resource 使用了 大工程中的Feature Options 转义的宏 和 app.mk 模块中的宏,如果您的项目资源编译需要使用其他的模块的宏,请修改resource.mk文件。资源编译时产生的一些细节log信息记录在build/projectname_builddir/res 下的一些以资源名为前缀的.txt 文件中.如对mmi_res_240x320 资源,log文件名如下:mmi_res_240x320_font.txtmmi_res_240x320_imag.txt

41、mmi_res_240x320_ring.txt注意:1) 如果一个大工程需要更换不用的资源,修改 MAINLCD_SIZE 与 MMI_RES_DIR 的值即可.因为资源与Code 相关性,还要注意修改 SPECIAL_EFFECT_ICON_SIZE 的值2) 用 Nand makefile 工程编译出来的模拟器资源文件,匹配VC的 nand 模拟器工程用 Nor makefile 工程编译出来的模拟器资源文件,匹配VC的 Nor 模拟器工程3) 请不要对几个工程同时编译资源,程序并发有可能会导致某些工程资源编译出错!4) 尽量保持VC的模拟器工程与makefile工程的宏的使用一致。5) 编译 Resource 与 APP 模块时,都要调用Tools 里的一些工具,如BMP2Array等,请尽量保持工具的完整性.5.12 编译手机模拟器工程原方式 :编译 MS_CodeM

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号