BREW平台主要技术的分析与总结

本文深入剖析了美国高通公司的BREW平台,包括模块加载、事件处理、接口和回调机制四大技术。BREW模块通过MIF文件标识自身,动态加载时会调用AEEMod_CreateInstance()创建实例。事件处理基于事件驱动的协作式多任务模型,消息通过HandleEvent()函数处理。接口机制中,BREW组件间通过接口交互,接口定义了成员函数集合。回调机制在BREW中至关重要,用于异步操作如网络通信和定时器。理解这些机制有助于全面掌握BREW平台。
摘要由CSDN通过智能技术生成

BREW平台主要技术的分析与总结

摘要:2003年,美国高通公司在中国推出了BREW平台,在中国获得了快速的发展和应用。时间虽然不短,但是由于高通公司的种种约束以及BREW平台本身的诸多限制,使得许多开发人员对在BREW平台下进行开发不得要领。本文深入分析了BREW平台的主要技术以及实现机制,包括模块加载机制、事件处理机制、接口机制和回调机制,以期对BREW平台有深入透彻的理解,并对BREW的主要技术进行了总结。

关键词BREW;模块加载;事件处理;接口;回调机制

中图分类号TP311

 

1         引言

如今,手机已不仅是语音通信的工具,而且逐步成为数据业务开发与应用的平台,随着科学技术的不断更新和发展,如今手机已不仅仅是满足打电话的功能,而是更多地成为人们在工作、学习和生活中的助手。在这种情况下CDMA手机产生了一种新的应用平台,也就是由美国高通公司研发出的BREW平台[1]

BREW Binary Runtime Environment for Wireless(无线二进制运行环境)的缩写,是美国高通(QUALCOMM)公司为无线数据应用程序开发和执行提供的通用接口平台。它为制造商和开发人员提供了一套应用程序接口(API),可以随时对运行环境进行扩展,提供应用程序需要的各种附加性能模块[2]

BREW 包含两个系统,一个是在运营商的发布系统,也就是平时用mobile shop 访问的系统;另一个是在手机端的BREW 运行环境系统。不同的厂商对手机所配备的操作系统一般都是独立开发的(智能手机除外),之间可能是千差万别,然而它们都共同需要运行BREW程序,这就需要依赖一个的中间层存在,这个中间层对BREW 程序提供调用的接口,而把程序的调用事实上转化为对操作系统的系统调用或对底层硬件的直接访问,由于这个中间层基本上是一个调用的中转关系,因此它本身的体积是很小的,并在BREW 运行期间一直驻留内存为BREW 程序提供服务,这也就是为什么即使操作系统在BREW 运行期间不占用内存,应用程序也无法完全的使用内存。

 

2         BREW平台主要技术

2.1     模块加载机制

BREW中,Module是基本的执行单位,一个Module可以包含一个或多个Applet,或者多个Extension Class[3]。下面具体分析BREW是如何动态加载模块的。

1)        Module的信息

原则上来说,每个Module都需要有标识自身的MIF文件。

2)        枚举Module信息

这一步是在BREW环境初始化的时候进行的,由于通常在开机时就初始化BREW环境,所以枚举Module信息在开机时就进行。对于BREW通过检索各个MIF文件来获得各个Module的必要信息,比如ClassID等。ClassID是一个4字节的无符号整数,作为Module的唯一标识。

3)        Module加载

Module的加载是在运行时才进行的,即执行该Module的时候。Module的加载是通过调用函数AEEMod_Load()实现的,而AEEMod_Load()实际是调用AEEStaticMod_New(),该函数的部分代码如下:

int AEEStaticMod_New(int16 nSize, IShell *pIShell, void *ph, IModule **ppMod,

                     PFNMODCREATEINST pfnMC,PFNFREEMODDATA pfnMF)

{     

   AEEMod *pMe = NULL;

   VTBL(IModule) *modFuncs;

    ... ...

   // 初始化函数指针

   modFuncs->AddRef         = AEEMod_AddRef;

   modFuncs->Release        = AEEMod_Release;

   modFuncs->CreateInstance = AEEMod_CreateInstance;

   modFuncs->FreeResources  = AEEMod_FreeResources;

 

   // 初始化虚函数列表

   INIT_VTBL(pMe, IModule, *modFuncs);

   ... ...

   return SUCCESS;

}

在该代码片段中AEEStaticMod_New()BREW运行系统注册了四个函数,其中就有一个AEEMod_CreateInstance()函数,这样在每次BREW系统加载Module

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值