
mtk 开发
文章平均质量分 54
xinke87
知者不言,言者不知。塞其兑,闭其门;挫其锐,解其纷;和其光,同其尘;是谓玄同。放不可得而亲,不可得而疏;不可得而利,不可得而害;不可得而贵,不可得而贱;故为天下贵。
展开
-
ASCII对照表
<br />工作中居然又要查ASCII对照表。只得又复习一遍<br /> <br /> 0-9 的ASCII是: 48-57. 的ASCII是: 46大写A-Z是: 65-90小写a-z是: 97-122 和小写的差值刚好是32换行和回车是10和13<br />" 在VB中可以用 Chr(34) 来表示.<br /> <br /><br />原创 2011-05-03 14:30:00 · 2573 阅读 · 0 评论 -
MTK平台入门
<br /><br /><br /><br />MTK平台入门 <br /><br />1 简介1.1目的及其应用范围<br />本文档介绍了mtk平台的一些基础应用和实现,适用于刚参加mtk软件开发人员1.2术语定义<br />MMI – Man-machine interface,人机界面<br />FMI – Feature rich MMI,功能丰富的人机界面1.3参考资料<br />[1] MMI High level design specification, pixtel2 平台安装:<br转载 2011-02-24 17:13:00 · 1199 阅读 · 0 评论 -
回调函数
<br /><br />我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?这里结合自己的使用经历做一个简单的介绍。<br />使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定转载 2011-01-26 10:24:00 · 585 阅读 · 0 评论 -
MTK状态栏相关资料
<br /><br />1.1 状态栏<br /> 状态栏包含电池电量指示,信号指示,日期时间显示,运营商名字和各个状态图标显示。<br />电池电量显示:<br />图标ID为STATUS_ICON_BATTERY_STRENGTH<br />位于MainLCD/IdleScreen/Statusicons/battery 注意的是图标保证5帧。关于电量显示的控制位于<br />文件PoweronCharger.c<br />函数BatteryStatusIndication 根据当前的电量值设置显转载 2011-01-26 09:47:00 · 808 阅读 · 0 评论 -
MTK平台退出Screen的回调函数
<br /><br />MTK平台退出Screen的回调函数<br />接触MTK平台的人都知道MTK Application Screen的“入口”函数是EntryNewScreen,其中的一个参数为Exit Handler,根据字面意思的理解,这个函数应为退出Screen时的回调函数。<br />所以,一些有Win32开发经验的程序员很自然的想到利用这个回调函数来完成释放资源之类的处理,就如同Win32应用程序对WM_CLOSE消息的处理。<br />但是,这其实是个误区。<br />MTK的应用程序都转载 2011-01-24 10:14:00 · 840 阅读 · 0 评论 -
编译不能生成obj文件
<br /><br />编译的时候出现了一个错误 no rule to make target 'msf_dlg.obj',needed by 'build/uniscope35_09a/gprs/mt6235bo/lib/obigo03capp.lib' <br />一般出现这种错误是因为找不到.c文件。查看'msf_dlg.c文件是存在的。后来才发现时pth文件缺失了。复制一个过来 编译成功。原创 2011-01-25 11:11:00 · 6615 阅读 · 0 评论 -
idlescreen的一些函数的说明
<br /><br />一、进入ILDE界面<br />1.EntryIdleScreen() <br />2.mmi_idle_entry_idle_screen()<br /> 注册按键:HandleIdleScreenDigitEntry()<br /> IdleSetLRKey()注册左软件EntryMainMenuFromIdleScreen(),右软件mmi_phb_idle_enter_phb_list()<br /> 注册SEND键CHISTGetC转载 2011-01-21 10:36:00 · 1110 阅读 · 0 评论 -
MTK的铃声修改与替换
<br />这里只是简单介绍一下MTK的铃声。有关菜单,图片,字串,NV, 字库,主题了,有时间慢慢写。<br />MTK支持的铃声还是比较多的,常见的MP3,WAV,MID等等都支持。同时MTK既支持数组存储的铃声,也支持资源类型的铃声。不过习惯上我们一般都使用数组类型的铃声。所谓数组类型的铃声,就是把铃声数据按字节顺序存储在数组中,标明铃声的类型和长度,供播放函数使用。MTK主要支持的文件格式可以在项目中文件med_main.h中找到,大概包括以下几种:<br />enum{<br /> MDI_F转载 2011-01-20 10:55:00 · 1183 阅读 · 0 评论 -
MTK山寨机个性化DIY移植MRP初步探讨
<br />记得前几年还没有MTK,那时候对于手机的个性DIY很多都是三星等品牌系列!现在三星的DIY技术已经很成熟了!高手大把大把的!当年的情景和现在的MTK情况一样!但是对于MTK的DIY,好像很多人都不知道如何操作!本人有小小的心得,愿与高手们一起交流!<br /> 希望本文能达到抛砖吸引玉的目的!相信不久大家就会随心所欲打造自己的MTK了.好了,言归正传!下面只软件的简单应用举例说明:<br /> 比如你的手机上是不是有中国移动,中国联通这些字样!觉得它破坏了待机画面的美观啊?挺可爱转载 2011-01-20 10:13:00 · 1270 阅读 · 0 评论 -
MTK 中的NVRAM读写操作指南
<br />Nvram操作说明<br />Nvram性质和文件一样,不过,对它进行读写数据,在手机格式化后还存在。<br />1, 在Nvram_user_defs.h的 nvram_lid_cust_enum中添加自定义的lid名称可以用类似格式:NVRAM_MY_DATA_BYTE_ID<br />2,在这个文件中定义一个lid的size和total.<br /> #define NVRAM_MY_DATA_SIZE 512 //一个数据块的大小byte<br />#defi转载 2011-01-19 15:08:00 · 2116 阅读 · 0 评论 -
MTK开机流程 - MMI部分(VC模拟器)
<br /><br />MTK开机流程-MMI部分(VC模拟器)<br />基于53平台09A版本,通过VC模拟器调试,整理出一条大概的MMI开机流程,后续完善。<br />- 创建MMI task进程<br />mmi_create()<br />- MMI task初始化<br />MMI_Init()<br />mmi_frm_init_key_event() // 按键初始化<br />L4InitTimer() // 计时器初始化<br />setup_UI_wrap转载 2011-01-19 14:27:00 · 1232 阅读 · 0 评论 -
另一种MTK特效制作的方法,层复制
<br />对于MTK平台来说,菜单和屏幕特效曾经在很长的一段时间里,影响甚远。<br />但对于其设计过程和方法,由于各种各样的原因,很少有人提及。<br />这里介绍一种不同于前几天日志所载之方法的另一种方法,就是合并图层,其核心实现函数如下。<br />void my_gdi_layer_copy(gdi_layer_struct* dst_layer, int dst_x, int dst_y, int width, int height,<br /> gdi_layer_struct* src_l转载 2011-01-19 14:57:00 · 687 阅读 · 0 评论 -
MTK中使用的二分查找
<br />2011-01-19 1 typedef struct 2 { 3 U32 key; 4 U32 data; 5 }mmi_frm_pair_data_struct; 6 7 typedef struct 8 { 9 U32 menu_id; 10 FuncPtr hilite_hdlr; 11 }mmi_frm_hilite_hdlr_struct; 12 13 14 static转载 2011-01-19 14:44:00 · 515 阅读 · 0 评论 -
Idle界面
<br /><br />1,IDLE窗口是由两个层组成,一个是基层,一个是墙纸层,这一点可以使用gdi_layer_get_blt_layer_ext函数来获取当前窗口的层,所以如果我们需要创建新层,只能使用gdi_layer_create_using_outside_memory从外部Memoyr创建。<br />2.IDLE的代码由于改动的人多,看起来或者维护起来总是让人感觉那么的不爽,但一般情况下,最好不要尝试重写一个IDLE,可以在老的IDLE上修改。有很多变量都在IDLE上初始化,刷新,回调都在这转载 2011-02-27 10:13:00 · 3797 阅读 · 0 评论 -
MTK编程起步——开发中可能用到的一些东西
<br />加载过的字符串生成文件:<br />string_resource_usage.txt<br />加载过的图片生成文件:<br />image_resource_usage.txt<br /><br />SMS编辑界面,中间按键的显示:<br />mmi_sms_entry_editor<br />{<br />#ifdef __MMI_WGUI_CSK_ENABLE__<br />EnableCenterSoftkey(0, IMG_GLOBAL_SEND_MSG_CSK);<br />mmi转载 2011-02-27 10:15:00 · 5084 阅读 · 0 评论 -
如何快速确认一个缺失的ICON
<br />大家都知道,如果在代码使用到的ICON,而在image.zip中没有这个图片,或者格式不对,都会用一个默认的红叉ICON替代,在有些模块中这个ICON是很难确认在image.zip中那个路径下的,下面说下我的方法:<br /><br />下断点在getimage()函数中,通过函数调用堆栈确认大概的范围,通过这个getimage函数传过来的索引,在image_resource_used.txt中找到这个ICON对应的ID,搜索ID就很容易得知这个ICON的路径,对比这个路径的ICON,就可以知道转载 2011-02-10 13:46:00 · 851 阅读 · 0 评论 -
10a设置出厂时间
<br />同35,53平台一样。<br />位置 custom_hw_default.c<br /> <br />DEFAULT_HARDWARE_YEAR 修改连续的三个变量的值原创 2011-05-11 15:27:00 · 909 阅读 · 0 评论 -
mtk一些常见修改
真机工程为什么在模拟器上面编译不过?1、target可以通过。2、按照通常的步骤创建出模拟器3、编译不通过。为什么会这样?1、通常情况下,在没有添加SP的时候是可以正常编译通过的。2、对于某些SP,会存在没有vc的链接库的情况,导致链接不过。3、对于某些SP,会导致windos.h里面的BOOL等宏定义被重定义,以至编译失败4、某些我们自己田间的代码写法有问题,没有考虑target与模拟器的区别,别如直接调用了驱动的函数,而实际上在模拟器上面不存在这些函数.如何修改默认时区?同“如何修改默认城市”,因为没有原创 2011-03-18 13:42:00 · 1998 阅读 · 0 评论 -
第一次开机的日期格式和默认回复出厂设置的日期格式
<br /><br />第一次开机使用 DATE_FORMAT 对应NVRAM里的值:<br />恢复出厂设置是使用 RESTORE_DEFAULT_DATE_FORMAT对应NVRAM里的值;<br /> <br /> <br /> <br />文件:Nvram_cust_pack.c(注意要修改相关的项目配置文件)<br /> <br /> <br /> <br />对应关系如下:<br />0-----DD-MMM-YYYY<br />1-----DD/MM/YYYY<br />2-----MM/DD原创 2011-03-18 13:32:00 · 1230 阅读 · 0 评论 -
颜色配置
<br /><br />短信阅读界面信息头背景颜色:EMS_viewer_header_background_filler<br />颜色选择绘制:show_highlighted_inline_color_select_menuitem()<br />状态栏背景颜色:status_icon_bar_filler_defaultTheme<br />单行编辑器光标颜色:inline_edit_cursor_color_defaultTheme<br />单行编辑高亮背景颜色:inline_edit_focu原创 2011-03-18 13:40:00 · 734 阅读 · 0 评论 -
修改输入法的顺序 设置出厂时间
<br /><br />6223、6225 中 修改const sIMEModeDetails mtk_gIMEModeArray[] 数组中的元素顺序;const kal_uint8 DEFAULT_HARDWARE_YEAR = 9; //2009 出厂时间系统默认时间const kal_uint8 DEFAULT_HARDWARE_MON = 5;const kal_uint8 DEFAULT_HARDWARE_DAY = 1;custom_hw_default.c原创 2011-03-18 13:39:00 · 643 阅读 · 0 评论 -
如何设置UI界面元素的大小 为何有的时钟闹铃不是准时的
<br /><br />* GUI Configuration 配置都在这3个文件中;<br />* gui_switch.h <br />* / /<br />* gui_config.h wgui.h<br />6223C 08A 版本如上所述;<br />6225 gemini 同;MMI Framework provides simple and原创 2011-03-18 13:38:00 · 653 阅读 · 0 评论 -
如何修改音频参数
<br /><br />nvram_default_audio.c 增益设置<br /> <br /> <br /> <br />/* define Gain For NORMAL [Normal Volume Gain]*/<br />/* Normal: Call Tone, Keypad Tone, Microphone, GMI Tone, Speech Tone, Side Tone */<br /> <br /> <br /> <br />情景模式<br />1、NOR 对应Norm原创 2011-03-18 13:35:00 · 2942 阅读 · 0 评论 -
开启trace
<br /><br />1、手机端设置<br />a、用工程模式字串,开启工程模式<br />b、进入【设备】->【Set UART】->【uart setting】<br />c、设定 【TST-PS Config】 等于 【UART 1】,【PS Config】等于【无】,[TST-L1 Config】等于【UART 1】<br />d、确定后,则手机端设置完成<br />2、PC端设置<br />a、打开CATCHER<br />b、【Config】->【Set Database Path】,选中与手原创 2011-03-18 13:31:00 · 919 阅读 · 0 评论 -
添加一个自定义世界时间 地区
<br /><br />找到 resource_world_clock_city.c 中与项目对应的数组<br />const TimeZoneStruct TimeZoneData[]<br />在其中添加世界时间的一项(位置无要求,程序会根据时区重新排序的):<br />{时区,地名字串,地名字串缩写,地名字串,地名字串缩写,1}<br />其中 时区可以上网查,比如北京为东8区 就为 +8 西区为负数<br />地名字串,地名字串缩写是自己添加字串资源<br />地图X坐标,地图Y坐标为找到我们实际用原创 2011-03-18 13:28:00 · 807 阅读 · 0 评论 -
状态栏、拨号界面、快捷键
<br />1.1 状态栏<br /><br />状态栏包含电池电量指示,信号指示,日期时间显示,运营商名字和各个状态图标显示。<br /><br />电池电量显示:<br /><br />图标ID为STATUS_ICON_BATTERY_STRENGTH<br /><br />位于MainLCD/IdleScreen/Statusicons/battery 注意的是图标保证5帧。关于电量显示的控制位于<br /><br />文件PoweronCharger.c<br /><br />函数BatterySt转载 2011-02-22 17:39:00 · 2384 阅读 · 0 评论 -
MTK模拟器编译缺失pdb文件
<br />查看缺失的是哪个模块的pdb<br />然后把那个模块的所有obj文件全部删除<br />重新编译那个模块就行了。原创 2011-02-15 09:01:00 · 804 阅读 · 0 评论 -
MTK lis文件的妙用
<br /><br />学习一个新的平台,总被复杂的调用关系,一大堆的宏所困扰.以MTK为例.在一个版本中集中了非常多的功能,又有不同的芯片功能,程序显得繁复.这种情况对于一个初学者来说就显得很复杂.有无从下手的感觉.<br /> 刚开始时,我也觉得代码不好看.后面发现了一个有用的文件lis.这个文件和bin文件都在build目录下.这个文件指出了交叉引用关系.实际上这是一个ADS固有的功能,对所有以ADS编译的平台都是一样的.以开机初始化为例.<br />#if defined(KAL_ON_NUCL转载 2011-03-06 22:21:00 · 1723 阅读 · 0 评论 -
ADD_APPLICATION_MENUITEM() 和MENUITEM2()的异同
<br />MTK添加菜单有两个宏<br />ADD_APPLICATION_MENUITEM()<br />ADD_APPLICATION_MENUITEM2()<br />他们之间有什么区别呢?<br />首先是结构不同:<br />ADD_APPLICATION_MENUITEM 需要要指明子菜单个数。例如下面第三个参数为子菜单个数<br />ADD_APPLICATION_MENUITEM((MENU_BARRING_OPTION,<br />转载 2011-01-20 11:18:00 · 721 阅读 · 0 评论 -
MTK资源管理
<br />使用MTK作开发,常常不可避免和资源打交道,常使用的资源有字串,图片,字体,菜单,风格,声音等,MTK好像没有系统的专门的资源管理工具,导致资源管理十分凌乱而容易出问题,虽然有些牛人也开发了一些工具来管理这些资源,但由于使用不便或者其他一些原因,比如资源由大量的宏控制,以及修改维护的人多,还有一些其他各种各样的原因,导致资源的管理难度呈几何级增长。特别是如果一个人临时接手管理别人的项目,往往很容易被别人资源里的宏搞的焦头烂耳,如果资源出问题,也往往费时较多。<br />添加资源是一件很EASY的转载 2011-01-20 11:03:00 · 731 阅读 · 0 评论 -
MTK开发中学习资源分配,菜单,字符串,对话框的综合例子
<br />1.声明各种ID(字符串ID、屏幕ID、图片ID):<br /><br /> a. 增加字符串ID的声明:<br /> plutommi/mmi/Setting/SettingInc/SettingDefs.h<br /> enum STR_SETTING_LIST<br /> {<br /> }<br /> 的最后添加:<br /> STR_MY_SETTING,<br /> STR_MY_SETTING1,<br /> ST转载 2011-01-19 17:23:00 · 1205 阅读 · 0 评论 -
SetKeyHandler 与 SetLeftkeyHandler的区别
<br /><br />牵涉到的常用函数:<br /> void SetKeyHandler( FuncPtr funcPtr, U16 keyCode, U16 keyType );<br /> void SetLeftSoftkeyFunction( void (*f)(void), MMI_key_event_type k );<br /> void ChangeLeftSoftkey( U16 s, U16 i );<br /> <br />1. SetKeyHa原创 2010-12-24 14:44:00 · 1618 阅读 · 0 评论 -
对MTK的层简单封装以方便使用
<br /><br />MTK的很多有关图层显示的函数,座标都是采用的相对座标,这一点在对于需要频繁改变座标的场合和一些复杂的界面设计中,使用起来十分的不方便。<br />我们可以采用一些方法对这些函数进行简单封装,以符合我们的使用习惯。<br />比如下面的函数,我常常这样做:<br />void new_gdi_layer_set_clip(S32 x1, S32 y1, S32 x2, S32 y2)<br />{<br /> S32 x, y;<br /> gdi_layer_get_positio转载 2010-12-24 14:07:00 · 570 阅读 · 0 评论 -
MTK手机软件系统的配置
<br /><br /> MTK手机软件系统的大部分配置都已经确定,基本上不需要再改变,一般是MTK发布新的版本时会作些改变,客户不大需要关心。最主要的配置文件是Option.mak,而客户化定制需要需要修改的主要是_.mak、REL_CR_MMI_.mak这两个文件。<br /> <br /> Option.mak文件中设置了工程构建时用到的编译器、链接器、库管理、二进制文件生成等工具的路径和可执行程序名,设置了基本的编译链接参数,指定CPU类型(ARM7EJ-S),确定最终使用的库列表(COMP转载 2010-12-24 10:55:00 · 731 阅读 · 0 评论 -
MTK软件编译
<br /><br />打开dos编辑窗口(开始->运行->cmd),找到工程代码所在根目录,如/opt/MTK6217 输入编译批处理命令:<br />格式:make[custom="projectName"]"project""action"["modules"]<br />Example: makecustom=mtk6217 gprs new<br />给个MTK的make方法<br />后面的modules是nucleus之类的,可以不用写,中间的除了mtk6217工程名外可以照写,原创 2010-12-27 12:25:00 · 2471 阅读 · 0 评论 -
资源文件显示错误都可以从编绎资源文件的临时文件中找到原因
<br /><br />使用MTK作开发,常常不可避免和资源打交道,常使用的资源有字串,图片,字体,菜单,风格,声音等,MTK好像没有系统的专门的资源管理工具,导致资源管理十分凌乱而容易出问题,虽然有些牛人也开发了一些工具来管理这些资源,但由于使用不便或者其他一些原因,比如资源由大量的宏控制,以及修改维护的人多,还有一些其他各种各样的原因,导致资源的管理难度呈几何级增长。特别是如果一个人临时接手管理别人的项目,往往很容易被别人资源里的宏搞的焦头烂耳,如果资源出问题,也往往费时较多。<br />添加资源是一件转载 2010-12-24 14:50:00 · 541 阅读 · 0 评论 -
MTK 开发入门资料 概述
<br /><br />编译工具和辅助工具:<br />ADS1.2<br />ADS12_update_842.exe<br />MSYS-1.0.10.exe<br />MinGW-3.1.0-1.exe<br />ImageMagick-6.2.5-5-Q16-windows-dll.exe<br />7z313.exe<br /> <br /> <br />开始编译:<br />切换到项目根目录,然后在命令行下面执行命令:<br />make custom=proj gprs new<br />其中转载 2010-12-24 12:18:00 · 1337 阅读 · 0 评论 -
调试信息
<br />常用函数<br />PRINT_INFORMATION,PRINT_INFORMATION2.<br />---------to print out the %s stringtype.<br /> <br /> <br />MMI_TRACE<br />--------to log trace information原创 2010-12-27 14:34:00 · 500 阅读 · 0 评论 -
进入和退出屏幕模板程序
<br /><br />// 文件名: EntryAndExitFunciton<br />// 描述 : 进入和退出屏幕模板程序<br />// 函数 : EntryNewMenu<br />// ExitMyAppMenu<br />// ExitNewMenu<br />// 以下是模板中使用的ID<br />// 菜单ID: MENU_ID_MYAPP_NEW<br />// 图标ID: ICON_ID_MYAPP_NEW<br />// 字串ID:转载 2010-12-24 14:02:00 · 538 阅读 · 0 评论 -
DM模板使用心得
<br /><br />DM模板的一般使用方法见某牛人所著<<MMI实例培训教程>>,这里仅讨论一些零碎的使用心得<br />1. 很多ShowCategoryXXXScreen函数都调用ShowListCategoryScreen,使用改函数可简化模板的绘制工作,<br /> 现在分析一下ShowListCategoryScreen到底做了什么工作:<br /> (1) 设置Title<br /> 将title文本及图标数据-->全局变量MMI_title_stri转载 2010-12-24 13:57:00 · 1056 阅读 · 0 评论