当前位置:首页 >> IT/计算机 >>

展讯开发环境配置


Make/Build环境使用手册 环境使用手册

批注 [r1]: 主标题:(默认)Arial, (中文)宋体,二号字体,加粗; 段落:右对齐,右缩进为 3.27 字 符,单倍行距 批注 [r2]: 副标题:(默认)Arial, (中文)宋体,四号字体,加粗; 段落:右对齐,右缩进为3.27字 符,单倍行距

Version: 0.1.5

2009-10-21

批注 [r3]: 文字格式:(默认) Arial,(中文)宋体,四号字体;段 落:右对齐,右缩进为3.27字符, 单倍行距

www.spreadtrum.com

Spreadtrum Confidential and Proprietary

Make/Build环境使用手册

修订历史
版本
0.0.1 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10

日期
2007-12-11 2008-1-31 2009-03-10 2009-03-31 2009-04-09 2009-04-15 2009-04-20 2009-04-28 2009-05-06 2009-05-30

作者
Daniel.Luo Daniel.Luo Mingjianliu Mingjianliu Mingjianliu Mingjianliu Mingjianliu Mingjianliu Mingjianliu Mingjianliu

审核

说明
Create 增加客户发布及使用内容 基于MOCOR_W09.11修改 增加多线程编译,Windows command 编译 删除Cygwin 相关所有信息 编译命令增加5.18 特别提醒,新建工程 部分增加NV,Resource 部分的说明 根据评审结果修改 增加编译暂停说明;资源编译说明更 新,增加编译出错的一个说明 增加对VC模拟器编译说明,提醒修改 工程 Resource,NV 说明更新 增加通过复制方式创建新工程说明;增 加 source Insight 与CC集成说明;增加 全局变量和转义宏的实现区分;增加第 三方编译选项说明;更新多套资源编译 说明 1.第三方逻辑部分独立成一个文件 Makefile.thirdpartyMakefile.third-party 2 编译 APP 需要调用 tools\DEBUG_TOOL\BMP2Array 工具3. 增加分布式编译说明.4.鼠标右键增加 命令行快捷方式说明5. DOS下输入命令 时用Tab键进行命令自动填充 6.增加动态生成模拟器部分说明

0.11

2009-07-08

Mingjianliu

0.12

2009-08-19

Mingjianliu

0.13

2009-08-31

Mingjianliu

更新 3.2 统一编译部分关于: makefile宏赋制值的特别说明 更新复制方式创建项目编译脚本 部分: 大工程中增加 PRODUCT_BASELIB_DIR变 量 及使用说明; MS_Customize/source/product/config 驱动部分根据工程名字自适应 ; 7.2.4 项目修改编译选项注意事项更 新;更新NV编译选项说明;增加3.5 编 译命令最大长度 8K限制 限制 In分布式编译,路径不能有括号,担搁 括号也不可以.

0.14

2009-09-24

Mingjianliu

0.15

2009-10-21

Mingjianliu

V1.0.0

Spreadtrum Confidential and Proprietary

2 of 30

Make/Build环境使用手册

重要声明
版权声明
本文档中的任何内容受《中华人民共和国著作权法》的保护,版权所有 ? 2006, 展讯通信有限公司,保留所有权利,但 展讯通信有限公司, 版权所有 注明引用其他方的内容除外。

商标声明
本文档中展讯通信有限公司的产品的所有商标是展讯通信有限公司专有,但注明属于其他公司拥有的商标除外。在提及其他公 司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。

不作保证声明
展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间 接、特殊或连带的损失承担任何责任。

保密声明
本文档(包括任何附件)包含的信息是保密信息。接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目 的,也不得将本文档泄露给任何第三方。

V1.0.0

Spreadtrum Confidential and Proprietary

3 of 30

Make/Build环境使用手册


1 2



说明 .......................................................................................................................................... 6 运行环境................................................................................................................................... 7 2.1 编译环境及安装相关软件 .................................................................................................. 7

3 4

编译架构................................................................................................................................... 8 目录结构及关键脚本 .............................................................................................................. 11 4.1 make/build环境的关键目录结构 ..................................................................................... 11 4.2 关键脚本 ......................................................................................................................... 12 4.2.1 Makefile.rules .......................................................................................................... 12 4.2.2 Makefile.modules .................................................................................................... 13 4.2.3 Makefile.third-party ................................................................................................. 13 4.2.4 Makefile.verify ......................................................................................................... 13 4.2.5 Makefile ................................................................................................................... 13 4.2.6 make.bat.................................................................................................................. 13

5

基本命令................................................................................................................................. 14 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 帮助................................................................................................................................. 14 编译参数中 projectname 与项目编译脚本对应关系 ....................................................... 14 编译整个项目[update] ..................................................................................................... 14 重新编译整个项目[new] .................................................................................................. 15 清除所有编译结果[cleanall] ............................................................................................ 15 清除模块编译结果........................................................................................................... 15 编译模块 ......................................................................................................................... 15 生成可执行文件 .............................................................................................................. 15 编译FDL/bootloader ....................................................................................................... 15 编译NV............................................................................................................................ 15 编译Resource ................................................................................................................. 16 编译手机模拟器工程 ....................................................................................................... 17

6

其它命令................................................................................................................................. 20 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 编译Logel工具 ................................................................................................................ 20 pclint 扫描 ....................................................................................................................... 20 编译完成net send提醒功能............................................................................................. 20 编译命令的简写 .............................................................................................................. 20 多线程编译...................................................................................................................... 20 分布式编译...................................................................................................................... 21 编译出错暂停 .................................................................................................................. 21 特别提醒 ......................................................................................................................... 21

V1.0.0

Spreadtrum Confidential and Proprietary

4 of 30

Make/Build环境使用手册

7

模块修改及项目定制 模块修改及项目定制 .............................................................................................................. 22 7.1 模块修改 ......................................................................................................................... 22 7.1.1 模块目录结构调整 ................................................................................................... 22 7.1.2 添加或删除文件 ....................................................................................................... 22 7.1.3 修改编译选项........................................................................................................... 22 7.1.4 新增模块 .................................................................................................................. 23 7.2 项目定制 ......................................................................................................................... 23 7.2.1 创建全新的项目编译脚本 ........................................................................................ 23 7.2.2 复制方式创建项目编译脚本 ..................................................................................... 23 7.2.3 添加或删除模块 ....................................................................................................... 24 7.2.4 修改项目编译选项 ................................................................................................... 24 7.2.5 客户发布及使用 ....................................................................................................... 25

8 9

第三方编译选项说明 .............................................................................................................. 26 相关使用技巧 ......................................................................................................................... 27 9.1 9.2 9.3 9.4 9.5 9.6 查看log文件 .................................................................................................................... 27 makefile 编译过程中报错: No rule to make target ` XXX ', needed by `yyy'. .............. 27 Makefile 中全局变量和转义宏的区分 ............................................................................. 27 Source Insight和ClearCase配置 .................................................................................... 27 鼠标右键命令行快捷方式设置 ........................................................................................ 30 DOS下输入命令时用Tab键进行命令自动填充 ............................................................... 30

V1.0.0

Spreadtrum Confidential and Proprietary

5 of 30

Make/Build环境使用手册

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

V1.0.0

Spreadtrum Confidential and Proprietary

6 of 30

Make/Build环境使用手册

2 运行环境
2.1 编译环境及安装相关软件 编译环境及安装相关软件 环境及 操作系统: 建议 Windows2000 或 windows XP
ADS(ARM Developer Suit V1.2) 注意需要安装 848 的patch,查看方法见下图:

Microsoft Excel 2000 或者 Microsoft Excel 2003 或者 WPS 2005及以上版本(用于编译资源): Microsoft Visual C++ 6.0 需要安装sp6补丁(用于编译模拟器)

保证源代码文件中的make 配置文件 Makefile.rules 中各项配置均正确

V1.0.0

Spreadtrum Confidential and Proprietary

7 of 30

Make/Build环境使用手册

3 编译架构
对一个项目的所有模块和要使用的一些工具,目前是采用两种方式编译。 1.独立的makefile编译 .独立的 编译 目前采用独立的makefile编译的模块有: fdl1 fdl2 bootloader nv_parameter resource logel winsimulator pclint 这些模块或功能,对应的 make/module_name/module_name.mk 本身已经是一个完整的makefile文件, 直接调用就可以了。目前实现方式是在 大的工程文件中,将这些模块的列表对INDEPENDENT 赋值,指示这 些模块需要单独编译。采用独立编译的的另外一个特点是他们一般不参与大工程的link,往往只是一些辅助工 具。 # independent compile INDEPENDENT= nor_fdl logel winsimulator_lib winsimulator_r_nor resource

如果项目有新的模块或工具需要独立编译,可以实现makefile 并将他们的名字添加到INDEPENDENT 的列 表总即可。 编译方式为 :make PROJECT=projectname MODULES=bootloader 注意: 独立编译的模块,通过这种方式调用只能执行默认的最终目标。

2. 统一方式编译 . 统一方式 方式编译 绝大部分的模块都是通过这种编译方式来完成编译的。这种编译方式使用一致的依赖关系生成方法,统一 控制编译的行为。对应的 make/module_name/module_name.mk 文件并不是一个完整的makefile 文件,一般其中 只包含编译需要的宏列表,文件列表,搜索文件路径 即可。其他都由框架自动完成。在您的项目需要添加模块 时,推荐您使用这种方式。 每个大工程在编译的时候,会自动将Feature Options 部分转义成真正的代码中使用的宏传给相应的子模 块,在对子模块代码编译的时候,自动附加上这些宏。转义的规则如下: 1.对 开关型的 Feature Options ,当Feature Options 为TRUE 时转义,为FALSE时不转义 export NANDBOOT_SUPPORT = TRUE ### Boot From Nandflash Support: # Option1:TRUE # Option2:FALSE 对上面的定义也就是 转义一个宏 -DNANDBOOT_SUPPORT. 2. 对 列表型的 Feature Options ,将 Feature Options 的名字和值拼接起来转义成一个宏,同时对非 NONE 的值,同时转义一个Feature Options 名字的宏。 export SUBLCD_SIZE = 96X64 ### Resolution Of Main LCD # Option1:NONE # Option2:96X64 #define SUBLCD_SIZE_NONE #define SUBLCD_SIZE_96X64

对上面的定义也就是 转义一个宏 -DSUBLCD_SIZE_96X64 -DSUBLCD_SIZE
V1.0.0 Spreadtrum Confidential and Proprietary 8 of 30

Make/Build环境使用手册

转义的宏临时文件存放在如下位置,每次编译的时候该文件会自动更新. MS_Code\build\projectname_builddir\tmp\projectname_public_macro.txt MS_Code\build\projectnam _builddir\tmp\projectname_public_macro_s.txt

特别注意: 特别注意 1.Feature Options 的书写请严格按照上述的示例书写,当对工程中Feature Options转义的时候,对符合 . 下面模板的行都会转义。 export NANDBOOT_SUPPORT = TRUE ###

示例如下: 大工程 project_rocky_3201.mk中有如下片段

代码中可以这样使用:

2.Feature Options 只能出现在大工程中,在子make中定义和赋值都是无效的,并且会导致编译结果不正 . 确; 3.Feature Options 只接受直接赋值,不能包含在条件语句中; . 4.Feature Options 只能赋值一次。 .

3. 编译的依赖关系 .

V1.0.0

Spreadtrum Confidential and Proprietary

9 of 30

Make/Build环境使用手册

在统一方式编译下,系统会自动生成依赖关系文件,这些依赖关系文件存放在 MS_Code\build\projectname_builddir\dep 下。 注意: 1. makefile中的配置文件 Makefile.rules 没有作为依赖,所以其内容改变时,用update参数编译时将不自 动编译相应文件. 2. 对编译后生成的 .a 文件及其相应的依赖文件,这些文件默认都有固定的存放位置,没有特别需求,请 不要改变,否则有可能造成编译依赖错误,导致出现一些问题.

4. Debug 版本和Release版本 . 和 SPRD MOCOR平台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限制 . 限制 注意: 环境最大只支持8K长度的命令 所以请控制宏的数量,搜索目录的数量, 长度的命令, 注意: Windows 环境最大只支持 长度的命令,所以请控制宏的数量,搜索目录的数量,防止命令行超 长而无法编译. 长而无法编译

V1.0.0

Spreadtrum Confidential and Proprietary

10 of 30

Make/Build环境使用手册

4 目录结构及关键脚本
4.1 make/build环境的关键目录结构 环境的关键目录结构 环境的关键
└─MS_Code ├─build │ ├─rocky _3201_builddir │ │ ├─dep │ │ ├─img │ │ │ │ │ ├─lib │ │ ├─log │ │ ├─nv │ │ ├─fdl_bootloader │ │ ├─res │ │ ├─pclint │ │ ├─tmp │ │ └─obj │ │ └─win │ └─rocky_6901_builddir ├─chip_drv ├─MS_Ref ├─PS ├─atc ├─common │ ├─nv_parameters │ └─source ├─make 对模块进行编译 │ └─aac │ └─aac.mk | … | ├─MS_Customize │ ├─config │ ├─custom │ └─product ├─version ├─MS_MMI ├─Third-party │ └─bt_csr │ ├─include │ └─lib ├─lib ├─fdl_bootloader 编译结果的输出总目录 和具体项目名称对应,自动生成的输出目录 编译依赖文件存放目录 编译最终结果存放目录,包括arm bin,fdl,bootloader, resource,nv等 客户编译模块.a存放目录 编译log文件目录,包括编译出错信息、告警信息等 编译生成的nv_parameter文件目录 编译生成的fdl bootloader文件目录 编译生成的resource文件目录 编译生成的pclint文件目录 编译生成的临时文件目录 模块目标文件存放目录 自动生成模拟器工程存放目录

统一NV project存放目录 目标统一main.c存放目录 依据编译选项文件,makefile将自动搜寻该目录并循环|

对应模块的编译脚本

区分不同产品驱动配置文件 目标统一版本version.c

从MS_APP下link过来保持目录结构

展讯开放库文件目录存放地和build目录分开 fdl bootloader 存放目录

make/build环境的关键目录如上图所示,所有相关代码和脚本都统一集中在MS_Code目录下,下面将对特殊 的目录做些详细的说明: 1) build目录
V1.0.0 Spreadtrum Confidential and Proprietary 11 of 30

Make/Build环境使用手册

bulild目录及其下的相关内容在程序编译过程中自动生成,对于特定的项目,build目录会生成 projectname_builddir目录,并在该目录下自动生成dep、img、lib、log、nv、tmp及obj等目录。

2) make目录 make目录存放和模块对应的编译脚本,子目录和模块呈一一对应关系,各个子目录中存放着和目录名称对应 的脚本文件。一旦有了新添的模块源文件或删减,相关脚本需要进行修改。同样,如果有了新增的模块,则 需要在make目录下建立新的模块子目录。相关过程在后面会有更详尽的描述。

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脚本, 目编译脚本 即模块编译脚本 模块编译脚本,比如aac.mk、app.mk等等。一般情况下开发人员仅维护项目编译脚本 项目编译脚本即可, Makefile.rules、 模块编译脚本 项目编译脚本 Makefile.modules和Makefile不需要修改。 针对模块和项目的变化,开发人员需要修改模块编译脚本 模块编译脚本和增加新的项目编译脚本 项目编译脚本。下面将针对 模块编译脚本 项目编译脚本 Makefile.rules、Makefile.modules和Makefile进行简单的说明,关于模块编译脚本 项目编译脚本将在后面的章 模块编译脚本和项目编译脚本 模块编译脚本 项目编译脚本 节中详细描述。

4.2.1

Makefile.rules

Makefile.rules中定义了绝大部分平台无关、模块无关以及项目无关的公共变量,其中包括编译器的指定、公 共编译参数的定义、文件复制、删除、目录创建等系统命令、公共头文件路径、SPRD库路径以及第三方库文件路 径等变量的定义。这些需要指出的是语句:

ARM_HOME ARMCC CC CPP ASM LINK AR FROMELF ARMINC

=C:/Program Files/ARM/ADSv1_2 ="$(ARM_HOME)/Bin/armcc" ="$(ARM_HOME)/Bin/tcc" ="$(ARM_HOME)/Bin/tcpp"

="$(ARM_HOME)/Bin/armasm" ="$(ARM_HOME)/Bin/armlink" ="$(ARM_HOME)/Bin/armar" ="$(ARM_HOME)/Bin/fromelf" ="$(ARM_HOME)/Include"

请根据您的机器上的软件安装情况修改这些设置。

另外,在Makefile.rules中定义了编译器公共编译选项CFLAGS ,CFLAGS 的定义如下: CFLAGS
V1.0.0

= $(DEFINES) $(OPTFLAGS) $(WARNFLAGS) $(DEBUGFLAGS)
Spreadtrum Confidential and Proprietary 12 of 30

Make/Build环境使用手册

即CFLAGS是由:DEFINES、OPTFLAGS、WARNFLAGS及DEBUGFLAG这四个变量组合而成,其定义分别如 下: DEFINES OPTFLAGS WARNFLAGS DEBUGFLAGS = = -O1 -bi -g+ -apcs /interwork/swst -fy -D_RTOS -D_DEBUG -Ec = -Wall =

组合后的编译选项构成了各个模块编译器选项的公共部分,如果有特殊需要(比如过滤特定的告警信 息),则可以修改相关选项。如果有模块需要扩充编译选项,则可以在模块自己的模块编译选择项中进行添加,这 样也不会影响到其它模块。 除此之外,该文件一般不需要维护。

4.2.2

Makefile.modules

Makefile.modules定义了make/bulid系统中的目标依赖关系,一般开发中不需要维护该文件,这里需要指出的 是:目前有部分模块采用了armcc编译器(比如:mpeg4_codec),对于这部分模块需要在Makefile.modules中 申明,具体操作可以参考该文件中已经被申明的相关模块部分。

4.2.3

Makefile.third-party

Makefile.third-party 将第三方逻辑独立成一个文件,便于维护,这个文件会 被 include 到各工程.mk 中.

4.2.4

Makefile.verify

Makefile.verify 对makefile中的宏的父子关系进行校验,防止出错.

4.2.5

Makefile

Makefile是最上层的总控脚本,该脚本直接处理用户的命令,并执行相关的处理,在没有特殊需要的情况下用户不 需要维护该文件。

4.2.6

make.bat

makefile的外壳文件,请不要直接运行,主要用来对make附加一些额外的参数.

V1.0.0

Spreadtrum Confidential and Proprietary

13 of 30

Make/Build环境使用手册

5 基本命令
make/build的所有操作命令都要在Windows Command 下执行,并且需要在关键脚本的当前路径,即MS_Code目 录下完成输入。示例如下:

5.1

帮助

在MS_Code目录下输入make help可以获得相关的帮助信息,这些相关信息内容可以从下面对于小节中获取 更详细的内容,这里不再重复。

5.2

与项目编译脚本对应关系 编译参数中 projectname 与项目编译脚本对应关系

在编译项目时,会使用类似make PROJECT=projectname 命令,这里projectname必须和项目编译脚本 项目编译脚本的 项目编译脚本 名称保持一定的对应关系,否则系统会报: Project defined Makefile project_projectname.mk is not exist! ! 这样的错误。如项目编译脚本文件名为 project_rocky_3201.mk,则projectname的内容为rocky_3201,因此我们 可以执行如下的命令来实现编译 make PROJECT= rocky_3201

5.3

编译整个项目 编译整个项目[update]

在MS_Code目录下输入make PROJECT=projectname 或 make PROJECT=projectname update 命令,makefile 根据已有的依赖关系编译因修改涉及到的相关的模块并在没有错误出现的情况下完成最终的链接,若不存在依赖关 系,makefile 会在编译文件时自动生成依赖关系。因为只编译较少的模块文件,可以节省编译时间。这个命令也会 将 fdl,bootloader,NV 同时编译出来。

V1.0.0

Spreadtrum Confidential and Proprietary

14 of 30

Make/Build环境使用手册

5.4

重新编译整个项目[new] 重新编译整个项目

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

5.5

清除所有编译结果[cleanall] 清除所有编译结果

在MS_Code目录下输入make PROJECT=projectname cleanall,该命令将清除编译过程中生成的全部目标 码和库文件。

5.6

清除模块编译结果

在MS_Code目录下输入make PROJECT=projectname MODULES=”module1 module2 …” clean,该命令 将清除指定模块的编译输出结果,其中包含指定模块的目标文件和库文件。该命令适合在指定模块内部出现重大修 改或者模块本身makefile脚本被修改,在进行模块编译前使用。

5.7

编译模块

在MS_Code目录下输入make PROJECT=projectname MODULES=”module1 module2 …” update,该命令将对指 定模块进行编译,但不会编译完成后进行自动链接。该命令属于模块开发人员最常用的命令,在具体模块开发中需 要经常使用该命令来验证模块的编译完整性。

5.8

生成可执行文件

在MS_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进行编译。 在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 bootloader" make PROJECT="rocky_3201" MODULES="nor_fdl"

5.10 编译 编译NV
在MS_Code目录下输入make PROJECT=projectname MODULES= nv_parameter 对nv_parameter编译 输出结果位置: build/projectname_builddir/nvm。同时会自动将最终的bin文件copy 到 build/projectname_builddir/img 下,方便下载到手机中。
V1.0.0 Spreadtrum Confidential and Proprietary 15 of 30

Make/Build环境使用手册

注意: 1. 当 大工程中的 RELEASE_INFO 的值为 TRUE 时编译出来的 NV 自动为 Release 版本的NV 2. 大工程中的 RELEASE_INFO 的值为 FALSE 时编译出来的 NV 自动为 Debug 版本的NV

3. 平台发布的代码中没有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生成,以 防漏配置。 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 Main LCD: # Option1:240X320 # Option2:240X400 export MMI_RES_DIR #define MAINLCD_SIZE_240X320 #define MAINLCD_SIZE_240X400

= mmi_res_240x320 # resource directory # Option1:mmi_res_240x320 # Option2:mmi_res_240x400

MAINLCD_SIZE 用来说明资源对应的 LCD 分辨率,MMI_RES_DIR 指定对应的资源的文件夹位置。这里增加了 一个变量 MMI_RES_DIR的目的是某些情况下,同一分辨率对应的资源有可能有多套。

另一个与资源相关的变量是 SPECIAL_EFFECT_ICON_SIZE,这个文件与工程 app 模块相关,也请一并修改 , export SPECIAL_EFFECT_ICON_SIZE = 60X60 # Wide x Height of special effect icon # Option1:60X60 # Option2:45X40 if MAINLCD_SIZE = 240X320 or 240X400 if MAINLCD_SIZE = 176X220

输出结果位置: build/projectname_builddir/res。同时会自动将最终的bin文件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.txt mmi_res_240x320_imag.txt mmi_res_240x320_ring.txt

注意:
V1.0.0 Spreadtrum Confidential and Proprietary 16 of 30

Make/Build环境使用手册

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_Code\MS_MMI\source\winsimulator_tp\win_platform 下的 dsw 即可。

新方式:模拟器工程通过makefile 动态生成的.然后直接编译即可. 新方式 使用类似如下的命令可在该工程的build 临时文件夹 的win 下生成对应的所有.dsp ,dsw 文件 make PROJECT=sc6600l_sp6601l MODULES=simulator

新方式说明: 新方式说明 功能说明: 功能说明: 通过对 MOCOR 平台 makefile 大工程文件分析,取得要编译的文件列表,宏,搜索路径等信息后自动生成对 应的 VC dsp 工程文件和一个 simulator.dsw 的工作空间文件,执行simulator.dsw 就可以编译出模拟器使 用的.dll文件. 文件说明: 文件说明: simulator.mk (make/simulator/simulator.mk) 指示模拟器需要使用的模块列表,特别指定的编译宏列表,及完成生成模拟器的所有工作 simulator.ini (make/simulator/simulator.ini) 配置文件,用来指示 模拟器工程与make工程在 文件,宏,搜索路径的差异。其中msdevkernel 为总dsp文 件,模拟器工程需要的所有lib文件如第三方.lib文件等都要加到这个工程中。 该文件支持代码宏,示例如下: #ifdef PLATFORM_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]
V1.0.0 Spreadtrum Confidential and Proprietary 17 of 30

Make/Build环境使用手册

用来指示除makefile对应工程的搜索路径外,dsp工程中还需要增加的编译宏 注意:宏列表需要用""来引起来,如 app = "USB_WEBCAMERA_SUPPORT USB_LOG" [DEL_OPTION] 用来指示在makefile对应工程的编译宏中需要删除的宏 注意:宏列表需要用""来引起来,如 rtos="_RTOS WIN32 _DEBUG _MBCS _LIB _RTOS _ENABLE_LOG_TOOL" [ADD_FILE] 用来指示除makefile对应工程的文件外,dsp工程中还需要增加的文件 [DEL_FILE] 用来指示在makefile对应工程的文件中需要删除的文件,如果具体某个模块的值为 * 则表示这个模块的所有 文件都删除 [REPLACE_FILE] 用来指示在makefile对应工程的文件中路径的替换

使用技巧 使用技巧: 技巧 1. 6600L 平台ARM 端JPG 为硬解码,模拟器上怎么办?: simulator.mk 中 对 macro_set 赋值 ifeq ($(strip $(JPG_DEC_SUPPORT)), JPG_HW) macro_set += JPG_DEC_SUPPORT=JPG_SW endif ifeq ($(strip $(JPG_ENC_SUPPORT)), JPG_HW) macro_set += JPG_ENC_SUPPORT=JPG_SW endif simulator.ini 修改如下: [DEL_OPTION] global = "" #if defined(JPG_DEC_SUPPORT_JPG_HW) global += "JPG_DEC_SUPPORT_JPG_HW" #endif #if defined(JPG_ENC_SUPPORT_JPG_HW) global += "JPG_ENC_SUPPORT_JPG_HW" #endif [ADD_OPTION] global = "WIN32 _DEBUG _MBCS _LIB THREADX_OS _RTOS" #if defined(JPG_DEC_SUPPORT_JPG_HW) global += "JPG_DEC_SUPPORT_JPG_SW" #endif #if defined(JPG_ENC_SUPPORT_JPG_HW) global += "JPG_ENC_SUPPORT_JPG_SW" #endif 2. 6600L 平台CMMB在模拟器上还没有调好,怎么先禁掉该功能? simulator.mk 中 对 macro_set 赋值
V1.0.0 Spreadtrum Confidential and Proprietary 18 of 30

Make/Build环境使用手册

ifeq ($(strip $(CMMB_SUPPORT)), TRUE) macro_set += CMMB_SUPPORT=FALSE endif simulator.ini 修改如下 [DEL_OPTION] global = "" #if defined(CMMB_SUPPORT) global += "CMMB_SUPPORT" #endif

V1.0.0

Spreadtrum Confidential and Proprietary

19 of 30

Make/Build环境使用手册

6 其它命令

6.1

编译Logel工具 工具 编译

对 SPRD,可以在MS_Code目录下输入make PROJECT="rocky_3201" MODULES="logel" clean update 对logel 工具进行编译。注意,编译这个工具需要 perl 5.8 。 注意:SPRD 客户无法使用该命令

6.2

pclint 扫描

对 SPRD。可以在MS_Code目录下输入make PROJECT="rocky_3201" pclint 对全部模块代码进行pclint 扫描。 输入make PROJECT="rocky_3201" MODULES=”app gui ps” pclint 对指定的模块代码进行pclint扫描。

6.3

编译完成net send提醒功能 编译完成 提醒功能

在MS_Code目录下输入类似如下命令 make PROJECT="rocky_3201" ip=192.168.0.1 make PROJECT="rocky_3201" ip=pcname 当代码编译完成时,会自动向指定的IP地址或机器名 发一个 net send 消息,说明该工程编译是否成功。 注意,这个命令只在生成 image 后才调用,单独编译某个模块并不 生成 image 时并不会调用。

6.4

编译命令的简写

make PROJECT=rocky_3201 MODULES=”app gui ps” 可以简写为 make p=rocky_3201 m=”app gui ps” make PROJECT=rocky_3201 new 可以简写为 make p=rocky_3201 new

6.5

多线程编译

SPRD makefile 支持多线程编译,可以充分利用多核CPU 的优势,加快编译速度. 您必须通过显式的方式指定开启线程数: make p=rocky_3201 new job=<开启线程数> 其中 <开启线程数> 表示编译时同时启动线程个数,CPU 核心越多,这个数字可以越大,注意这个数字过大会 增加系统调度负担。 建议: 单核CPU 双核CPU 四核CPU
V1.0.0

make p=rocky_3201 new make p=rocky_3201 new job=2 make p=rocky_3201 new job=3
Spreadtrum Confidential and Proprietary 20 of 30

Make/Build环境使用手册

双四核CPU

make p=rocky_3201 new job=5

6.6

分布式编译

SPRD makefile 支持 Xoreax IncrediBuild 分布式编译,可以充分利用网络优势,加快编译速度. 您只须在正常的编译指令后增加一个 ib=1 即可: ib= make p=rocky_3201 new ib=1 ib= 分布式编译没有建立依赖关系,所以当您执行make p=rocky_3201 m=app update ib=1 时,会重新编译所有 app模块文件 Xoreax IncrediBuild 似乎有Bug,代码路径中不要有括号,即使是单个括号也不可以,否则无法编译.

6.7

编译出错暂停

默认情况下,编译出错后将继续编译,并不听停下来。如果您需要makefile 支持编译出错暂停功能,请使用 stop参数编译,并赋值为1。命令示例如下: make p=rocky_3201 stop=1 new 目前停止的方式是调用DOS的 Pause,按任意键会继续编译,如果需要强行推出,需要按 Control+C.

6.8

特别提醒

由于目前生成 项目 宏的方式是读取 makefile 文件的方式转义,所以采用类似如下方式编译将导致编译结 果是错误的,特别提醒! 错误用法: make PROJECT=rocky_3201 JAVA_SUPPORT=NONE new 如果想对 MACRO 的值修改,必须直接修改 make 文件.

V1.0.0

Spreadtrum Confidential and Proprietary

21 of 30

Make/Build环境使用手册

7 模块修改及项目定制 模块修改及项目定制 修改及项目
这里涉及到前面谈到的关键脚本的修改,在大多数情况下开发人员针对模块或者项目的需要只需修改和补充 两类的关键脚本:模块编译脚本 项目编译脚本。 模块编译脚本和项目编译脚本 模块编译脚本 项目编译脚本

7.1

模块修改

在此,我们把出现在make/build环境中的最小编译单位称为模块,make/build系统中将以MS_Code/make目录下的 各个子目录名称作为约定的模块名称,这些子目录和各自的功能模块之间呈一一对应的关系。

7.1.1

模块目录结构调整

如果模块内部存储目录结构或者模块整体相对目录发生改变,则需要修改模块相应的模块编译脚本 模块编译脚本并修改 模块编译脚本 变量MSRCPATH,这里以模块aac为例: 在make/aac.mk中定义了: MSRCPATH = MS_Ref/codec/aac/src MS_Ref/codec/aac/src/decoder

这里MSRCPATH用来定义该模块源文件的搜索路径,如果该模块中源文件的路径发生了变化,就需要重 新定义MSRCPATH,确保模块编译需要的文件都包含在了搜索路径中。 如果涉及到头文件路径出现变化则需要重新定义变量MINCPATH,以确保模块使用到的头文件完全被包含 在了头文件定义路径之中。以aac.mk为例,其MINCPATH变量定义如下: MINCPATH = MS_Include/chip_drv MS_Ref/codec/aac/inc MS_Ref/codec/aac/src/decoder \ MS_Ref/codec/aac/src/aac_plus_inc

注:这里MSRCPATH和MINCPATH的相对路径都是以MS_Code作为上级目录而言的,所以需要按照这一约定给 出源文件或头文件完整的相对路径。

7.1.2

添加或删除文件

如果模块编译文件有添加或删除的需要,则需要修改变量SOURCES,可以将增加的文件直接添加在原有 的定义之后,如果是需要删除,则可以直接从定义中拿掉。以aac.mk为例,其SOURCES定义如下: SOURCES = aac_adp.c aac_lc_decoder.c bits.c cfft_tab.c common.c \ decoder.c filtbank.c huffman.c id3_parse.c \ is.c mp4.c mp4atom.c mp4ff.c mp4sample.c mp4util.c ms.c pns.c pulse.c \ specrec.c syntax.c tns.c internal_var.c 这里需要强调转意符\的用法 在这里表示续行 的用法, 在这里表示续行, 后不能有空格出现 后不能有空格出现, 最后一个文件后( 这里需要强调转意符 的用法, \在这里表示续行,在\后不能有空格出现,在最后一个文件后(这里为 internal_var.c)不应该再出现该符号。 )不应该再出现该符号。

7.1.3

修改编译选项

有时为了适应不同平台或者产品的需求,模块编译选项会发生变化,这时需要修改变量MCFLAG_OPT,通过不同 的编译选择来满足需要,以aac.mk为例,其MCFLAG_OPT定义如下: MCFLAG_OPT = -Otime -zc -D_AACARM_

这里的-Otime –zc属于该模块需要的编译器特殊选项,关于编译其他选项在前面的Makefile.rule中有描述,请参考 Makefile.rule中CFLAGS的定义。这里宏“_AACARM_”则属于模块自身的特殊选项。针对不同项目的需要 MCFLAG_OPT可以在这里进行相应的修改。 注意:对于“_AACARM_”这类模块内部定义的编译选项,需要在前面加上“-D”以示为编译选项。

V1.0.0

Spreadtrum Confidential and Proprietary

22 of 30

Make/Build环境使用手册

7.1.4

新增模块

一旦有了新的功能模块需要添加到make/build系统中,需要在MS_Code/make目录下同时建立对应该模块的子目 录,同时需要在该目录下完成和目录名称一致并以“.mk”为后缀结尾的模块编译脚本 模块编译脚本,该脚本的主要目标就是需 模块编译脚本 完成:MCFLAG_OPT、MINCPATH、MSRCPATH以及SOURCES(模块中有需要编译汇编文件的情况下还有 MASMFLAG_OPT)的定义,编写方法同前面的5.1.1—5.1.3小节。

7.2
7.2.1

项目定制
创建全新的项目编译脚本

1.在MS_Code目录下创建一个新的项目编译脚本 项目编译脚本,该脚本的命名规则必须是前缀“project_”+“项目名 项目编译脚本 称”+文件后缀“.mk”的形式,比如项目名称为abcd,则相应的项目编译脚本 项目编译脚本名称必须是project_abcd.mk。 项目编译脚本 2.MS_Customize/source/product/config 下创建以 projectname 为名的文件夹,并初始化好所有的项目定制 文件并注意修改 make/custom_drv/custom_drv.mk 3.project_ projectname.mk 中的 PRODUCT_CONFIG 变量值 指定为 “projectname”,如 abcd 4.在MS_Customize下创建新的.scf 文件 5.Version 下创建相应的 version.c 文件 6. 修改 \MS_Code\make\resource\resource.mk ,指定新的资源 7.修改 \MS_Code\make\nv_parameter\nv_parameter.mk ,指定新的NV信息

7.2.2

复制方式创建项目编译脚本

为了加快创建工程文件的过程,您可以基于一个已有的一个工程文件,复制后改一个名字基本就可以 编译通过了,在这个基础上配置您想要的工程配置。 为了让大工程复制后能编译通过: 为了让大工程复制后能编译通过: 在大工程中已添加变量 PRODUCT_CONFIG ,其用来指示具体的配置信息,值直接对应到代码 MS_Customize/source/product/config 下的具体目录名。 在大工程中已添加变量 PRODUCT_BASELIB_DIR ,其用来指示非开放Source 模块的.a所在的目录,其 值直接对应到 MS_Code\lib 下的具体目录名。使用这个变量目的是实现多个工程可以共用一套非开放Source 模块 .a 对scf文件,Resource,驱动文件目录,默认都是取变量 PRODUCT_CONFIG 对应的值; 对于nv 文件的特殊性,一般是用工程文件的名字来对应编译; 对非开放Source 模块的.a,默认取 变量 PRODUCT_BASELIB_DIR 值对应的目录 通过上面两个变量的设置,从而实现工程文件复制后可编译通过. 因此,当您通过复制方式创建一个新工程时,请考虑以下几项信息: 1. 请确认新工程中 PRODUCT_CONFIG 指定的目录是否需要修改,是否需要创建一个新的驱动文件集; 2. 请确认新工程中 PRODUCT_BASELIB_DIR 指定的非开放模块.a目录名是否需要修改; 3. 请确认新工程的nv是否需要修改,检查nv_parameter.mk 文件是否满足您的需要; 4. 请确认新工程的Resource是否需要修改,检查resource.mk 文件是否满足您的需要; 5. 请确认是否为新工程创建一个新的scf 文件 另外,对工程文件来说,第一优先搜索以工程名字项关联的scf文件、version.c文件、 MS_Customize/source/product/config 下的具体目录名。如果这个文件或目录不存在,则再搜索 PRODUCT_CONFIG 配置下的scf 文件、version.c 文件和config目录名。对非开放模块.a目录信息,也是以工 程名字项作为第一优先搜索。这样做的好处是对复制后的工程,如果将来想创建新的scf文件,version.c 文 件和config 驱动,或指定一个新的非开放模块.a目录,直接编译就可以自动识别,不需要修改make文件.
V1.0.0 Spreadtrum Confidential and Proprietary 23 of 30

Make/Build环境使用手册

7.2.3

添加或删除模块
如果需要从项目中去除不需要的模块,可以修改变量EXPORTLIBS或者COMPLIBS_DBG,比如:

EXPORTLIBS = \ aac bsd dc aac_lc !atc audioservice chip_drv dsp_codec admcm adpcm amr \ char_lib \ generic_tone \

bt_pal_csr digitalgain

custom_tone dtmf_tone img isp

custom_drv dv eq_exp

layer1 midi pcm scp ucom

layer1_dsp mpeg4_codec ps record !sim

img_proc mmk gui

l4 \ mp3 nvm \

main \

refbase sfs

rtos

scm ubot

scaling voice

transsamplerate

!tcpip \

upcc

version

xsr_port !nvparameter !fdl1 !fdl2 !bootloader

COMPLIBS_DBG = app 某个模块应该放在EXPORTLIBS中进行定义或放在COMPLIBS_DBG进行定义,取决于该模块对客户的提 供方式。其中在EXPORTLIBS中申明的模块表明这些模块将采用库文件的方式提供给客户,而COMPLIBS_DBG 的模块则表明会提供全部的源代码供客户进行开发。对于客户自己新增加的模块,则只能在COMPLIBS_DBG变量 中申明。 对于nvparameter、fdl1、fdl2、bootloader等是一些辅助的文件,只编译出来即可,不需要参与连接,则 只需要在对应模块前紧加上“!”符号即变成 !nvparameter !fdl1 !fdl2 !bootloader 就可以将这些模块排除在项目的 连接之外。如果需要在项目中增加新的模块,则只需要在将该模块名称列举到这个序列中,用空格和其他模块分隔 开即可。 注意:“\”符号后面应该紧接换行符而不能跟有空格,这个序列中的最后一个模块不能再带有“\”符号,

7.2.4

修改项目编译选项

展讯客户注意: 展讯客户注意: 注意 只有主Makefile Makefile中的 Customized)”区域的宏开关, 1. 只有主Makefile中的 “Feature Option(User Customized)”区域的宏开关,可以自行开关 任何非原则1中的宏开关(包括子makefile, 代码中), ),用户均 自行修改。如要更改, 2. 任何非原则1中的宏开关(包括子makefile, 代码中),用户均不可自行修改。如要更改,必须通知 展讯CPM,由展讯修改宏并重新编译版本发给客户。 展讯CPM,由展讯修改宏并重新编译版本发给客户。 CPM 比如对于rocky项目编译脚本 项目编译脚本定义了如下的变量: 项目编译脚本 PLATFORM SOUNDBANK IMGMULTIREGION NANDBOOT DUALSIM DUALLCD BLUETOOTH_SUPPORT BT_A2DP_SUPPORT SBC_DSP_SUPPORT RF_TYPE HALFRATE_SUPPORT
V1.0.0

= SC6600R = LOW_LELVEL = TRUE = TRUE = TOGETHER = TRUE = TRUE = TRUE = VERSION1 = AERO2 = FALSE
Spreadtrum Confidential and Proprietary 24 of 30

Make/Build环境使用手册

DUMMY_PCH_REPORT SBC_OVERLAY GPS_MODULE_SUPPORT OCR_SUPPORT TOUCHPANEL_SUPPORT JAVA_SUPPORT SDRAM_DBITS

= FALSE = FALSE = FALSE = FALSE = TRUE = FALSE = 16BITS

不同的项目可以按项目需要对上述变量进行相关修改。与此同时,不同的项目或平台需要选择不同的第三方库文件 参与链接,所以有必要修改变量3RD_LIBS,比如: 3RD_LIBS = Third-party/WAP2.0_YR/ARM_LIB/CmsBrowser.a Third-party/Wintone/RecoCore.o \

Third-party/WAP2.0_YR/ARM_LIB/CmsCommon.a Third-party/cstar/lib/csk2.a \ Third-party/WAP2.0_YR/ARM_LIB/CmsMMS.a Third-party/cstar/lib/csk2full.a \ MS_MMI/Source/ImageDecoder/Lib/ImageDecoder.a Third-party/WAP2.0_YR/ARM_LIB/libcrypto.a

7.2.5

客户发布及使用 客户发布及使用 发布及

为了兼顾展讯内部开发以及客户开发使用,make/bulid环境中在项目编译脚本 项目编译脚本中通过一个特殊的变量 项目编译脚本 SPRD_CUSTOMER 来进行区分,如果是展讯内部开发使用需要定义: SPRD_CUSTOMER 对于展讯客户需要定义: SPRD_CUSTOMER = TRUE = FALSE

这样客户可以不依赖某些模块源文件而完成编译链接。另外如前面指出的,对于客户自己新增模块,则需要在 COMPLIBS_DBG变量中进行申明。

V1.0.0

Spreadtrum Confidential and Proprietary

25 of 30

Make/Build环境使用手册

8 第三方编译选项说明
第三方软件提供商,请使用如下的编译选项来编译代码以配合Spreadtrum MOCOR 平台。 SC6600R 平台: noSTACKCHECK 版本: CFLAGS AFLAGS = -cpu ARM7TDMI -O2 -bi -g+ -apcs /interwork/ -fy -Ec -Wall = -cpu ARM7TDMI -keep -bi -g -apcs /shlclient/interwork/

STACKCHECK 版本: CFLAGS AFLAGS = -cpu ARM7TDMI -O1 -bi -g+ -apcs /interwork/swst -fy -Ec -Wall = -cpu ARM7TDMI -keep -bi -g -apcs /shlclient/interwork/swst

SC6600L 平台 noSTACKCHECK 版本: CFLAGS AFLAGS = -cpu ARM7TDMI -O2 -bi -g+ -apcs /interwork/ -fy -Ec -Wall = -cpu ARM7TDMI -keep -bi -g -apcs /shlclient/interwork/

STACKCHECK 版本: CFLAGS AFLAGS = -cpu ARM7TDMI -O1 -bi -g+ -apcs /interwork/swst -fy -Ec -Wall = -cpu ARM7TDMI -keep -bi -g -apcs /shlclient/interwork/swst

SC8801H 平台 noSTACKCHECK 版本: CFLAGS AFLAGS = -cpu ARM926EJ-S -O2 -bi -g+ -apcs /interwork/ -fy -Ec -Wall = -cpu ARM926EJ-S -keep -bi -g -apcs /shlclient/interwork/

STACKCHECK 版本: CFLAGS AFLAGS = -cpu ARM926EJ-S -O1 -bi -g+ -apcs /interwork/swst -fy -Ec -Wall = -cpu ARM926EJ-S -keep -bi -g -apcs /shlclient/interwork/swst

V1.0.0

Spreadtrum Confidential and Proprietary

26 of 30

Make/Build环境使用手册

9 相关使用技巧
9.1 查看log文件 文件 查看
make/build相关的屏幕输出同时也被重新定向输出到了各个模块的编译log文件中,一旦系统报告链接错 误:Could not open file build/rocky_dvb_builddir/lib/module_n.a,则表明模块module_n没有能够正确编译 完成,可以查看该模块的相关log,并查询“ error”或者“rule”相关的内容,查明出错的原因。

9.2

makefile 编译过程中报错: No rule to make target ` XXX ', needed by `yyy'. 编译过程中报错:
例如 make[1]: *** No rule to make target `guianim.o', needed by `gui.a'. 这个错误说明: 当编译gui.a 的时候,无法生成 guianim.o 原因是没有搜索到生成 guianim.o 所使用的源文件,这个文件可能是guianim.c , guianim.cpp, guianim.s 等。 根源有可能为: .mk 中宏使用不对 源文件不存在 makefile中源文件的搜索路径 MSRCPATH不完整导致make找不到这个源文件.

9.3

Makefile 中全局变量和转义宏的区分
默认,对大工程文件中类似如下的定义,makefile 会把他们转义成具体的宏参与所有模块的编译 export NANDBOOT_SUPPORT = TRUE ### Boot From Nandflash Support:

但,有时候我们只是想定义一个变量,并把这个变量的值传递到子make中,并不想转义成具体的宏参与编 译,这时候您可以按照下面的方式实现就可以了。区别是注释的 # 少于三个就可以。 export PRODUCT_CONFIG = rocky_3201 # MS_Customize/source/product/config;

9.4

Source Insight和ClearCase配置 和 配置 配置过程: 配置过程:
1、选择Source Insight的菜单Option中的Custom Commands; 2、在弹出的对话框中的Command列表中选择Check Out(或者点击Add自己起一个好记的名字)

V1.0.0

Spreadtrum Confidential and Proprietary

27 of 30

Make/Build环境使用手册

3、在Run命令行中添加如下命令(其他的命令请见后面说明): "C:\Rational\ClearCase\bin\cleartool" checkout -nc %f 其中,"C:\Rational\ClearCase\bin\cleartool"可能是需要修改的(如果你使用的不是ClearCase 的默认安装路径的话,就请改为自己指定的路径吧) 4、将Output多选框中的Capture Output和Control多选框中的Pause When Done都选中,这样才 能看到命令执行的结果。 5、将命令加入菜单项,点击Menu,在Menu下拉框中选择Work等(随便选就是了,至于添入那 个菜单项中就看个人喜好了)进行添加,通过选择Custom Cmd:Check Out,并单击Insert按钮 添加:

V1.0.0

Spreadtrum Confidential and Proprietary

28 of 30

Make/Build环境使用手册

Checkout操作: 操作: 操作
在Source Insight中打开视图上的源文件,单击work菜单下的Check Out,对该文件进行 checkout,会弹出checkout的操作:

其中:

Comments for the file’s checkedout operation是checkout时需要添加的注释信息,输入完
成后回车,然后再输入一个点.,再次回车,完成输入。 在Run命令行中添加的各种命令的具体写法如下: CheckIn: "C:\Rational\ClearCase\bin\cleardlg" /checkin %f CheckOut: "C:\Rational\ClearCase\bin\cleartool" checkout -nc %f Undo CheckOut: "C:\Rational\ClearCase\bin\cleartool" uncheckout -rm %f Version Tree:(使用这个命令时Capture Output和Pause When Done都可以不用选的) "C:\Rational\ClearCase\bin\cleartool" lsvtree -graphical -all %f Find: (查找当前目录及子目录下自己分支修改的文件) "C:\Rational\ClearCase\bin\cleartool" find %d -element brtype(your_branch_name) print Update File "C:\Rational\ClearCase\bin\cleartool" update %f Update View "C:\Rational\ClearCase\bin\cleartool" update –g compare preversion: "C:\Rational\ClearCase\bin\cleartool" diff -g -pre %f
V1.0.0 Spreadtrum Confidential and Proprietary 29 of 30

Make/Build环境使用手册

9.5

鼠标右键命令行快捷方式设置

将下面的文本存成CommandPrompt.reg 文件,然后双击导入到注册表即可 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Folder\shell\CommandPrompt] @="Command Prompt" [HKEY_CLASSES_ROOT\Folder\shell\CommandPrompt\Command] @="CMD /k cd %1"

9.6

DOS下输入命令时用 下输入命令时用Tab键进行命令自动填充 下输入命令时用 键进行命令自动填充

将下面的文本存成 DOSTAB.reg 文件,然后双击导入到注册表即可 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor] "CompletionChar"=dword:00000009

V1.0.0

Spreadtrum Confidential and Proprietary

30 of 30


赞助商链接
相关文章:
展讯工具操作说明指导_图文
4.打开下图的校准环境选项,配置校准仪器,端口,线损设置。 5.打开平台综测参数...展讯CPU芯片的几个常见必... 2页 免费 展讯MMI开发平台_总体介... 68页 ...
展讯调试工具使用心得
展讯调试工具使用心得_计算机软件及应用_IT/计算机_专业资料。展迅调试工具使用心得辛 琦 一、 简介 ChannelServer 和 Logel 是展讯公司提供的手机实时诊断和测试工具...
展讯平台开发说明
展讯平台开发编译代码的流程的说明,以及一些常用的命令~Build环境使用手册 环境...(make/simulator/simulator.ini) 配置文件,用来指示 模拟器工程与make工程在 ...
展讯学习文档
11 展讯学习文档 深圳五巨科技有限公司 1、展讯环境搭建 、 1.1、安装 ARM Developer Suite (ADS) version 1.2 路径:konka_ads12\ads12 安装步骤:双击 setup...
展讯LCD_tp_camera驱动移植
展讯LCD_tp_camera驱动移植_电子/电路_工程科技_...检查 adb 环境是否配置好 3、重新下载一次系统 九...基于V4L2的视频驱动开发 46页 3下载券 ©...
展讯项目测试思路
展讯项目测试思路_计算机软件及应用_IT/计算机_专业资料。总体环境描述:基于测试情况搭建环境三套,其中性能测试环境一套,使用目前研发调试用的虚拟机(64G 内存) 。...
展讯手机平台升级教程
展讯手机平台升级教程_信息与通信_工程科技_专业资料。介绍展讯芯片的手机平台升级...1.3 运行环境本软件运行于 Windows?2000 平台下,需要 PC 配置有至少一个可用...
展讯下载工具使用说明
展讯_客户下载工具使用说... 暂无评价 7页 免费 展讯下载工具使用说明V1......4. 如果需要下载 LCD 驱动, 则在设置对话框中, 在 LCD(智能机项目为 HWinfo...
展讯编译命令集
展讯新手移植文档新手移植参考文档一、 编译环境安装相关软件: (跟 MTK 环境...该命 令属于模块 开发人员最常用的命令,在具体模块开发中需要经常使用该命令来 ...
展讯_软件发布流程
展讯_软件发布流程_信息与通信_工程科技_专业资料。展讯_软件发布流程软件...建立项目工程: 二.建立项目工程: 建立项目工程 1.配置对应的.mk 文件: a....
更多相关文章: