展讯开发环境配置文档格式.docx
- 文档编号:19509421
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:32
- 大小:195.39KB
展讯开发环境配置文档格式.docx
《展讯开发环境配置文档格式.docx》由会员分享,可在线阅读,更多相关《展讯开发环境配置文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
编译命令增加5.18专门提醒,新建工程部分增加NV,Resource部分的说明
0.07
2009-04-20
依照评审结果修改
0.08
2009-04-28
增加编译暂停说明;
资源编译说明更新,增加编译出错的一个说明
0.09
2009-05-06
增加对VC模拟器编译说明,提醒修改工程
0.10
2009-05-30
Resource,NV说明更新
0.11
2009-07-08
增加通过复制方式创建新工程说明;
增加sourceInsight与CC集成说明;
增加全局变量和转义宏的实现区分;
增加第三方编译选项说明;
更新多套资源编译说明
0.12
2009-08-19
1.第三方逻辑部分独立成一个文件Makefile.third-partyMakefile.third-party2编译APP需要调用tools\DEBUG_TOOL\BMP2Array工具3.增加分布式编译说明.4.鼠标右键增加命令行快捷方式说明5.DOS下输入命令时用Tab键进行命令自动填充
6.增加动态生成模拟器部分说明
0.13
2009-08-31
更新3.2统一编译部分关于:
makefile宏赋制值的专门说明
0.14
2009-09-24
更新复制方式创建项目编译脚本部分:
大工程中增加PRODUCT_BASELIB_DIR变量及使用说明;
MS_Customize/source/product/config驱动部分依照工程名字自适应;
7.2.4项目修改编译选项本卷须知更新;
更新NV编译选项说明;
增加3.5编译命令最大长度8K限制
0.15
2009-10-21
In分布式编译,路径不能有括号,担搁括号也不能够.
重要声明
版权声明
本文档中的任何内容受«
中华人民共和国著作权法»
的爱护,版权所有©
2006,展讯通信,保留所有权益,但注明引用其他方的内容除外。
商标声明
本文档中展讯通信的产品的所有商标是展讯通信专有,但注明属于其他公司拥有的商标除外。
在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。
不作保证声明
展讯通信不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、专门或连带的缺失承担任何责任。
保密声明
本文档〔包括任何附件〕包含的信息是保密信息。
接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。
1说明
Make/Build环境中实现了项目开发和爱护使用的GNU标准应用脚本,基于这些应用脚本和相关make工具,Make/Build环境能够完成项目全部代码的编译和二进制文件的生成,对其他一些需要的文件也能够在Make/Build环境中通过编译的方式产生,如fdl,bootloader,nv_parameter,resource等。
Make/Build的相关操作命令需要在WindowsCommand环境下进行,因为每个大工程编译出来的临时文件都独立存放,因此能够通过开启多个Command窗口对多个不同的项目进行同时build。
2运行环境
2.1编译环境及安装相关软件
操作系统:
建议Windows2000或windowsXP
ADS〔ARMDeveloperSuitV1.2〕
注意需要安装848的patch,查看方法见以下图:
MicrosoftExcel2000或者MicrosoftExcel2003或者WPS2005及以上版本(用于编译资源):
MicrosoftVisualC++6.0需要安装sp6补丁〔用于编译模拟器〕
保证源代码文件中的make配置文件Makefile.rules中各项配置均正确
3编译架构
对一个项目的所有模块和要使用的一些工具,目前是采纳两种方式编译。
1.独立的makefile编译
目前采纳独立的makefile编译的模块有:
●fdl1
●fdl2
●bootloader
●nv_parameter
●resource
●logel
●winsimulator
●pclint
这些模块或功能,对应的make/module_name/module_name.mk本身差不多是一个完整的makefile文件,直截了当调用就能够了。
目前实现方式是在大的工程文件中,将这些模块的列表对INDEPENDENT赋值,指示这些模块需要单独编译。
采纳独立编译的的另外一个特点是他们一样不参与大工程的link,往往只是一些辅助工具。
#independentcompile
INDEPENDENT=nor_fdllogelwinsimulator_libwinsimulator_r_norresource
假如项目有新的模块或工具需要独立编译,能够实现makefile并将他们的名字添加到INDEPENDENT的列表总即可。
编译方式为:
makePROJECT=projectnameMODULES=bootloader
注意:
独立编译的模块,通过这种方式调用只能执行默认的最终目标。
2.统一方式编译
绝大部分的模块差不多上通过这种编译方式来完成编译的。
这种编译方式使用一致的依靠关系生成方法,统一操纵编译的行为。
对应的make/module_name/module_name.mk文件并不是一个完整的makefile文件,一样其中只包含编译需要的宏列表,文件列表,搜索文件路径即可。
其他都由框架自动完成。
在您的项目需要添加模块时,举荐您使用这种方式。
每个大工程在编译的时候,会自动将FeatureOptions部分转义成真正的代码中使用的宏传给相应的子模块,在对子模块代码编译的时候,自动附加上这些宏。
转义的规那么如下:
1.对开关型的FeatureOptions,当FeatureOptions为TRUE时转义,为FALSE时不转义
exportNANDBOOT_SUPPORT=TRUE###BootFromNandflashSupport:
#Option1:
TRUE
#Option2:
FALSE
对上面的定义也确实是转义一个宏-DNANDBOOT_SUPPORT.
2.对列表型的FeatureOptions,将FeatureOptions的名字和值拼接起来转义成一个宏,同时对非NONE的值,同时转义一个FeatureOptions名字的宏。
exportSUBLCD_SIZE=96X64###ResolutionOfMainLCD
#Option1:
NONE#defineSUBLCD_SIZE_NONE
#Option2:
96X64#defineSUBLCD_SIZE_96X64
对上面的定义也确实是转义一个宏-DSUBLCD_SIZE_96X64-DSUBLCD_SIZE
转义的宏临时文件存放在如下位置,每次编译的时候该文件会自动更新.
MS_Code\build\projectname_builddir\tmp\projectname_public_macro.txt
MS_Code\build\projectnam_builddir\tmp\projectname_public_macro_s.txt
专门注意:
1.FeatureOptions的书写请严格按照上述的例如书写,当对工程中FeatureOptions转义的时候,对符合下面模板的行都会转义。
exportNANDBOOT_SUPPORT=TRUE###
例如如下:
大工程project_rocky_3201.mk中有如下片段
代码中能够如此使用:
2.FeatureOptions只能显现在大工程中,在子make中定义和赋值差不多上无效的,同时会导致编译结果不正确;
3.FeatureOptions只同意直截了当赋值,不能包含在条件语句中;
4.FeatureOptions只能赋值一次。
3.编译的依靠关系
在统一方式编译下,系统会自动生成依靠关系文件,这些依靠关系文件存放在MS_Code\build\projectname_builddir\dep下。
注意:
1.makefile中的配置文件Makefile.rules没有作为依靠,因此其内容改变时,用update参数编译时将不自动编译相应文件.
2.对编译后生成的.a文件及其相应的依靠文件,这些文件默认都有固定的存放位置,没有专门需求,请不要改变,否那么有可能造成编译依靠错误,导致显现一些问题.
4.Debug版本和Release版本
SPRDMOCOR平台Debug版本和Release版本的操纵是通过在大makefile工程中对宏RELEASE_INFO赋不同值来实现的。
默认情形下那个RELEASE_INFO的值为FALSE,即Debug版本。
Debug版本:
RELEASE_INFO=FALSE
用那个配置编译出来的所有文件差不多上Debug版本的,包括bin文件,NV,等
Release版本:
◎RELEASE_INFO=TRUE
用那个配置编译出来的所有文件差不多上Release版本的,包括bin文件,NV,等.
5.编译命令最大长度8K限制
Windows环境最大只支持8K长度的命令,因此请操纵宏的数量,搜索名目的数量,防止命令行超长而无法编译.
4名目结构及关键脚本
4.1make/build环境的关键名目结构
└─MS_Code
├─build编译结果的输出总名目
│├─rocky_3201_builddir和具体项目名称对应,自动生成的输出名目
││├─dep编译依靠文件存放名目
││├─img编译最终结果存放名目,包括armbin,fdl,bootloader,
│││resource,nv等
││├─lib客户编译模块.a存放名目
││├─log编译log文件名目,包括编译出错信息、告警信息等
││├─nv编译生成的nv_parameter文件名目
││├─fdl_bootloader编译生成的fdlbootloader文件名目
││├─res编译生成的resource文件名目
││├─pclint编译生成的pclint文件名目
││├─tmp编译生成的临时文件名目
││└─obj模块目标文件存放名目
││└─win自动生成模拟器工程存放名目
│└─rocky_6901_builddir
├─chip_drv
├─MS_Ref
├─PS
├─atc
├─common
│├─nv_parameters统一NVproject存放名目
│└─source目标统一main.c存放名目
├─make依据编译选项文件,makefile将自动搜寻该名目并循环|对模块进行编译
│└─aac
│└─aac.mk对应模块的编译脚本
|…
|
├─MS_Customize
│├─config
│├─custom
│└─product区分不同产品驱动配置文件
├─version目标统一版本version.c
├─MS_MMI
├─Third-party从MS_APP下link过来保持名目结构
│└─bt_csr
│├─include
│└─lib
├─lib展讯开放库文件名目存放地和build名目分开
├─fdl_bootloaderfdlbootloader存放名目
make/build环境的关键名目如上图所示,所有相关代码和脚本都统一集中在MS_Code名目下,下面将对专门的名目做些详细的说明:
1)build名目
✧bulild名目及其下的相关内容在程序编译过程中自动生成,关于特定的项目,build名目会生成projectname_builddir名目,并在该名目下自动生成dep、img、lib、log、nv、tmp及obj等名目。
2)make名目
make名目存放和模块对应的编译脚本,子名目和模块呈一一对应关系,各个子名目中存放着和名目名称对应的脚本文件。
一旦有了新添的模块源文件或删减,相关脚本需要进行修改。
同样,假如有了新增的模块,那么需要在make名目下建立新的模块子名目。
相关过程在后面会有更详尽的描述。
3)MS_Customize名目
和项目相关的scatterfile文件存放在MS_Customize名目中,需要注意该文件名称需要和项目名称保持一致。
4)version名目
version名目中存放项目相关的version.c文件,目前需要注意该文件名称需要和项目名称保持一致。
4.2关键脚本
在MS_Code名目下存放有Makefile.rules、Makefile.modules、Makefile以及项目的相关make脚本,即项目编译脚本,比如project_rocky_3201.mk等等,同时在make名目的各个子名目下存放有各个模块的make脚本,即模块编译脚本,比如aac.mk、app.mk等等。
一样情形下开发人员仅爱护项目编译脚本即可,Makefile.rules、Makefile.modules和Makefile不需要修改。
针对模块和项目的变化,开发人员需要修改模块编译脚本和增加新的项目编译脚本。
下面将针对Makefile.rules、Makefile.modules和Makefile进行简单的说明,关于模块编译脚本和项目编译脚本将在后面的章节中详细描述。
4.2.1Makefile.rules
Makefile.rules中定义了绝大部分平台无关、模块无关以及项目无关的公共变量,其中包括编译器的指定、公共编译参数的定义、文件复制、删除、名目创建等系统命令、公共头文件路径、SPRD库路径以及第三方库文件路径等变量的定义。
这些需要指出的是语句:
ARM_HOME=C:
/ProgramFiles/ARM/ADSv1_2
ARMCC="
$(ARM_HOME)/Bin/armcc"
CC="
$(ARM_HOME)/Bin/tcc"
CPP="
$(ARM_HOME)/Bin/tcpp"
ASM="
$(ARM_HOME)/Bin/armasm"
LINK="
$(ARM_HOME)/Bin/armlink"
AR="
$(ARM_HOME)/Bin/armar"
FROMELF="
$(ARM_HOME)/Bin/fromelf"
ARMINC="
$(ARM_HOME)/Include"
请依照您的机器上的软件安装情形修改这些设置。
另外,在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-Ec
WARNFLAGS=-Wall
DEBUGFLAGS=
组合后的编译选项构成了各个模块编译器选项的公共部分,假如有专门需要〔比如过滤特定的告警信息〕,那么能够修改相关选项。
假如有模块需要扩充编译选项,那么能够在模块自己的模块编译选择项中进行添加,如此也可不能阻碍到其它模块。
除此之外,该文件一样不需要爱护。
4.2.2Makefile.modules
Makefile.modules定义了make/bulid系统中的目标依靠关系,一样开发中不需要爱护该文件,那个地点需要指出的是:
目前有部分模块采纳了armcc编译器〔比如:
mpeg4_codec〕,关于这部分模块需要在Makefile.modules中申明,具体操作能够参考该文件中差不多被申明的相关模块部分。
4.2.3Makefile.third-party
Makefile.third-party将第三方逻辑独立成一个文件,便于爱护,那个文件会被include到各工程.mk中.
4.2.4Makefile.verify
Makefile.verify对makefile中的宏的父子关系进行校验,防止出错.
4.2.5Makefile
Makefile是最上层的总控脚本,该脚本直截了当处理用户的命令,并执行相关的处理,在没有专门需要的情形下用户不需要爱护该文件。
4.2.6make.bat
makefile的外壳文件,请不要直截了当运行,要紧用来对make附加一些额外的参数.
5差不多命令
make/build的所有操作命令都要在WindowsCommand下执行,同时需要在关键脚本的当前路径,即MS_Code名目下完成输入。
例如如下:
→
5.1关心
在MS_Code名目下输入makehelp能够获得相关的关心信息,这些相关信息内容能够从下面关于小节中猎取更详细的内容,那个地点不再重复。
5.2编译参数中projectname与项目编译脚本对应关系
在编译项目时,会使用类似makePROJECT=projectname命令,那个地点projectname必须和项目编译脚本的名称保持一定的对应关系,否那么系统会报:
ProjectdefinedMakefileproject_projectname.mkisnotexist!
如此的错误。
如项目编译脚本文件名为project_rocky_3201.mk,那么projectname的内容为rocky_3201,因此我们能够执行如下的命令来实现编译
makePROJECT=rocky_3201
5.3编译整个项目[update]
在MS_Code名目下输入makePROJECT=projectname或makePROJECT=projectnameupdate命令,makefile依照已有的依靠关系编译因修改涉及到的相关的模块并在没有错误显现的情形下完成最终的链接,假设不存在依靠关系,makefile会在编译文件时自动生成依靠关系。
因为只编译较少的模块文件,能够节约编译时刻。
那个命令也会将fdl,bootloader,NV同时编译出来。
5.4重新编译整个项目[new]
在MS_Code名目下输入makePROJECT=projectnamenew,该命令将清除编译过程中生成的全部目标码和库文件,然后对projectname所指定的项目进行整体编译并在没有错误显现的情形下完成最终的链接,编译过程中会自动生成依靠关系。
会这一命令适合在项目进行了较大修改:
比如公共头文件数据结构发生变化、公共接口参数发生变化、文件更新中时刻戳纷乱或makefile相关脚本被修改等等情形下建议使用这一命令,确保重新对项目进行完全编译得到正确的输出结果。
那个命令也会将fdl,bootloader,NV,Resource同时编译出来。
该命令相当于运行如下3个命令
makePROJECT=projectnamecleanall
makePROJECT=projectnameMODULES=resource
makePROJECT=projectnameupdate
5.5清除所有编译结果[cleanall]
在MS_Code名目下输入makePROJECT=projectnamecleanall,该命令将清除编译过程中生成的全部目标码和库文件。
5.6清除模块编译结果
在MS_Code名目下输入makePROJECT=projectnameMODULES=〞module1module2…〞clean,该命令将清除指定模块的编译输出结果,其中包含指定模块的目标文件和库文件。
该命令适合在指定模块内部显现重大修改或者模块本身makefile脚本被修改,在进行模块编译前使用。
5.7编译模块
在MS_Code名目下输入makePROJECT=projectnameMODULES=〞module1module2…〞update,该命令将对指定模块进行编译,但可不能编译完成后进行自动链接。
该命令属于模块开发人员最常用的命令,在具体模块开发中需要经常使用该命令来验证模块的编译完整性。
5.8生成可执行文件
在MS_Code名目下输入makePROJECT=projectnameimage能够进行链接生成相关的可执行文件,该命令能够在模块修改并编译完成后进行,也适合第三方库文件更新后进行。
5.9编译FDL/bootloader
在MS_Code名目下输入makePROJECT=projectnameMODULES=bootloader对bootloader编译
在MS_Code名目下输入makePROJECT=projectnameMODULES=fdl1对fdl1进行编译。
在MS_Code名目下输入makePROJECT=projectnameMODULES=fdl2对fdl2进行编译。
在MS_Code名目下输入makePROJECT=projectnameMODULES=nor_fdl对nor_fdl进行编译。
输出结果位置:
build/projectname_builddir/fdl_bootloader.同时会自动将最终的bin文件copy到build/projectname_builddir/img
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 开发 环境 配置