高通平台编译方法.doc

  • 格式:doc
  • 大小:40.00 KB
  • 文档页数:6

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Qualcomm平台编译之我见

jinjing.zhao@ 一、平台简介

高通平台的应用层的开发是在brew上进行的,brew提供了很多接口供应用层调用相关的api。高通平台的思想是用c语言实现面向对象的功能,具体通过结构体以及虚表来实现。在oem层中实现具体的api函数,用来填虚表。通过oem层以及service代码的修改,来实现上层应用具体需要的功能。

为了开发界面的方便,高通又在brew的基础上推出了buit,包括widget(控件),form (窗体),decorator(修饰),container(容器)以及model(模型)。

bar文件:资源文件,用高通自带的工具生成,程序运行的时候从此文件中读取字符串以及图片。可以将此文件放到文件系统中,也可以将此文件编译成.c文件,然后再编译成.o 文件,放到代码段里面去。

Mif文件:module imformation file,存放模块的相关信息。可以将此文件放到文件系统中,也可以将此文件编译成.c文件,然后再编译成.o文件,放到代码段里面去。

二、编译解析

平台的编译命令放在了\build\ms目录下。

可以有两种编译方法:一种是使用cmd命令,还有是在cygwin下使用bash脚本。但道理都是一样的,就是执行一个makefile文件dmss6250.mak。

顺序如下:

1)运行cmd,cd到\build\ms目录下,键入ads12;

ads12是个批处理命令,功能是为ads1.2,perl,以及gnu设置编译环境变量。

2)执行****.cmd命令。

1、dmss6250.mak

整个编译过程就是在执行这个makefile。

在这个makefile的开头处,我们可以看到

include dmss_flags.min

include dmss_$(ASIC)_flags.min

include incpaths.min

include armtools.min

include dmss_objects.min

包含的这些文件初始化了一些编译选项,编译路径,编译工具,以及包含要编译模块的min文件。

在添加模块的时候需要修改:

incpaths.min:

添加<模块的路径变量>= $(SRCROOT)/apps/

在ALL_PATHS中添加<模块的路径变量>。

ALL_PATHS是编译时的查找路径,这是高通的默认做法,在编译的时候,每编译一个文件都会到ALL_PATHS的所有目录下去寻找,因此严重降低了编译的速度。为了提高编译速度,可以考虑书写一个脚本,在编译的时候将所有的头文件考到一个文件夹下面,指定arm编译的时候到这个文件夹下面搜寻头文件。

dmss_objects.min:

添加include <模块的路径变量>/<模块的min文件>

每个模块都至少有一个min文件,如alarm:

#-------------------------------------------------------------------------------

# Alarm

#-------------------------------------------------------------------------------

ALARM_SOURCES=alarm.c \

Alarm_EditForm.c \

Alarm_EditPeriodForm.c \

Alarm_EditWeeklyForm.c \

Alarm_ListForm.c \

Alarm_ViewForm.c \

Alarm_SetTimeForm.c\

Alarm_StatusForm.c

ALARM_OBJS := $(addprefix $(TARGETDIR)/, $(ALARM_SOURCES:%.c=%.o))

$(ALARM_OBJS): APPFLAGS = -DBREW_STA TIC_APP -DAEE_STATIC

ALARM_DEPS := $(addprefix $(TARGETDIR)/, $(ALARM_SOURCES:%.c=%.dep)) $(ALARM_OBJS): APPFLAGS = -DBREW_STA TIC_APP -DAEE_STATIC

vpath %.c $(ALARM)

dmss6250.mak:

如Alarm在OBJECTS2中添加ALARM_OBJS。

在dmss6250.mak 文件的最后一行我们可以看到include dmss_rules.min,在这个文件中出现了makefile的目标,依赖和命令。

2、dmss_rules.min

目标:

all : dmss(在dmss6250.mak中)

dmss : setup prereqs firmware vrfiles deps libs copybar exe hex

由此可知,此makefile依次执行setup prereqs firmware vrfiles deps libs copybar exe hex,这些东西在编译过程中都可以看到。

主要说明以下几点:

deps:

此目标用于生成所有的依赖规则,最终都放在****.dep中,然后通过-include $(TARGETDIR)/$(TARGETDIR).dep使用依赖规则。

exe : $(TARGET).$(EXETYPE) $(LINK_TYPE)

此目标实现了编译和连接,直到生成elf文件。

Hex:

此目标将elf转化成可供QPST(高通提供的下载工具)下载的hex文件。

3、image文件的生成