MTK平台个人笔记
- 格式:doc
- 大小:593.50 KB
- 文档页数:55
1.如何判断手机中是否插入sim卡方法1:判断标志gInsertSimAppFlag是否为1,为1时,有SIM卡,为0时,无SIM卡方法2:if(g_pwr_context.PowerOnSIMStatus & MMI_SIM_STATUS_NOT_INSERT) return FALSE;elsereturn TRUE;方法3:IsSATPresent();为0时无SIM卡,为1时有SIM卡方法4:判断DRV_Reg(SIM_CTRL)的值,为1时有SIM卡,为0时,无SIM卡。
方法5:MTPNP_BOOL MTPNP_PFAL_Is_Card1Absent(void);MTPNP_BOOL MTPNP_PFAL_Is_Card2Absent(void);2.菜单隐藏的实现如在娱乐游戏下菜单隐藏,#if defined(DMG_SKIPEGG_DEF)if (0 == gInsertSimAppFlag){mmi_frm_unhide_menu_item(MENU_ID_FNG_SKIPEGG);}else{mmi_frm_hide_menu_item(MENU_ID_FNG_SKIPEGG);}#endifnItems = GetNumOfChild_Ext(MAIN_MENU_FUNANDGAMES_MENUID);//修改对应的三个函数为_Ext形式。
GetSequenceStringIds_Ext(MAIN_MENU_FUNANDGAMES_MENUID, ItemList);GetSequenceImageIds_Ext(MAIN_MENU_FUNANDGAMES_MENUID, ItemIcons);3.关于History手机中的屏幕流程都是顺序的,用户都是通过按键在屏幕之间切换。
这里有三种类型的屏幕切换,即1 向前移动向下一个屏幕的切换作为用户按键输入的结果。
2 向后移动向前一个屏幕的切换作为用户按键输入的结果。
MTK平台开发总结(全)声明:前阶段进行了近两个月的MTK平台上层开发,由于缺乏技术支持,对于整个平台的认识都是通过简略的文档和浅薄的经验摸索出来的。
其间整理了一些文档。
由于联发科提供的PDF全部是英文,有些名词难以翻译准确,只能凭单方理解和嵌入式开发的词汇习惯进行意译,还请谅解。
系列文章均出自原创,肤浅可笑之处,望海涵。
(一)窗体的重画通过观察可以发现,每个窗体模板都调用这样一个函数:dm_redraw_category_scree n()。
这个函数便是显示窗体的函数。
它内部的实现是这样的:获得该窗体所包含的组件及它们的属性,再根据组件的类型和属性,调用不同的接口,逐一绘制各组件。
详细流程如下图所示:由上面的流程可见,无论是窗体所包含的组件,还是组件的属性,都是根据模板ID获取的。
那么现在摆在面前的有两个问题:一、模板ID是如何传递到这个函数中的;二、模板ID和窗体组件、组件的属性,是如何关联到一起的。
我们逐一解决这两个问题。
一、模板ID是如何传递到这个函数中的模板ID,是Sho wCateg ory..Screen()过程中,所显示的界面的编号,千万不要与EntryNe wScree n(scrID,…) 函数中传入的窗口ID相混淆。
它们以―MMI_‖为前缀,被定义在枚举型结构MMI_CATEGORY_ID_L IST中,又通过结构体d m_data_struct和它的全局结构体变量g_dm_data,在应用程序中被广泛使用。
先看看结构体dm_data_struct的定义:typedef struct{S32 s32ScrId;S32 s32Cat Id;S32 s32fl ags;}其中,s32ScrId是当前窗口ID,也就是我们使用EntryNe wScree n()时传入的那个参数;而s32Cat Id才是模板ID;最后的flag,是模板需要显示软键盘、清屏等动作时,所置的标志变量,它在上面提到的那个dm_redraw_category_scree n()函数中被判断。
分类:LINUX一、【一】调试串口的设置驱动的调式过程经常需要通过trace工具看log的,trace前需要修改手机串口,有以下三种方法设置串口1 通过手机进入工程模式设置2 修改代码,修改Nvram_user_config.c中的NVRAM_EF_PORT_SETTING_DEFAULT[]3.通过META工具修改在连上meta:左上角选中NVRAM Editor,在跳出的对话框里选择other LID,再选择NVRAM_EF_PORT_SETTING_LID,接下来read from nvram,对话框右边就会出现串口的设置情况,对调tst_port_ps(输入0)和ps_port(输入99)的值,二【【二】关于gpio口Gpio的初始化在文件gpio_drv.c里,可以用MTK提供的工具配置也可以用代码在程序里直接操作,二者的选择要看有没有定义宏__CUST_NEW__工具初始化时要注意配置codegen.dws,该文件里配置的只是对gpio口的初始化,并不是所有的gpio口都要设置成工作时的模式,尤其是当作时钟和蓝牙部分的gpiio口,初始化时就设置成工作模式的话会造成电机电流过大的。
代码初始化时DRV_WriteReg()、DRV_Reg对gpio口寄存器操作,分别定义gpio口的模式,和方向(0:输入;1:输出),对单个gpio口操作用到以下函数(以gpio25为例):GPIO_ModeSetup(25, 0);设置GPIO25为模式0GPIO_InitIO(1,25);初始化GPIO25方向为输出GPIO_WriteIO(0, 25 );设值GPIO25输入低电平0三、【三】键盘设置1)键盘定义Keypad_def.c如果定义CUST_NEW,工具中的键盘定义对应在改文件里的KEYPAD_MAPPING(keypad_drv.h);2)硬件键盘定义与软件mmi键盘的对应nKeyPadMap[](Keybrd.c)3)工程模式键盘测试函数EntryFMKeypadTest()修改键盘测试时界面显示的键的名称1. 做好上面的第一第二两步2. FactoryModeSrc.c开始部分定义添加的键所要显示的名称,值,分别应用到keypad_layout[](确定要显示的位置),keypad_value[]3.在EntryFMKeypadTest()函数中的数组IdleScreenDigits[]里添加要显示的键4)如果要设置一个键不管在什么界面下都起作用的话(如手电筒开关或则其他需求)就需要在键盘的事件响应函数static voidKeyEventHandler(KEYBRD_MESSAGE *eventKey)里设置,根据键值条用相应的响应函数,不过该函数及时在锁屏状态下也会执行的,需要根据需要添加条件语句四、关于LCDlcm背光驱动分为两种控制方式:1. pwm这个是通过调占空比来调节亮度的持续信号;2. PFM这个是通过脉冲的个数来控制LCM背光亮度。
MTK初学必须了解的知识点为何 0836 的6225 一开始没有信号?m12196.c 里面 power on 、power off 的动作只针对6205有写过实际代码,但是对6225 及其他平台没有相应代码,修改即可CTA 软件应该开关哪些功能?对于目前很多公司而言,不希望花费很多金钱和时间去测试GPRS 、蓝牙等相关协议;版本号对于测试来说,一定要是相同的,不能变化1、去掉 GPRS 相关的功能2、去掉蓝牙相关的功能3、增加 CTA 版本号,并保证其在测试前后总是一直的。
4、增加免费游戏5、SP功能全部去掉。
CTA 版本号应该怎样做?1、CTA 版本号的目的是为了保证手机在CTA送测期间,被查询到的版本号一致,而实际的版本号通过另外的方式可以查询到,所以生成了一个CTA版本号。
2、由于我们有一个硬件版本号查询的接口,目前就借用了这样一个接口,因此我们实际上只需要修改硬件版本号及其查询字串,就可以用作 CTA 版本号的查询了。
3、硬件版本号查询字串修改,需要找到SSC_HW_VERSION 进行修改即可,而版本号则在对应的 VERNO.BLD 里面修改即可如何添加一个自定义的世界时间地区,如越南胡志明市?找到 resource_world_clock_city.c 中与项目对应的数组const TimeZoneStruct TimeZoneData[]在其中添加世界时间的一项(位置无要求,程序会根据时区重新排序的):{时区,地名字串,地名字串缩写,地名字串,地名字串缩写,1} 其中时区可以上网查,比如北京为东8区就为 +8 西区为负数地名字串,地名字串缩写是自己添加字串资源地图X坐标,地图Y坐标为找到我们实际用的地图背景,对应的地名 x,y坐标即可,用windows自带的画图工具就可查出来最后一个参数照填就行如何开启trace?1、手机端设置a、用工程模式字串,开启工程模式b、进入【设备】->【Set UART】->【uart setting】c、设定【TST-PS Config】等于【UART 1】,【PS Config】等于【无】,[TST-L1 Config】等于【UART 1】d、确定后,则手机端设置完成2、PC端设置a、打开CATCHERb、【Config】->【Set Database Path】,选中与手机软件对应的db文件c、【Control】->【Mode】->【Logging】,允许trace记录d、【Config】->【Configuration RS232】, 选择合适的COM 端口e、【Control】->【Connect】,则可以开始tracef、【Control】->【Set Filter】,设置需要显示的过滤器为什么第一次开机的日期格式和默认回复出厂设置的日期格式不一致?第一次开机使用 DATE_FORMAT 对应NVRAM里的值:恢复出厂设置是使用RESTORE_DEFAULT_DATE_FORMAT对应NVRAM里的值;文件:Nvram_cust_pack.c(注意要修改相关的项目配置文件)对应关系如下:0-----DD-MMM-YYYY1-----DD/MM/YYYY2-----MM/DD/YYYY3-----YYYY/MM/DD4-----YYYY-MM-DD5-----MMM DD,YYYY默认开启UART为trace使用1、目前在主干上面已在GPRS.MAK里面增加相应的宏,按需要把下面的宏设为TRUE即可:# uart 默认为debug 使用UART_FOR_DEBUG_DEFAULT = FALSE#默认关闭TRACE,即FALSESIMTECH_DEBUG = FALSE2、如果不是当前主干,则可以在Nvram_common_config.c 里面,找到NVRAM_EF_PORT_SETTING_DEFAULT将默认端口调换一下顺序即可,即:把 99 修改为 0,0修改为99,注意只能修改端口相关的 0 和 99 如何修改工程模式启动字串?查找 SSC_ENGINEERING_MODE,并修改其定义即可真机工程为什么在模拟器上面编译不过?1、target可以通过。
对于5.0的系统是要求的ubuntu 12.041 新代码第一步执行:source build/envsetup.sh (此命令完成一些命令的初始化,配置了android编译的环境)2 执行lunch 命令(选择平台编译选项,用来让用户选择编译项,类似于旧框架的./mk listp)3 输入所需要编译的工程(这里需要编译82平台输入20),会显示相关的一些信息(1)A: ProjectConfig.mk路径:alps\device\farsighted\fars6582_wt_l(2)B: Drvtool路径:alps\kernel-3.10\tools\dct(3)C: Codegen.dws路径alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\dct\dct(4)D: flash时序表路径:alps\device\mediatek\build\build\tools\emigen\MT6582(5)E: flash配置文路径:alps\bootable\bootloader\preloader\custom\fars6582_wt_l\inc(6)F: 背光,键盘灯配置文路径:kernel :alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\leds\ mt65xxlk:alps\bootable\bootloader\lk\target\fars6582_wt_l(7)G: TP驱动路径:alps\kernel-3.10\drivers\input\touchscreen\mediatekTP 用户头文件配置路径:alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\touchpanel\ GT9XX新增TP还需要在以下文件增加编译路径:***新增TP还需要在以下文件增加编译路径:alps\kernel-3.10\drivers\input\touchscreen\mediatek\ Makefilealps\kernel-3.10\drivers\input\touchscreen\ KconfigTP mk文件配置(8)H: LCM驱动存放路径lk:alps\bootable\bootloader\lk\dev\lcm\ mt65xx_lcm_list.c配置文件:Lk部分mk文件配置:alps\bootable\bootloader\lk\project\ fars6582_wt_l.mkBOOT_LOGO有两处alps\bootable\bootloader\lk\project\ fars6582_wt_l.mkalps\bootable\bootloader\lk\dev\logo\ rules.mkKernel部分:lcm驱动:alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\此目录下只放.c文件,不需要文件夹alps\kernel-3.10\drivers\misc\mediatek\lcma:链接obj alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\ MakefileB:编译路径alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\ mt65xx_lcm_list.cC:kernel mk文件配置路径:alps\kernel-3.10\arch\arm\configs\ fars6582_wt_l_defconfigKerner config配置建议使用menuconfig命令make dir outmake O=out fars6582_wt_l_debug_defconfig(这是对应的项目配置文件)make O=out menuconfig(进不去的同学可看看后面的补充)(9)I: CAMERA 配置:1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2 hal目录3 驱动目录4 涉及修改的文件MT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\imgsensor\inc\kd_imgsensor.hMT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\imgsensor\src\mt6582\kd_sensorlist.hMT6582_L0\alps\vendor\mediatek\proprietary\custom\fars6582_wt_l\hal\imgsensor_src\sensorlist .cppalps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\camera\camera\kd_camera_hw.calps\vendor\mediatek\proprietary\custom\common\kernel\imgsensor\inc\kd_imgsensor.h(10)J: Gsensor,alps配置:1 1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2 驱动目录MT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\alspsMT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\ accelerometer3 custom文件alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\accelerometeralps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\ alsps4 makefilealps\kernel-3.10\drivers\misc\mediatek\alsps\Makefilealps\kernel-3.10\drivers\misc\mediatek\ accelerometer \Makefilealps\kernel-3.10\drivers\misc\mediatek\Kconfig.drivers此makefife加了后menuconfig后才有选项(11)K: Sound 配置1 1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2alps\vendor\mediatek\proprietary\custom\fars6582_wt_l\hal\audioflinger\audio\audio_custom_exp .h3编pl模块需先把项目名赋值我拿到的代码是需要做如下修改才能正常运行menuconfig,如果你们的正常可以忽略以下:Menuconfig需修改的地方:1 MT6582_L0\alps\kernel-3.10\Makefile修改如下:2 安装sudo apt-get install libncurses5 libncurses5-dev3 make O(大写字母O)=out menuconfig****需注意的是,如果编完后关闭了窗口再重新打开编译都要运行一次source build/envsetup.sh lunch一些常用编译命令:make –j24 2>&1 | tee build.log (相当于new命令,编译过程会生成build.log文件在alps目录下)-j后面通常是编译主机CPU支持核数2>&1, 表示将标准错误重定向到标准输出tee :同时将LOG输出到控制台和文件preloadermake –j24 pl 2>&1 | tee pl.loglkmake –j24 lk 2>&1 | tee lk.logkernelmake –j24 kernel 2>&1 | tee kernel.log clean commondm ,mm ,mmm,mma打包命令。
MTK平台个⼈笔记1.MTK simulator的⼯程⽂件是 PixtelMMI.dsw。
2.打开PixtelMMI.dsw,检查⽂件default_Fmrdo.c、default_mmi_profiles.c、default_mmi_settings.c、default_version.c⽂件是否存在⼯程⽂件中,上述⽂件存放⽬录:项⽬所在⽬录\custom\app\MILAN_BB。
3.在调试运⾏过程中会提⽰某些DLL⽂件⽆法连接,这是VC没有安装。
DLL⽂件所在⽬录:VC安装盘\VC98\DEBUG。
把缺失的⽂件复制到window安装⽬录下的System32⽬录⾥。
4.运⾏MTK Simulator,选取File→Newwork Simulator,会运⾏MMINWSimulator;在MMINWSimulator菜单中,选取Menu→Messages,会弹出⼀个Send Event窗⼝,窗⼝⾥有⼀个Events列表,列表⾥有不同⽤途种类的Events;如果需要启动⼿机,选取BootUp Events,点击OK按钮,MTK Simulator模拟开机过程。
关于调试语句的说明kal_print语句:该语句只能打印字符串信息。
Trace_out语句:该语句可以输出格式化字符串。
ASSERT语句:断⾔语句。
Trace语句:可以输出格式化字符串。
关于MTK Target的编译连接批处理命令: Milan.bat 。
●概述在windows下,打开dos编辑窗⼝(开始->运⾏->cmd),找到⼯程代码所在根⽬录,如:E:\MTK6217 输⼊编译批处理命令:格式:make[custom="projectName"]"project" "action"["modules"]Example: make custom=mtk6217 gprs newModules:⽤于对单个模块进⾏编译的选项。
1.MTK simulator的工程文件是 PixtelMMI.dsw。
2.打开PixtelMMI.dsw,检查文件default_Fmrdo.c、default_mmi_profiles.c、default_mmi_settings.c、default_version.c文件是否存在工程文件中,上述文件存放目录:项目所在目录\custom\app\MILAN_BB。
3.在调试运行过程中会提示某些DLL文件无法连接,这是VC没有安装。
DLL文件所在目录:VC安装盘\VC98\DEBUG。
把缺失的文件复制到window安装目录下的System32目录里。
4.运行MTK Simulator,选取File→Newwork Simulator,会运行MMINWSimulator;在MMINWSimulator菜单中,选取Menu→Messages,会弹出一个Send Event窗口,窗口里有一个Events列表,列表里有不同用途种类的Events;如果需要启动手机,选取BootUp Events,点击OK按钮,MTK Simulator模拟开机过程。
关于调试语句的说明kal_print语句:该语句只能打印字符串信息。
Trace_out语句:该语句可以输出格式化字符串。
ASSERT语句:断言语句。
Trace语句:可以输出格式化字符串。
关于MTK Target的编译连接批处理命令: Milan.bat 。
●概述在windows下,打开dos编辑窗口(开始->运行->cmd),找到工程代码所在根目录,如:E:\MTK6217 输入编译批处理命令:格式:make[custom="projectName"]"project" "action"["modules"]Example: make custom=mtk6217 gprs newModules:用于对单个模块进行编译的选项。
如果没有指定,则对所有的模块进行编译处理。
如果指定了模块名,则对指定的模块进行编译处理。
后面的modules是nucleus之类的,可以不用写,中间的除了mtk6217工程名外可以照写,mtk6217工程名可以在你的源代码的make目录下有个工程文件名,比如我的例子就叫mtk6217_gprs.mak,你将你的替换就可以了,另外,除了上面的仁兄跟你说的ADS1.2以上 perl也要 5.**,我用的是ActivePerl-5[1].6.1.631-MSWin32-x86.msi名字的,你查找下载一下,最后你还需要安装VC6,这才能确保编译不出错。
New:全面的编译,包括了所有的资源,代码,会把生产的所有的obj都删除掉,重新产生;还有一些代码的拷贝,特别是资源和定义头,如:mmi_features.h 编译选项说明:1)New:全面的编译,包括了所有的资源,代码,会把生产的所有的obj都删除掉,重新产生;还有一些代码的拷贝,特别是资源和定义头,如:mmi_features.h2)update:主要是资源和代码的编译,一般不怎么用,比new要编译的少一点,也是比较全面的编译3)remake:这个最常用,如果你没有修改资源(图片、铃声、字符串),只修改了*.c文件,就用这个编译就可以了,会从新产生bin文件4)还有一个值得要说的是resgen,这个是专门用于编辑资源的,和remake编译配合(先resgen产生资源,再remake)比较快。
●Milan.bat执行流程1)Milan.bat:选择资源文件,根据资源文件得选项,复制不同得资源配置文件,并改名为custom_config.bld,根据用户选择得编译选项调用make.bat cus-tom=Milan gprs new/update/remake。
2)Make.bat:判断当前得操作系统后,调用相应得批处理 m_win2k.bat %*, %*表示调用make.bat命令行的所有参数作为m_win2k.bat的命令行参数。
3)M_win2k.bat:根据命令行参数设置环境变量DEFAULT_CUSTOM、CUSTOMER、PROJECT、ACTION等,生成了编译配置文件~labelbuild.tmp、~buildinfo.tmp、~cleanmod.tmp、~updatemod.tmp、~remakemod.tmp,调用命令:tools\make.exe-fmake\gsm2.mak -r -R CUSTOMER=%CUSTOMER% PROJECT=%PROJECT% %ACTION%,再milan这个项目编译处理中:%CUSTOM% = Milan,%PROJECT% = gprs,%ACTION% = new / update / remake 。
4)Gsm2.mak:1.包含其他的makefile文件:option.mak,~buildinfo.tmp,Milan_gprs.make,custom.bld,verno_Milan.bld,~cleanmod.tmp,~updatemod.tmp,~remakemod.tmp、comp.mak。
●关于Perl、ADSv1_2的路径设置Perl的搜索路径设置是在Milan.bat批处理中;ADSv1_2的搜索路径设置是在make路径下的文件Option.mak;●源程序编译配置文件在make目录下,.pth文件表示该模块下需要编译的源文件所在的相对目录;.lst文件表示需要编译的源程序的相对文件名;.inc文件表示头文件的路径;.def文件表示定义的条件编译宏。
如何在NVRAM增加一个保存记录的文件1.custom_nvram_editor_data_item.h(目录:MILAN0538\custom\app\MILAN_BB)2.nvram_user_defs.h(目录:MILAN0538\custom\app\MILAN_BB)3.nvram_user_config.c(目录:MILAN0538\custom\app\MILAN_BB)4.NVRAMEnum.h(目录:MILAN0538\plutommi\mmi\Framework\NVRAMManager\NVRAMManagerInc)MTK架构MMI|-----------|--------primitive basedprimitive interface|parameter converter|function interface L4A|----------------function based|L4C Layer 4说明:就是mmi和L4A是依赖primitive 通讯,即message ----primitive based;l4a和l4c用function call的方式联系---function based;layer 4就是一个中转站,中转各layer和mmi的通讯.MTK 6219手机解决方案由5部分组成1.L1 protocol2.device driver3.protocol stack4.MMI5.WAP Application;MTK 6219 solution 提供了3个测试工具1.Catcher2.META3.MCT。
MTK 6219 software solution可分为3部分1.MS Executable Software1.OS:OS Adaptation Layer;MTK采用的是Nucleus OS,OSL的目的是为了使MTK软件方案适应于Nucleus OS,在Nucleus OS的基础上封装了一层,该层就是OS。
2.L1 Protocal Stack:GSM Physical Layer,支持5-Series技术规范下的比特流发送。
为上层提供服务,Control the mapping 和调度逻辑通道和物理通道。
实现了TDMA framing和无线控制。
1)Layer 1 Asynchronous:处理来自上层的消息和将消息处理的结果发送给上层。
2)Surrounding Cell Engine:handles the neighbor cell powermeasurement and neighbor cell synchronization in-formation acquisition.3)Layer 1 Control: handles the TDMA scheduling on theradio environment, including timing advance and powercontrol command from serving base station.4)Layer 1 Driver: handles the DSP and Radio control.。
3.Drivers: Device Driver, like SIM,UART,GPIO etc. Driver为MCU所有的外围设备提供了控制功能接口。
该模块处理许多手机用户可见的操作,比如按键处理、LCD显示。
与L4 entity进行交互,提供在设备控制功能函数,用于访问设备的寄存器。
1)与MCU外围设备相关的1.SIM: Subscriber Identity Module2.UART: Universal Asynchronous Receiver/Transmitter3.SPI: Serial Port Interface4.GPIO: General Purpose Input/Output5.GPT: General Purpose Timer6.RTC: Real Time Clock7.WDT: Watch Dog Timer8.PWM: Pulse Width Modulation9.Alerter10.Keypad11.PMIC: Power Management IC12.BMT: Battery Charging Management task13.AUX task: Auxiliary task14.ADC Sched.: Analog to Digital Converter SchedulerB task: The USB 1.1 protocol and driver16.IrDA task: The IrDA and driver17.Camera: Camera driver for integrating with 3rdparty camera module18.MSDC: Memory card driver, supporting SD, MMC cardsand Memory Stick2)与MCU虚拟设备相关的1.Resizer: Software for controlling resizer engine2.Image DMA: Software for controlling the dedicatedDMA channels for images.3.Image Proc.: Software for controlling Image effectengine.4.G2D: Graphic 2D engine.5.LCD: LCD interface, support 4 layers.6.ISP: Support image process to compensate theLens/sensor effect.7.GIF decoder: Software for controlling hardware GIFdecoder.8.Mpeg4/H.263 codec: Software for H.263/Mpeg4 de-code/encode.9.JPEG codec: Software for controlling hardware JPEGdecoder/encoder4.L2/L3/L4 Protocol Stack: GSM Protocal Stack Layer . 该模块包含了许多GPRS/GSM的Requirement,为应用程式提供了一个GSM/GPRS平台;该软件平台能简单容易地通过AT命令使用Local MMI或PC控制。