展讯开发环境配置.doc_第1页
展讯开发环境配置.doc_第2页
展讯开发环境配置.doc_第3页
展讯开发环境配置.doc_第4页
展讯开发环境配置.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Comment r1 主标题 默认 Arial 中文 宋体 二号字体 加粗 段落 右对齐 右缩进为 3 27 字符 单倍行距 Comment r2 副标题 默认 Arial 中文 宋体 四号字体 加粗 段 落 右对齐 右缩进为 3 27 字符 单倍行 距 Comment r3 文字格式 默认 Arial 中文 宋体 四号字体 段落 右 对齐 右缩进为 3 27 字符 单倍行距 Make Build环境使用手册环境使用手册 Version 0 1 5 2009 10 21 修订历史修订历史 版本日期作 者审 核说 明 0 0 12007 12 11Daniel LuoCreate 0 022008 1 31Daniel Luo增加客户发布及使用内容 0 032009 03 10Mingjianliu基于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模拟器编译说明 提醒修改 工程 0 102009 05 30MingjianliuResource NV 说明更新 0 112009 07 08Mingjianliu 增加通过复制方式创建新工程说明 增 加 source Insight 与CC集成说明 增加 全局变量和转义宏的实现区分 增加第 三方编译选项说明 更新多套资源编译 说明 0 122009 08 19Mingjianliu 1 第三方逻辑部分独立成一个文件 Makefile third partyMakefile third party 2 编译 APP 需要调用 tools DEBUG TOOL BMP2Array 工具3 增加分布式编译说明 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 47 2 4 项目修改编译选项注意事项更新 项目修改编译选项注意事项更新 更新 NV编译选项说明 增加3 5 编译命令最编译命令最 大长度大长度 8K限制限制 0 152009 10 21Mingjianliu In分布式编译 路径不能有括号 担搁 括号也不可以 重要声明重要声明 版权声明版权声明 本文档中的任何内容受 中华人民共和国著作权法 的保护 版权所有版权所有 2006 展讯通信有限公司 保留所有权利展讯通信有限公司 保留所有权利 但 注明引用其他方的内容除外 商标声明商标声明 本文档中展讯通信有限公司的产品的所有商标是展讯通信有限公司专有 但注明属于其他公司拥有的商标除外 在提及其他公 司及其产品时将使用各自公司所拥有的商标 这种使用的目的仅限于引用 不作保证声明不作保证声明 展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证 而且不对特定目的的适销性及适用性或者任何间 接 特殊或连带的损失承担任何责任 保密声明保密声明 本文档 包括任何附件 包含的信息是保密信息 接收人了解其获得的本文档是保密的 除用于规定的目的外不得用于任何目 的 也不得将本文档泄露给任何第三方 目目 录录 1说明说明 6 2运行环境运行环境 7 2 1编译环境及安装相关软件 7 3编译架构编译架构 8 4目录结构及关键脚本目录结构及关键脚本 11 4 1make build环境的关键目录结构 11 4 2关键脚本 12 4 2 1Makefile rules 12 4 2 2Makefile modules 13 4 2 3Makefile third party 13 4 2 4Makefile verify 13 4 2 5Makefile 13 4 2 6make bat 13 5基本命令基本命令 14 5 1帮助 14 5 2编译参数中 projectname 与项目编译脚本对应关系 14 5 3编译整个项目 update 14 5 4重新编译整个项目 new 15 5 5清除所有编译结果 cleanall 15 5 6清除模块编译结果 15 5 7编译模块 15 5 8生成可执行文件 15 5 9编译FDL bootloader 15 5 10编译NV 15 5 11编译Resource 16 5 12编译手机模拟器工程 17 6其它命令其它命令 20 6 1编译Logel工具 20 6 2pclint 扫描 20 6 3编译完成net send提醒功能 20 6 4编译命令的简写 20 6 5多线程编译 20 6 6分布式编译 21 6 7编译出错暂停 21 6 8特别提醒 21 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第三方编译选项说明第三方编译选项说明 26 9相关使用技巧相关使用技巧 27 9 1查看log文件 27 9 2makefile 编译过程中报错 No rule to make target XXX needed by yyy 27 9 3Makefile 中全局变量和转义宏的区分 27 9 4Source Insight和ClearCase配置 27 9 5鼠标右键命令行快捷方式设置 30 9 6DOS下输入命令时用Tab键进行命令自动填充 30 1说明说明 Make Build环境中实现了项目开发和维护使用的GNU标准应用脚本 基于这些应用脚本和相关make工 具 Make Build环境可以完成项目全部代码的编译和二进制文件的生成 对其他一些需要的文件也可以在 Make Build环境中通过编译的方式产生 如fdl bootloader nv parameter resource等 Make Build的相关操作命令需要在Windows Command环境下进行 因为每个大工程编译出来的临时文件都独 立存放 所以可以通过开启多个Command窗口对多个不同的项目进行同时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 中各项配置均正确 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 define SUBLCD SIZE NONE Option2 96X64 define SUBLCD 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 Feature Options 的书写请严格按照上述的示例书写 当对工程中Feature Options转义的时候 对符合 下面模板的行都会转义 export NANDBOOT SUPPORT TRUE 示例如下 大工程 project rocky 3201 mk中有如下片段 代码中可以这样使用 2 Feature Options 只能出现在大工程中 在子make中定义和赋值都是无效的 并且会导致编译结果不正 确 3 Feature Options 只接受直接赋值 不能包含在条件语句中 4 Feature Options 只能赋值一次 3 编译的依赖关系编译的依赖关系 在统一方式编译下 系统会自动生成依赖关系文件 这些依赖关系文件存放在 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限制限制 注意 注意 Windows 环境最大只支持环境最大只支持8K长度的命令 所以请控制宏的数量 搜索目录的数量 防止命令行超长度的命令 所以请控制宏的数量 搜索目录的数量 防止命令行超 长而无法编译长而无法编译 4目录结构及关键脚本目录结构及关键脚本 4 1make build环境的关键目录结构环境的关键目录结构 MS Code build编译结果的输出总目录 rocky 3201 builddir和具体项目名称对应 自动生成的输出目录 dep编译依赖文件存放目录 img编译最终结果存放目录 包括arm bin 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 project存放目录 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 bootloaderfdl bootloader 存放目录 make build环境的关键目录如上图所示 所有相关代码和脚本都统一集中在MS Code目录下 下面将对特殊 的目录做些详细的说明 1 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 1Makefile rules Makefile rules中定义了绝大部分平台无关 模块无关以及项目无关的公共变量 其中包括编译器的指定 公 共编译参数的定义 文件复制 删除 目录创建等系统命令 公共头文件路径 SPRD库路径以及第三方库文件路 径等变量的定义 这些需要指出的是语句 ARM HOME C Program Files 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的所有操作命令都要在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 同时编译出来 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 下 方便下载到手机中 注意 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 define MAINLCD SIZE 240X320 Option2 240X400 define MAINLCD SIZE 240X400 export MMI RES DIR mmi res 240 x320 resource directory Option1 mmi res 240 x320 Option2 mmi res 240 x400 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 if MAINLCD SIZE 240X320 or 240X400 Option2 45X40 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 240 x320 资源 log文件名如下 mmi res 240 x320 font txt mmi res 240 x320 imag txt mmi res 240 x320 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 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 用来指示除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 赋值 ifeq strip CMMB SUPPORT TRUE macro set CMMB SUPPORT FALSE endif simulator ini 修改如下 DEL OPTION global if defined CMMB SUPPORT global CMMB SUPPORT endif 6其它命令其它命令 6 1编译编译Logel工具工具 对 SPRD 可以在MS Code目录下输入make PROJECT rocky 3201 MODULES logel clean update 对logel 工具进行编译 注意 编译这个工具需要 perl 5 8 注意 SPRD 客户无法使用该命令 6 2pclint 扫描扫描 对 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 make p rocky 3201 new 双核CPU make p rocky 3201 new job 2 四核CPU make p rocky 3201 new job 3 双四核CPU make p rocky 3201 new job 5 6 6分布式编译分布式编译 SPRD makefile 支持 Xoreax IncrediBuild 分布式编译 可以充分利用网络优势 加快编译速度 您只须在正常的编译指令后增加一个 ib 1ib 1 即可 make p rocky 3201 new ib 1ib 1 分布式编译没有建立依赖关系 所以当您执行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 NONEJAVA SUPPORT NONE new 如果想对 MACRO 的值修改 必须直接修改 make 文件 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 这类模块内部定义的编译选项 需

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论