Qualcomm 平台 AEE 运行机制的深入剖析
chh@amoi.com.cn
2004-11-15
前言
本文利图对 Qualcomm 平台的 AEE(Application Execute Entironment)做一个深入的研
究与分析,便于大家了解整个 Brew 平台的 App 调度机制和资源管理机制,从而方便大家以
后在 Brew 平台上面的的应用程序开发工作。
一. 名词解释
a) Brew:无线二进制运行环境
b) Applet:AEE 执行环境里面的一个调度,或者说执行单元
c) Task:操作系统层面的一个任务
d) Rex:操作系统
e) AEE:应用程序执行环境
二. 关键技术分析
a) AEE 在操作系统层面,没有独立的 Task,它只不过是依附于 ui_task 的一个函数调
用罢了;
b) 一个 Applet 是否活动,不是指它是否可以占有 CPU,而是指它在 AEE 层面,是否
是 Active(可以拥有 LCD 和键盘);
c) AEE 也好,Applet 也罢,它们只不过是一套静态代码而已,因此,谁调用它,它
就将在谁的上下文(Task 层面)运行,因此从这种角度来讲,Brew 平台的 Applet
没有 Active 和 DeActive 而言,每一个 Applet 都可以得到执行权(只不过不一定是
在 AEE 的上下文运行);
d) Rex 不是分时操作系统,所以,一个 Task 假如不主动释放 CPU 的话,其它任务将
无法得到执行权;
e) AEE 内部有一些全局组件,这些组件可以通过 IShell 组件来隐式操作,目前最为
重要的,大家只需要知道 AEE 内部维护了一个消息队列就 Ok 了;
f) 消息和回调从本质上是一回事,发送一个消息给一个 Applet 和调用 Applet 里的一
个回调函数,两者在本质上是一回事;
三. AEE 任务调度机制分析
在 ui_task 的适当时候,它将调用 AEE_Init()将 AEE 运行环境初始化起来,到此为
UnRegistered