仅次于德州仪器及高通公司。若只计算MTK进入全球GSM手机芯片的市场规模,大约省7亿~8亿部手机,市场占有率已高达20%以上,排名仅次于德州仪器公司。
在目前MTK市场上,MTK6225平台占据主导地位。该系统的主要功能如下:
①任务管理。系统任务采用静态创建方式,静态配置任务优先级、栈大小、任务全局唯一ID等;不提供动态创建Task的方式;任务内部以及任务之间的通信通过内部事件队列和外部事件队列完成。
②内存管理。平台不提供动态分配内存的方式;应用程序需要使用动态分配内存时,可以采用以下几种方式:与系统其他模块共享内存,典型的是使用MED模块的内存;定义一个静态数组,交给系统adm托管,然后调用kal_adm_alloc、kal_adm_free等内存操作函数实现动态内存分配;定义一个静态数组,应用自己实现基于此数组的分配和管理,也就是实现自己的内存管理模块。
③事件机制。平台事件机制采用“
注册一回调”机制,把需要处理的各个按键、触摸屏等通过系统函数注册,当有事件发生时系统调用所注册的监听者。
④UI。系统MMI层提供了丰富的UI元素,如各种消息框、
列表、图标等。
⑤系统局限性。MTK6225平台只有一种中文字体,字体大小固定。平台设计
2.1平台功能分析
在MTK平台上实现J2ME运行环境,需要实现的功能如下:
①应用程序管理。Java拥有丰富的应用程序,平台需要管理这些应用程序,因此要实现应用程序管理系统。应用程序管理系统功能包括程序的安装、删除、运行、下载等。
②虚拟机的实现平台。嵌入式Java虚拟机的实现平台有多种方式。它可以直接嵌入到裸机上,也可以加载于其他嵌入式操作系统之上,成为一台抽象的
计算机。它的平台无关性给它带来了巨大的发展前景。经过研究,在MTK平台上,采用SUN公司公布的KVM作为核心,结合虚拟机所需要实现的功能和MTK平台,移植接口,最后在MTK平台
上运行KVM,在KVM之上运行Java应用程序。
2.2平台框架设计
系统平台由应用程序管理系统(ApplicationManagementSystem,AMS)、KVM核心(KVMcore)、KVM移植接口层、MTK系统平台构成。平台框图如图2所示。
移植接口层包含以下部分:
①文件系统部分,对文件操作,实现创建、打开、关闭、读、写等功能。KVM在运行的时候需要通过这部分接口使用本地文件,如打开jar、jad文件等。
②网络部分,提供Socket访问功能。
③外部事件,获取用户输入,包括按键输入和触摸屏输入。
④图形显示部分,负责KVM图形及文字显示。
⑤系统时间部分,提供给KVM精确的系统时间。
⑥输入法,Java程序运行时可能要求用户输入,此接口实现调用系统输入法功能。
⑦其他接口,内存访问、交互性事件通知以及扩充的JSR实现所需要的接口,如JSRl20、JSRl35等。
2.4应用程序管理系统设计
应用程序管理系统管理整个Java运行环境,实现如下功能:
①显示应用程序列表,展示给用户当前手机系统的所有可用的应用程序。
②应用管理功能选择菜单,菜单应包括两种类型,分别是程序已经安装好的菜单项和程序还未下载,只有jad文件在本地,需要向服务器请求下载应用安装后才能运行的菜单项。
③下载应用,与服务器通信下载用户选择的应用。用户启动Java应用流程如图4所示。
根据UI和engine的划分,可以把应用程序管理系统分为应用程序管理界面和应用管理系统核心:应用程序管理界面提供给用户交互式界面,包括管理系统主界面、程序下载界面、程序运行界面、管理功能菜单以及各级子界面;应用管理系统核心由实现功能的一系列API组成,提供给上层界面调用,实现程序的下载、安装、删除、运行等功能。3平台的实现
3.1Java虚拟机移植的实现
在实现内存管理模块时,由于平台不提供动态分配内存方式,而虚拟机需要一块比较大的内存,不能从MED模块分配,且根据需要会对内存进行压缩整理,不适合采用系统托管方式。所以,采用虚拟机自己管理内存的方式,实现内存管理模块。
KVM就像一个软处理器一样控制解释Java字节码和它的执行状况,每一个创建的Java线程在Java堆中都会有各自的线程执行栈,并且由KVM运行来调度管理。为了使KVM能尽量正确地划分时间片,需要给一个时间标准作为KVM的内部时钟,由时间接口实现。系统提供voidkal_get_time(kal_uint32*tieks_ptr)函数,可精确到1个ticks(4.615ms)。