展讯平台开发说明.docx
- 文档编号:5253478
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:32
- 大小:144.33KB
展讯平台开发说明.docx
《展讯平台开发说明.docx》由会员分享,可在线阅读,更多相关《展讯平台开发说明.docx(32页珍藏版)》请在冰豆网上搜索。
展讯平台开发说明
Build环境使用手册
Version:
0.2.5
2010-10-14
修订历史
版本
日期
作者
审核
说明
0.0.1
2007-12-11
Daniel.Luo
Create
0.02
2008-1-31
Daniel.Luo
增加客户发布及使用内容
0.03
2009-03-10
Mingjianliu
基于MOCOR_W09.11修改
0.04
2009-03-31
Mingjianliu
增加多线程编译,Windowscommand编译
0.05
2009-04-09
Mingjianliu
删除Cygwin相关所有信息
0.06
2009-04-15
Mingjianliu
编译命令增加5.18特别提醒,新建工程部分增加NV,Resource部分的说明
0.07
2009-04-20
Mingjianliu
根据评审结果修改
0.08
2009-04-28
Mingjianliu
增加编译暂停说明;资源编译说明更新,增加编译出错的一个说明
0.09
2009-05-06
Mingjianliu
增加对VC模拟器编译说明,提醒修改工程
0.10
2009-05-30
Mingjianliu
Resource,NV说明更新
0.11
2009-07-08
Mingjianliu
增加通过复制方式创建新工程说明;增加sourceInsight与CC集成说明;增加全局变量和转义宏的实现区分;增加第三方编译选项说明;更新多套资源编译说明
0.12
2009-08-19
Mingjianliu
1.第三方逻辑部分独立成一个文件Makefile.third-partyMakefile.third-party2编译APP需要调用tools\DEBUG_TOOL\BMP2Array工具3.增加分布式编译说明.4.鼠标右键增加命令行快捷方式说明5.DOS下输入命令时用Tab键进行命令自动填充
6.增加动态生成模拟器部分说明
0.13
2009-08-31
Mingjianliu
更新3.2统一编译部分关于:
makefile宏赋制值的特别说明
0.14
2009-09-24
Mingjianliu
更新复制方式创建项目编译脚本部分:
大工程中增加PRODUCT_BASELIB_DIR变量及使用说明;MS_Customize/source/product/config驱动部分根据工程名字自适应;7.2.4项目修改编译选项注意事项更新;更新NV编译选项说明;3.5编译命令最大长度8K限制
0.15
2009-10-10
Mingjianliu
Windows模拟器调整
0.16
2009-10-21
Mingjianliu
提醒:
XoreaxIncrediBuild有Bug,代码路径中不要有括号,即使是单个括号也不可以,否则无法编译.
0.17
2009-12-30
Mingjianliu
多个资源.xls合并使用问题
0.18
2010-02-02
Mingjianliu
1.7.2.2复制方式创建项目编译脚本中对非开放的.a,对应目录只取PRODUCT_BASELIB_DIR的值;
2.6.6分布式编译增加依赖关系,并增加编译细节说明;
3.6.8对FeatureOptions的使用增加了一个错误用法说明
0.19
2010-02-12
Mingjianliu
根据2月11日评审修改
0.20
2010-02-25
Mingjianliu
公共转义宏使用标准make语法生成,不再通过读源文件方式生成;删除6.8
0.21
2010-03-04
Mingjianliu
增加5.13生成编译选项
0.22
2010-04-22
Mingjianliu
Makefile文件中变量filter-out_macro记录了不需要转义成编译宏的一些makefile变量,其中一些是编译时的命令行参数。
如果项目增加了额外的命令行参数,请考虑是否在转义宏时将其过滤掉(如果是客户版本,检测SPRD宏时有可能不通过).。
删除全局变量和转义宏区别部分,此内容已在第三章中说明。
0.23
2010-07-05
Mingjianliu
删除全局变量和转义宏区别部分,此内容已在第三章中说明。
0.24
2010-09-26
Mingjianliu
章节调整;增加新的多线程编译方式;增加宏校验出错信息
0.25
2010-10-14
Mingjianliu
根据CRMS00202859修改,涉及:
宏定义中去掉export,增加
重要声明
版权声明
本文档中的任何内容受《中华人民共和国著作权法》的保护,版权所有©2006,展讯通信有限公司,保留所有权利,但注明引用其他方的内容除外。
商标声明
本文档中展讯通信有限公司的产品的所有商标是展讯通信有限公司专有,但注明属于其他公司拥有的商标除外。
在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。
不作保证声明
展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。
保密声明
本文档(包括任何附件)包含的信息是保密信息。
接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。
目录
1说明6
2编译环境及相关软件7
3SourceCode目录结构8
4基本编译命令10
4.1全新编译整个项目[new]10
4.2更新项目[update]11
4.3单独编译模块11
4.4清除模块编译结果11
4.5清除所有编译结果[cleanall]11
4.6生成可执行文件11
4.7编译FDL/bootloader11
4.8编译NV11
4.9编译MMIResource文件12
4.10编译PC模拟器工程12
5其它编译命令15
5.1编译Logel工具15
5.2pclint扫描15
5.3编译完成netsend提醒功能15
5.4编译命令的简写15
5.5多线程编译15
5.6分布式编译16
5.7编译出错暂停16
5.8生成编译选项16
6Makefile工作流程17
6.1重要脚本17
6.2Makefile执行流程18
6.3两种编译方式19
7模块修改及项目定制21
7.1添加或删除模块21
7.2修改模块21
7.3创建新项目22
7.4修改项目FeatureOptions23
8第三方编译选项说明24
9相关使用技巧25
9.1查看log文件25
9.2makefile报错:
Noruletomaketarget`XXX',neededby`yyy'.25
9.3makefile报错:
Can'treturnoutsideasubroutineat./make/perl_script/sprd_macro_check.pllineXXX25
9.4SourceInsight和ClearCase配置25
9.5鼠标右键命令行快捷方式设置28
9.6DOS下输入命令时用Tab键进行命令自动填充28
1说明
Build环境中实现了项目开发和维护使用的GNU标准应用脚本,基于这些应用脚本和相关make工具,Build环境可以完成项目全部代码的编译和二进制文件的生成,同时在此环境中可以通过脚本执行的方式产生其他软件以及开发工具,如fdl,bootloader,nv_parameter,resource等。
Build环境的相关命令脚本需要在WindowsCommand环境下进行,因为每个项目工程编译出来的中间依赖文件都独立存放,所以可以通过开启多个WindowsCommand窗口对多个不同的项目进行同时编译。
2编译环境及相关软件
操作系统:
建议Windows2000professional或windowsXPSP3版本
编译工具:
ADSV1.2(ARMDeveloperSuite)patch848isfullyready
RVDSV3.1(RealviewDevloperSuite)isunderevaluation
MicrosoftVisualC++6.0SP6
ADSpatch版本的查看方法见下图:
其他工具:
MicrosoftExcel2000或者MicrosoftExcel2003或者WPS2005及以上版本
3SourceCode目录结构
Build环境目录结构
└─MS_Code
├─build编译结果的输出总目录,此目录下内容在编译过程中生成
│├─8801h_s3b_builddir与具体项目名称对应,自动生成的输出目录
││├─dep编译依赖文件存放目录
││├─img编译最终结果存放目录,包括armbin,fdl,bootloader,
│││resource,nv等
││├─lib客户编译模块.a存放目录
││├─log编译log文件目录,包括编译出错信息、告警信息等
││├─fdl_bootloader编译生成的fdlbootloader文件目录
││├─res编译生成的resource文件目录
││├─pclint编译生成的pclint文件目录
││├─tmp编译生成的临时文件目录
││└─obj模块目标文件存放目录
││└─win自动生成模拟器工程存放目录
│└─sc6600l_sp6601l_builddir
├─chip_drvSourceCode
├─MS_RefSourceCode
├─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第三方软件库文件和头文件存放位置
│└─bt_csr
│├─include
│└─lib
├─lib展讯开放库文件目录存放地和build目录分开
├─fdl_bootloaderfdlbootloader存放目录
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基本编译命令
Build的所有操作命令都要在WindowsCommand下执行,并且需要在关键脚本的当前路径,即MS_Code目录下完成输入。
示例如下:
在编译项目时,会使用类似makePROJECT=projectname命令,这里projectname必须和项目编译脚本的名称保持一定的对应关系,否则系统会报:
ProjectdefinedMakefileproject_projectname.mkisnotexist!
这样的错误。
如项目编译脚本文件名为project_8801h_s3b.mk,则projectname的内容为8801h_s3b,因此我们可以执行如下的命令来实现编译:
makePROJECT=8801h_s3b
4.1全新编译整个项目[new]
通过命令行工具在项目目录MS_Code下输入命令makePROJECT=projectnamenew,该命令将清除编译过程中生成的全部目标码和库文件,然后对projectname所指定的项目进行整体编译并在没有错误出现的情况下完成最终的链接,编译过程中会自动生成依赖关系。
会这一命令适合在项目进行了较大修改:
比如公共头文件数据结构发生变化、公共接口参数发生变化、文件更新中时间戳混乱或makefile相关脚本被修改等等情况下建议使用这一命令,确保重新对项目进行完全编译得到正确的输出结果。
这个命令也会将fdl,bootloader,NV,Resource同时编译出来。
该命令相当于运行如下3个命令
makePROJECT=projectnamecleanall
makePROJECT=projectnameMODULES=resource
makePROJECT=projectnameupdate
4.2更新项目[update]
通过命令行工具在项目目录MS_Code下输入命令makePROJECT=projectname或makePROJECT=projectnameupdate命令,makefile根据已有的依赖关系编译因修改涉及到的相关的模块并在没有错误出现的情况下完成最终的链接,若不存在依赖关系,makefile会在编译文件时自动生成依赖关系。
因为只编译较少的模块文件,可以节省编译时间。
这个命令也会将fdl,bootloader,NV同时编译出来。
4.3单独编译模块
通过命令行工具在项目目录MS_Code下输入命令makePROJECT=projectnameMODULES=”module1module2…”update,该命令将对指定模块进行编译,但不会编译完成后进行自动链接。
该命令属于模块开发人员最常用的命令,在具体模块开发中需要经常使用该命令来验证模块的编译完整性。
4.4清除模块编译结果
通过命令行工具在项目目录MS_Code下输入命令makePROJECT=projectnameMODULES=”module1module2…”clean,该命令将清除指定模块的编译输出结果,其中包含指定模块的目标文件和库文件。
该命令适合在指定模块内部出现重大修改或者模块本身makefile脚本被修改,在进行模块编译前使用。
4.5清除所有编译结果[cleanall]
通过命令行工具在项目目录MS_Code下输入命令makePROJECT=projectnamecleanall,该命令将清除编译过程中生成的全部目标码和库文件。
4.6生成可执行文件
通过命令行工具在项目目录MS_Code下输入命令makePROJECT=projectnameimage可以进行链接生成相关的可执行文件,该命令可以在模块修改并编译完成后进行,也适合第三方库文件更新后进行。
4.7编译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下,方便下载到手机中。
您也可以根据工程具体情况用一条命令编译出所有目标,示例如下:
makePROJECT="rocky_6901"MODULES="fdl1fdl2bootloader"
makePROJECT="8801h_s3b"MODULES="nor_fdl"
4.8编译NV
通过命令行工具在项目目录MS_Code下输入命令makePROJECT=projectnameMODULES=nv_parameter对nv_parameter编译
输出结果位置:
build/projectname_builddir/nvm。
同时会自动将最终的bin文件复制到build/projectname_builddir/img。
注意:
1.make/nv_parameter/nv_parameter.mk是NV的makefile文件
make/nv_parameter/config_info.nv为NV的配置文件
2.如果希望单独修改项目某项NV参数,例如希望修改nv_type.nvm某项,应该在使用make指令编译出NV项目文件之后使用NVEDITOR工具编译保存。
4.9编译MMIResource文件
通过命令行工具在项目目录MS_Code下输入命令makePROJECT=projectnameMODULES=resource对Resource编译。
输出结果位置:
build/projectname_builddir/res。
同时会自动将最终的映像文件复制到build/projectname_builddir/img目录。
默认情况下编译Resource使用了主工程中的FeatureOptions转义宏和app.mk模块中的宏,如果您的项目资源编译需要使用其他的模块的宏,请修改resource.mk文件。
注意:
1)当前不能正确支持多个项目工程的资源并行编译
2)编译资源文件需要工具脚本支持,如果环境不完整会导致编译过程停止
3)修改make\perl_script\ResGen\ResView.ini中配置项[CustStrTable],可支持多个字符资源文件:
如:
[CustStrTable]
1=cust_str_table_01.xls
4.10编译PC模拟器工程
●编译Win32模拟器工程的步骤
1)通过makefile自动生成模拟器工程dsw文件;
生成模拟器工程时一些配置信息(skin,resource,sim)文件MSSimCfg.ini,SIMTest.ini会自动生成
并存放到win\bin文件夹下;模拟器msdev工具也会从MS_MMI里Copy一份到这个文件夹中。
使用类似如下的命令可在该工程的build临时文件夹的win下生成对应的所有.dsp,dsw文件
makePROJECT=sc6600l_sp6601lMODULES=simulator
2)编译模拟器;
用VC6打开win/simulator.dsw文件,设置msdevkernel为ActiveProject,编译完成后
msdevkernel.dll会生成到win/bin目录下
3)运行模拟器;
双击win/bin目录下的msdev.exe即可。
●功能说明:
通过对MOCOR平台makefile工程文件分析,取得要编译的文件列表,宏,搜索路径等信息后自动生成对应的VCdsp工程文件和一个simulator.dsw的工作空间文件,执行simulator.dsw就可以编译出模拟器使用的.dll文件.
●文件说明:
simulator.mk(make/simulator/simulator.mk)
指示模拟器需要使用的模块列表,特别指定的编译宏列表,及完成生成模拟器的所有工作
simulator.ini(make/simulator/simulator.ini)
配置文件,用来指示模拟器工程与make工程在文件,宏,搜索路径的差异。
其中msdevkernel为总dsp文件,模拟器工程需要的所有lib文件如第三方.lib文件等都要加到这个工程中。
该文件支持代码宏,示例如下:
#ifdefPLATFORM_SC6600L
chip_drv+=chip_drv/source/c/ivsp_drv_6600l.c
#endif
simulator.ini说明:
[ADD_INC_PATH]
用来指示除makefile对应工程的搜索路径外,dsp工程中还需要增加的搜索路径
[DEL_INC_PATH]
用来指示在makefile对应工程的搜索路径中需要删除的搜索路径
[ADD_OPTION]
用来指示除makefile对应工程的搜索路径外,dsp工程中还需要增加的编译宏
注意:
宏列表需要用""来引起来,如app="USB_WEBCAMERA_SUPPORTUSB_LOG"
[DEL_OPTION]
用来指示在makefile对应工程的编译宏中需要删除的宏
注意:
宏列表需要用""来引起来,如rtos="_RTOSWIN32_DEBUG_MBCS_LIB_RTOS_ENABLE_LOG_TOOL"
[ADD_FILE]
用来指示除makefile对应工程的文件外,dsp工程中还需要增加的文件
[DEL_FILE]
用来指示在makefile对应工程的文件中需要删除的文件,如果具体某个模块的值为*则表示这个模块的所有文件都删除
[REPLACE_FILE]
用来指示在makefile对应
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 平台 开发 说明