MTK学习笔记
300条MTK工作笔记
(__ON__)
魔音通话: VOICETONE_PITCHSHIFT = TRUE g_imui_ui_param.imui_bottom = MMI_content_y + MMI_content_height - 1-100; handle_inline_full_screen_edit_complete 7900 修改 imui.c 这个文件 34.关机时退出系统: QuitSystemOperation (shutdownapp.c) 35.来电黑名单: CFG_MMI_CM_BLACK_LIST 36. 如果没有触摸屏,请注意将手写也关闭掉,否则编译不过 TOUCH_PANEL_SUPPORT = NONE HAND_WRITING = NONE HAND_WRITING_CHS_SUPPORT = FALSE 37.打印 出错信息 MMISWChangeWarning 38.开机搜索界面 ShowCategory120Screen 39. 23 平台上的拨号大字体 #define CFG_MMI_PHB_GENERIC_MULTI_SELECT (__OFF__) 这个宏打开时,发短信从电话簿选择的时候,会有两个选项,无触摸屏时关掉 CFG_FULL_DIAL_SCREEN_WITH_PICTURE 40. 发短信时,从电话簿添加 mmi_sms_recipient_add_from_contacts
20.手电筒的宏: FLASHLIGHT_TYPE
21.出厂时间:custom_hw_default.c const kal_uint8 DEFAULT_HARDWARE_YEAR = 8; //2008 const kal_uint8 DEFAULT_HARD8 DEFAULT_HARDWARE_DAY = 1; 22. 双卡双待: 只有一个拨号键的时候,需要弹出选择拨号界面 SENDKEY_MODE = SINGLE_KEY_SELECT_MENU #SENDKEY2_SUPPORT 有两个拨号键的时候: SENDKEY_MODE = SENDKEY2_SUPPORT #SENDKEY2_SUPPORT 23.智能拼图 #define CFG_MMI_GAME_PUZZLE (__AUTO__) 24. 相机设置的默认值: MMI_features_camera.h #define CAMERA_DEFAULT_SETTING_BANDING CAMERA_SETTING_BANDING_60HZ 25.开关机图片格式: #define CFG_MMI_RES_TYPE_POWER_ONOFF_SEL (__RES_TYPE_GIF__) 26. 号码归属地存于 T 卡中 #define GFG_MMI_INCOMINGCALL_DATA_IN_TCARD (__AUTO__) 获取手机号码归属地的函数: FetchMobileHomeArea
MTKDVD代码知识学习新手上路
DVD新手ABC写这篇文档是为以前没有接触过dvd项目的工程师提供一些咨询,让你们能够在最短的时间里上手。
在这篇文档里面包括以下内容:一、DVD的软件/硬件平台二、配置样机三、程序的调试四、程序的DownLoad五、系统的软件流程六、点亮dvd上的显示屏七、按键的定义八、UI( User Interface)修改九、工程中常见问题解答1、DVD的软件/硬件平台1.1DVD的主芯片我们使用的芯片是MTK(联发科技)的芯片,MTK系列的芯片有:1389B,1389C,1389D,1389F,1389HD等。
怎样从芯片上看出目前使用的芯片的型号了?如果一个芯片的编号为:MT1389DE0421-CWSD14JJ,数字1389+横杠后的字母“C”就是它的型号,这是一款1389C系列的芯片。
MTK视频解码,伺服等集成在芯片里面,音频DAC有的芯片有集成,有的没有。
1.2MTK的其他主要外围芯片MTK主要的外围芯片有:flash;内存dram;控制loader(光驱)动作的驱动芯片;eeprom;flash是用来保存目标文件target.bin;在配置样机的时候,我们需要了解的是内存dram的大小;eeprom芯片用来保存dvd中菜单里面的设置;如果是一款高清的平台,它还需要一颗MT1392的芯片。
1.3构建DVD的软件平台MTK芯片是由RISC、DSP、C51以及时钟、接口等部分组成。
其中C51主要完成UI部分的工作,包括OSD、VFD、IR及IR的处理等。
下面所说的程序都是指C51程序。
程序使用的是c51的编译器,如果把c51的编译器放在C盘,在设置环境变量的时候设置为:C:\C51;现在我们来看软件部分:软件部分可以看成有两大块构成,在8032文件夹里面的文件属于应用层的,是我们可以看到并做修改的;另一部分是底层的risc,这部分的修改,我们是动不了的,需要有MTK自己去做修改。
2.配置样机在做这个项目之前,我们先要拿到对应的公版软件;样机不同,公版软件的设置也不一样。
MTK个人笔记
6、查看进入MTK手机工程模式的指令可在CustResDef.h里,对应值为:SSC_ENGINEERING_MODE。
7、打包命令:armar -r *.a(或者*.lib) *.obj,解包命令:armar -x *.a,执行时都要先运行到obj或者库文件目录下。
22、Idle界面里面的触摸屏函数实现,是通过屏幕模板ShowCategory33Screen实现的,在wgui_categories_idlescreen.c里函数ShowCategory33Screen_ext里有注册,如:
wgui_register_category_screen_control_area_pen_handlers(wgui_cat033_pen_down_handler, MMI_PEN_EVENT_DOWN);注册点下触摸时的响应函数,然后我们可以在此响应函数里设置我们需要的屏幕位置的响应函数。
20、函数TurnOnBacklight(GPIO_BACKLIGHT_SHORT_TIME);用于把手机从背光中开启出来高亮屏幕一小段时间,参数也可换成GPIO_BACKLIGHT_PERMANENT(长久。
21、函数ForceSubLCDScreen(mmi_msg_start_msg_sub_anm)用于强制开启小屏幕提醒界面的,里面的参数只是举例,是提示有新短信收到的,在该函数里还需要调用屏幕模板来实现小窗口,这里用的是ShowCategory304Screen,然后会设置SetSubLCDExitHandler(mmi_msg_callback_msg_sub_anm);停止小窗口。
MTK 智能手机开发, android,安卓 AOSP学习笔记
对于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系统学习笔记
MTK系统学习笔记D一.LCD驱动函数理解PUBLIC ERR_LCD_E LCD_Init(void);PUBLIC void LCD_Close(void);LCD_GetInfo获取LCD的基本信息。
具体参考LCD_INFO_T的定义。
上层调用此函数,可获取LCD 的信息,如bits-per-pixel以及LCD的BUFFER指针,从而可以实现对LCD的直接操作。
PUBLIC ERR_LCD_E LCD_GetInfo(LCD_ID_E lcd_id,LCD_INFO_T*lcd_info_ptr );对点主屏上点(x,y)写入颜色0X0F0F的实现如下:(假定lcd_info_ptr-> bits_per_pixel = 16)LCD_GetInfo(MAIN_LCD_ID, lcd_info_ptr);uint16 *buf_ptr = (uint16 *)lcd_info_ptr-> lcdbuff_ptr;uint16 lcd_width = lcd_info_ptr->lcd_width;uint16 lcd_height=lcd_info_ptr->lcd_height;*(uint16 *)(buf_ptr + y*lcd_width + x) = 0x0f0f;然后根据需要调用LCD_Invalidate或者LCD_InvalidateRect函数刷新LCD有关区域。
LCD_InvalidateRect刷新LCD 的某一矩形区域。
该函数将LCD BUFFER中的颜色值写入到指定的区域中,如果该指定的区域超出了指定LCD的范围,则该函数将只刷新该指定区域与LCD区域的重叠部分,即LCD范围外的区域无效。
PUBLIC ERR_LCD_E LCD_InvalidateRect(LCD_ID_E lcd_id,uint16 left,uint16 top,uint16 right,uint16 bottom);PUBLIC ERR_LCD_E LCD_Invalidate(LCD_ID_E lcd_id);PUBLIC ERR_LCD_E LCD_EnterSleep(LCD_ID_E lcd_id,BOOLEAN is_sleep);PUBLIC ERR_LCD_E LCD_SetContrast(LCD_ID_E lcd_id,uint16 contrast);typedef struct lcd_info_tag{uint32 r_bitmask;uint32 g_bitmask;uint32 b_bitmask;uint16 bits_per_pixel;uint16 lcd_width;uint16 lcd_height;uint16 contrast_min;uint16 contrast_max;uint16 contrast_defaut;void *lcdbuff_ptr;} LCD_INFO_T;typedef enum{MAIN_LCD_ID = 0,SUB_LCD_ID,MAX_LCD_ID} LCD_ID_E;typedef enum{ERR_LCD_NONE = SCI_SUCCESS,ERR_LCD_FUNC_NOT_SUPPORT,ERR_LCD_PARAMETER_WRONG,ERR_LCD_POINTER_NULL,ERR_LCD_OPERATE_FAIL,ERR_LCD_NOT_FOUND} ERR_LCD_E;Sleep inß当手机在待机状态时,为了节约功耗,要把lcd进入睡眠模式ß设置相关的寄存器/* Power control 1 set SLP bit = 1*/LCD_DRV_WRITE_COMM(0x0010, 0x1a0e);Command!!1、new功能:全新开始构建整个工程的ARM版,包括图片、声音、字符串等资源都要重做。
MTK平台学习笔记+03-增加菜单项的流程
MTK平台学习笔记(三)-增加菜单项的流程翁加平说明:红色部分为新增部分;蓝色部分为修改部分。
以增加菜单“防火墙”为例,说明增加一个菜单的具体流程。
防火墙菜单:MainMenuSettingsFirewallSeparateNoneModeRedName ModeModeBlackNameRedNameAddEditCallDelDelAllBlackNameAddEditCallDelDelAll1 增加字符串在文件“.\ plutommi\Customer\CustResource\PLUTO_MMI\ref_list.txt”中,按照规则增加字符串:STR_MENU_FIREWALLSTR_MENU_FIREWALL_SEPARATESTR_MENU_FIREWALL_SEPARATE_NONEMODESTR_MENU_FIREWALL_SEPARATE_REDMODESTR_MENU_FIREWALL_SEPARATE_BLACKMODESTR_MENU_FIREWALL_REDNAMESTR_MENU_FIREWALL_BLACKNAMESTR_MENU_FIREWALL_SEPARATE_NONEMODE_SHOWSTR_MENU_FIREWALL_SEPARATE_REDMODE_SHOWSTR_MENU_FIREWALL_SEPARATE_BLACKMODE_SHOWSTR_MENU_FIREWALL_REDNAME_OPERATESTR_MENU_FIREWALL_BLACKNAME_OPERATESTR_MENU_FIREWALL_ADD_REDNAMESTR_MENU_FIREWALL_ADD_BLACKNAMESTR_MENU_FIREWALL_EDIT_REDNAMESTR_MENU_FIREWALL_EDIT_BLACKNAMESTR_MENU_FIREWALL_CALL_REDNAMESTR_MENU_FIREWALL_CALL_BLACKNAMESTR_MENU_FIREWALL_DEL_REDNAMESTR_MENU_FIREWALL_DEL_BLACKNAMESTR_MENU_FIREWALL_ALLDEL_REDNAMESTR_MENU_FIREWALL_ALLDEL_BLACKNAMESTR_MENU_FIREWALL_DEL_NOTIFYSTR_MENU_FIREWALL_ALLDEL_NOTIFYSTR_MENU_FIREWALL_OPERATESTR_MENU_FIREWALL_ADDSTR_MENU_FIREWALL_EDITSTR_MENU_FIREWALL_CALLSTR_MENU_FIREWALL_DELSTR_MENU_FIREWALL_ALLDEL2 增加与菜单条、字符串、屏幕和图片相关的枚举值在文件“”中增加enum GLOBALMENUITEMSID{IDLE_SCREEN_MENU_ID=1,。
MTK平台ADC学习笔记
作者: Darren完成日期: 2010-06-28 Page 1 of 14 e-mail:*******************目录1.基本概念 (2)2.MT6225 ADC简介 (3)3.MT6253 ADC简介 (3)4.两种操作模式 (3)5.用于电池电量显示的ADC检测 (4)5.1.主要流程图 (4)5.2.流程说明 (6)5.3.创建步聚 (6)6.充电时ADC的检测 (7)6.1充电时ADC的调度流程 (7)7.工程模式查看电池电压ADC (8)8.MT6225平台区分USB和CHARGER的ADC通道 (8)9.ADC校准 (10)10.ADC检测的主要API (11)11.ADC调度器的成员变量 (13)作者: Darren完成日期: 2010-06-28 Page 2 of 14 e-mail:*******************1.基本概念ADC ,即analog to digital converter,模拟信号至数字信号的转换器。
主要的ADC转换算法有逐次逼近法,双积分法。
它们一般由芯片内部的硬件电路实现,但外部的电路接法会有所不同。
MTK平台ADC采样的可使用外部电路:y=((a*x+b)/100)*factor(如adc_adc2vol()中的算式)x为ADC采样值,y为测量点的实际电压如图2所示,(a*x+b)为A点的电压值,((a*x+b)/100)*factor才是我们要测量的Ui的电压值。
由于ADC的量程有限,故需要进行分压才能测量比较大的电压,之后再根据分压电阻的比值转换成要测量点的电压。
a为每单位表示的电压。
MTK的ADC量程为2.8V,ADC为10位的,故a=2800000/2^10=2734(uV)。
通常为了扩大测量范围,需要把a扩大约一倍(记为a1),之后再通过factor校正。
比如变成5524,是原来的2.02倍b是偏移量,需要测量确定。
MTK手机开发笔记
一、开发环境设立1、开发主机要求及所需工具:操作系统:Windows 2000, WinXP. 推荐Windows 2000 with SP2 or later.编译器:ADS (Arm Developer Suite) v1.2 [Build 842]Perl解析:ActivePerl, 推荐使用ActivePerl 5.6.1版本仿真工具:MTK PC Simulator跟踪工具:Catcher_L1 v3.10.01,从串口输出调试信息,只做普通UI应用的话,大致不会用到,用PC仿真工具就好了烧录工具:FlashTool_UI v3.1.05 或FlashTool_v3.0844.00其他:PL2303_Driver_XP2K v204102,这是下载线用到的USB串口驱动,以前机器上装过PL2303驱动的,建议改用这个,否则可能会有蓝屏的问题。
2、开发环境建立过程:新建一个目录,英文的好了,否则有些工具不认识中文路径,这里以E:\MTK_P1300为例说明,下面我用文字和图片简单说明下安装过程,更详细的安装过程可以看压缩文件“手机开发板C语言开发视频.rar”中的Flash文件“P1300_Build_Env.swf”。
1)安装ADS1.2解压文件huayu109_ads1.2.rar到某个目录,比如说解压到“E:\MTK_P1300”,解压完后运行“E:\MTK_P1300\ADS1.2\Setup.exe”,一路按下一步,最后安装License时选定文件“E:\MTK_P1300\ADS1.2\CRACK\ license.dat”,然后接着一路下一步直到安装完。
安装完后删掉目录“E:\MTK_P1300\ADS1.2\”,节省磁盘空间。
2)安装ADS补丁运行huayu102_ADS12_Patch_Windows.rar压缩文件中的ADS_Patch_Window.exe,这是个自解压的压缩文件,选Unzip解压到上一步ADS的安装目录(缺省是C:\Program Files\ARM\ADSv1_2),解压过程中如果问到是否覆盖,全部选覆盖好了。
MTK MMI 常用
MTK笔记L4是MMI/AT和协议栈的适配层。
ATCI是AT命令解析器。
UEM是用于抽象如键盘、LED、通用输入/输出等基本设备,是用户设备模块。
PHB就是电话本。
SMU是安全管理单元(SIM、STK)。
CSM是呼叫服务管理。
RAC是登记访问控制。
SMSAL是SMS应用层。
内核服务包括定时器、任务管理和进程间通信、资源和内存管理、日志和异常处理。
OSL是封装OS API的层,而KAL则是封装内核的层,应当在OSL以上来开发。
数据类型定义(VRE的头会比MTK更乱吗?)* 基本数据类型:kal_non_specific_general_types.h。
* KAL相关的定义:kal_release.h。
(好变态的名字,对不对啊?)* MMI任务中和OSL相关的数据类型定义:PixtelDataTypes.h。
任务之间的通信是通过SEND_ILM来完成的,从实现来看是通过一个消息队列来完成的,关注struct ilm_struct定义,SAP是业务访问点。
发送消息之前,首先要把本地参数缓冲区分配出来,然后赋值发送请求。
Highlight事件是用户通过键盘触发的事件,与提示信息关联。
SetProtocolEventHandler实际上就是MMI FRAMEWORK提供的回调函数注册工具,与MMI相关的所有事件都可以通过这个函数登记——包括网络。
按键码需要注意的几个特殊键:KEY_END是挂机键、KEY_SEND是摘机键。
MMI字符串资源的加入:1)在ref_list.txt中加入字符串。
2)把字符串ID加入到ID枚举中。
3)使用ADD_APPLICATION_STRING2来加入字符串。
4)使用GetString()获得字符串。
5)使用APP_BASE来保证字符串ID的唯一性。
图片资源的加入:1)把图片加入应用程序目录。
2)把图片ID加入枚举类型中。
3)使用ADD_APPLICATION_IMAGE2来加入图片资源。
MTK学习笔记总结
可以通过 tools\chk_env 查看是否搭建成功。
make custom=** make custom=** make custom=** make custom=**
gprs new gprs remake %1 gprs update %1 gprs new_modis
全部重新编译 编译修改部分 更新资源 new 后生成 modis 工程
MSYS
1.0.10
MSYS 工具是 Minimal GNU(POSIX)system on Windows 的简称,是一个小型的 GNU 环境,包括基本的 bash,make 工具等等,是 Windows 下最优秀的 GNU 环境。
7zip
3.13 7zip 压缩工具(7za.exe),在编译过程中,程序会调用它解压缩图片资源。
// 正常模式开机
mmi_bootup_entry_animation()
// 开机动画
mmi_pwron_entry_animation_screen()
// 开机动画界面
gui_start_timer(force_stop_time, mmi_pwron_force_terminate_display) // 设置强制关闭动画计
口中就可以了解到是否打了 SP6 补丁了。
Source Insight
因为 MTK 源文件代码量相当的惊人,用其他的编译器来查看代码修改代码会相当 3.5
的不方便,这里强烈推荐该软件,必定会让你的开发事半功倍。
Xoreax IncrediBuild
3.30b
可以在 CMD 和 VC6 下面让读者搭建自己的分布式编译系统,让编译变的更快捷, 必须再 Microsoft Visual C++安装后再安装。
MTK 的一些笔记
Windows Live™∙主页∙个人资料∙联系人∙邮件∙照片更多▼日历活动群共享空间SkyDrive家庭安全设置移动主页下载全部服务∙MSN ▼主页汽车理财电影资讯体育天气∙∙登录float in the sk... 的个人资料ShareSpace照片日志列表工具帮助日志日志摘要排列方式:2009年5月2009年4月2009年3月2009年2月2009年1月2008年12月2008年11月2008年10月2008年9月2008年8月2008年7月2008年6月< 上一页下一页> 11月13日MTK的一些笔记MMI_ON_WIN32 MMI_ON_HARDWARE_P__MTK_TARGET__#ifdef __cplusplusextern "C" {#endif__SMS_BLACK_LIST__ 短信防火墙SLT_MMI_SLIDE_UNLOCK 滑动解锁__MMI_VCARD__ 名片夹__SLT_MMI_PHB_VCARD__ 超级电话本__MMI_VIP__ SECURITY_VIP vip功能__SLT_LONG_DISTANCE_DDD__ 长途区号__MMI_UI_HINTS_IN_MENUITEM__ 在菜单空间显示hint(正常应该关闭,弹出hint)//手机默认密码NVRAM_SECURITY_VIP_PASSWORD_LIDNVRAM_EF_MS_SECURITY_DEFAUL Tmmi_frm_sms_save_sms_req发短信mmi_msg_new_msg_ind 新短信到达ReleaseEMSEditBuffer 释放写短信的bufferSCR_INLINE_EDIT 编辑电话本界面SCR_ADD_NEW_ENTRY 增加电话本界面color_dialing_font_map[] 拨号界面的不同字体颜色数组gui_show_dialer_input_box_ext 拨号输入框wgui_setup_dialer_inputboxIdleDialPadCallmmi_ucm_entry_outgoing_callShowMOMTCallScreennvram_cust_pack.c存放开关机默认值custom_mmi_default_value.h 存放开关机默认值定义2008年5月2008年4月2008年3月2008年2月2008年1月2007年12月2007年11月2007年10月2007年9月2007年8月2007年7月2007年6月2007年5月2007年4月2007年3月2007年2月2007年1月2006年12月2006年11月2006年10月fmgr_msdc_plug_in_hdlrfmgr_msdc_plug_out_hdlr 插拔T卡mmi_vobj_is_pending_object 收到名片夹mmi_vobj_receive_get_full_tmp_path_name 取得名片夹路径isEarphonePlugged //耳机是否插入标志gPenEditorSelectCandidate, 汉王判断有无备选字s_bShowingCand 国笔判断有无备选字handle_category28_input手机信号的显示是根据公式frame_number = (level_percentage * (n_frames)) / 100;来计算需要显示哪一针图片,了解原理后大家可以对gSignalStrengthLevel灵活付值.void ChangeStatusIconLevel(S16 icon_ID, U8 level_percentage)mmi_phb_sel_quick_search_get_index //电话本选择复制、删除时中键显示的勾和叉图setup_bottom_shortcuts 触屏底部丝印的快捷键custom_comp_config_tbl 自己配制的任务列表resource_shortcuts.c gShctDefaultDediList 快捷键定义mmi_audply_redraw_lyric :显示歌词idle_screen_show_network_details :待机显示歌名nvram_common_config.c // 恢复出厂设置的定义以及自动测试的程序(增加或删除工程模式中测试项目数组NVRAM_EF_AUTOTEST_DEFAUL T[NVRAM_EF_AUTOTEST_SIZE]) nvram_user_config.c //存放nvram的各项默认值nvram_restore_byte_cache //恢复出厂设置的byte值wgui_categories_inputsenum.h //输入法的定义custom_hw_default.c //电池参数audcoeff.c 、nvram_default_audio.c //音频参数FactoryModeDef.h //工程模式、测试模式的定义FactoryModeSrc.c 存放工程模式的各项设置其中const testlet Tests[MAX_AUTO_TEST_ITEMS] = {}存放*#87#自动测试时的各项测试函数2006年9月2006年8月2006年7月2006年6月2006年5月2006年4月2006年3月2006年2月2006年1月2005年12月2005年11月2005年10月MAX_AUTO_TEST_ITEMS 自动测试项目的最大值nvram_common_config.cNVRAM_EF_PORT_SETTING_DEFAULT[] //设置默认调试端口nvram_cust_pack.cNVRAM_CACHE_DOUBLE_DEFAULT //触摸屏校准数据custom_wap_cust_pack.c //书签,主页audio_group_init[NUM_OF_GROUP] 铃声设置数组initalize_main_menu_application()注册主菜单得各个高亮函数GlobalConstants.h //存放按键定义keypad_def.c //按键映射关系CustImgDataHW.h //编译后的图片数据数组__MAINLCD+__路径+__文件名+__扩展名[]CustCoordinates.c //Screen控件MMI_features_GUIPLUTO.h__MMI_BI_DEGREE_MAIN_MENU_STYLE__ //主菜单样式__MMI_MAINMENU_TYPE__NVRAM_EF_SMSAL_SMS_TOTAL //短消息最大值(nvram_user_defs.h)CM_SMS_MAX_MSG_NUM (customer_ps_inc.h)//要比NVRAM_EF_SMSAL_SMS_TOTAL值大(100)PHB_PHONE_ENTRY (.make)//手机电话簿容量PHB_SIM_ENTRY //sim卡电话簿容量nvram_user_defs.h 文件中NVRAM_EF_SMSAL_SMS_TOTAL 手机短信的容量定义CM_SMS_MAX_MSG_NUM 短信总容量定义(sim + phone).mak 文件中PHB_PHONE_ENTRY 定义手机中电话本的容量PHB_SIM_ENTRY定义sim卡的电话本容量mmi_phb_quick_search_find_entry 电话本输入字符搜索列表refresh_search_list_change_list 字符搜索列表回调函数PhoneSetupResList.h //墙纸定义、数量IMERes.c //定义笔画输入法(MTK源代码__MMI_TOUCH_SCREEN__和笔画INPUT_MODE_MMI_SM_STROKE 互斥)NVRAM_PROFILES_DEFAULT //情景模式里面的设置,铃声等的默认值MMI_PROFILE_ENUM_TYPE 情景模式IdleToggleProfile 激活情景模式CustResDefPLUTO.h //定义资源路径及工程菜单定义如:*#86# *#65289*# 等DEFAULT_HARDWARE_YEARDEFAULT_HARDWARE_MON DEFAULT_HARDWARE_DAY//手机默认年、月、日份GUITypeDef.h HIGHLIGHT_EFFECT SOFTKEY_STYLE STATUSBAR_STYLE //定义高亮菜单的效果、按钮和statusbar的显示风格pixtel_UI_show_fixed_matrix_menu //九宫格数据//没有小电池,第一次正常关机开机时时间不能保存kal_bool DRV_POWERON(void) :: if (RTC_isFisrtOn()/*||(KAL_FALSE==RTC_is_config_valid())*/)//modi fy by lvqiang for rtc bug11832S8* path; //字符转换函数,把ASCII 转换成UCS2 如例:mmi_chset_convert(g_chset_text_encoding, MMI_CHSET_UCS2, (char*)MUSIC_FOLDER, (char*)path, FMGR_MAX_PATH_LEN-10); mmi_ucs2cat((PS8)filexpr_temp, (const PS8)path);//创建中文文件夹#define PHB_VCARD_FOLDER "\x0D\x54\x47\x72\x39\x59\x00\x00\\" // 名片夹#ifdef __cplusplus //lijinbu 20070613 add fo r simulatorextern "C" {#endif /* __cplusplus */NVRAM_EF_PHB_COMPARE_DIGIT_DEFAULT 电话本比较的位数MTK平台的UA内置方法:custom_wap_config.h文件里头的#define WAP_CUSTOM_CFG_DEFAUL T_UA_HEADER "MAUI WAP Browser"#define WAP_CUSTOM_CFG_DEFAUL T_MMS_UA_HEADER "MAUIMMS User Agent"这两项引号中的红体字部分内容替换为我们提供的有效UA!"LCT_D800B_01/1.0 Nucleus/1.13.21 MTK6225/07A Release/5.1.2008 Browser/TelecaQ03C1 Profile/MIDP-2.0 Configuration/CLDC-1.1"电池显示六格的问题:3520000, 3570000, 3680000, 3780000,3890000, 3950000, 4000000, 4090000, 9999999,#define NVRAM_EF_CUST_HW_LEVEL_TBL_SIZE 444#define BATTERY_MAX_LEVEL 11gui_fixed_menuitems.c(pixtel_UI_show_fixed_fullscreen_page_menuitem())gui_fixed_menus.c (g_MainMenu_Item_Poistion 数组存放9宫格的坐标值)show_fixed_list调用下面函数(pixtel_UI_show_fixed_list_menu()调用DrawMainMenuBgImageContext()画选中位置的图片) CustMenuRes.c const CUSTOM_MENUnCustMenus[]所有屏幕画面的参数菜单ID 父菜单ID 子菜单个数等等,结构描述如下://The Below is the structure of the MenuItem which can be transfered to any screen.typedef struct Custom_MenuItem{U16 nMenuItemId; //Unique Id for each MenuItem.U16 nParentId; //ItemId of the parent if 0(zero) then no parent.U16 nNumofMenuItem; //Number of Children it has.U16 nHideFlag; //This is a flag to mask/hide.(not sure currently)U16 nMovable; //This is a flag for moving like 0-NotMovable Anywhere,//1-Movable within the same parent..etcU16 nDispAttribute; //This is a display attribute flag like 1-list,2-Circular,3-Tab..etc.U16 nStrId; //Unique StringId of the MenuItem.U16 nImageId; //Unique Image of the MenuItem.U16 *nOrderMenuItemId; //ItemId of the children in Sequence}CUSTOM_MENU;目录结构:plutommiAlarm 闹钟AsyncEvents 异步事件和硬件协议事件的处理Audio 声音管理Calendar 日历CallManagement 电话呼叫Calls 辅助服务CommonScreens 所有应用的公用屏幕Data Time 日期和时间的实现Debug 包含.obj文件并且是正在工作的文件夹DebugLevel 管理debug日志的MACROSDemo 一个demo应用Framework 管理应用消息,流程控制和操作系统封装EventHandlingFileSystemHistoryNVRAMManagerOslTasksFunandGames FunandGames的应用GPIO 处理不同的外部设备例如:背光,震动,ledGUI 管理UI的相关函数IdleDemo 待机应用和事例Inc 所有应用的共享文件MiscFramework Pixtel MMI平台管理字体unicode的支持。
MTK应该知道的N个问题
8.顺带会小测一下你的编码风格,这可以从你编写代码中看出来,错误处理,ASSERT运用,return运用,括号的运用,都是观察一个优秀程序员必不可少的。
这些都是一个软件工程师应该具备的基本素质,如果你要去应聘一个不管哪方面的软件工程师,笔试部分完全可以按照我的热点来复习,绝对不会有太大问题。这也就是我们去许多不同公司甚至不同行业面试会发现笔试题几乎一模一样,几乎都是从嵌入式工程师应该知道的0x10问题和林锐博士的高质量C抄出来的。许多人不明白为什么这样,这些题答案都固定了,只要有人背下来,笔试几乎是毫无问题的,还能起到测试作用吗?我认为绝对没有问题,你能背下来这些答案或者肯花时间去记这些问题,并搞明白这些原理,说明你是花下不少时间的,认真的,至少也是一块可造之材,而且高级的工程师对于这些问题往往会有出人意料的更绝妙的答案,这些问题,如果你写过N年代码,你就会有自己不同的看法。背答案是初学编程者最好的入门方法,而你如果能在理解的基础上背,你就更上一层楼了。其实学习什么都这样,以前我有个同学英语总是不及格,向老师请教方法,老师说你把我们现在学的这本英语课本背下来试试,小伙子起早贪黑背,把高中六本书全背了不过瘾,又背新概念,后来英语竟然在全校也是数一数二的,从落后分子变成了全校精英。可见古代那些背八股文绝对没白花功夫,他们正是从背诵中领悟了宇宙,社会,人生的真谛,从而成为那个时代的统治者。笔者刚毕业时,为了练习编程技能,曾经把《the c programming language》的程序全背会了,里面的一些标准C函数库的设计理念和过程令我叹为观止。为理解林锐博士和其他人写的编程秘籍打下了基础。
6,当然我还想了解我未来的同事一下数据库的知识,也许在将来的手机或者我们未来的工作平台上能派上大用处,不过MTK目前不支持,我只好做罢。用一些自己也拿不准的问题问别人,多少有些小人之心。
MTKSMS模块学习笔记(一)
MTKSMS模块学习笔记(⼀)MTK信息发送过程简介1.编写⽬的本⽂档作为学习短信模块系列笔记之⼀,简要介绍了信息发送模块的基本流程及其基于MTK6217平台的代码实现。
2.参考资料《MMI_DD_Messages.pdf》MTK 6217代码实现3.流程图4.实现代码⽚断4.1 void HighlightWMessageHandler (void)1.)设置mmi_msg_entry_write_msg⼊⼝函数2.)设置SMS发送模式为g_msg_cntx.sendMessageCase = SEND_CASE_SEND_ONL Y; g_msg_cntx.PhbSmsInterfaceState = MMI_SEND_ONLY;4.2 void mmi_msg_entry_write_msg (void)1.)禁⽌定时关机,AlmDisableSPOF();2.)绑定左软件:mmi_msg_entry_option_write3.)绑定右Send键:mmi_msg_entry_send_option4.3 void mmi_msg_highlight_send_only (void)=>mmi_msg_send_msg_to_only_entry=>mmi_msg_send_msg_req((U8*)g_msg_cntx.smsPhoneNumber, MMI_FRM_SMS_INV ALID_INDEX,0);4.4 void mmi_msg_send_msg_req (U8* number, U16 replyindex, U8 hidenumscreen){……/* for send to many or send to group, show only one sending screen for all numbers */if((g_msg_cntx.msg_send_info.CurrSendSmsNumbers+1)sendData->sendrequire |= MMI_FRM_SMS_MORE;/* if sendcheck has a bit of MMI_FRM_SMS_SCR, do not show sending screen */if(g_msg_cntx.msg_send_info.CurrSendSmsNumbers!=0)sendData->sendcheck |= MMI_FRM_SMS_SCR;……mmi_frm_sms_send_sms(mmi_msg_send_msg_rsp, MOD_MMI, sendData);OslMfree(sendData);}4.5 mmi_frm_sms_send_sms=> mmi_frm_sms_pre_send_sms=> mmi_frm_sms_send_sms_req();4.6 void mmi_frm_sms_send_sms_req (void){……/* check SC: get SC address, inMsg keeps the flag *//* 检测信息中⼼号码,如果信息中⼼号码为空,则先从NV中读取当前的配置⽂件,这通过mmi_frm_sms_get_sc_addr_req函数中由MMI层向L4层发送PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_REQ指令来实现。
MTK工作笔记重点讲义资料
目录1、添加一个按键DEVICE_KEY_LOCK (3)2、修改状态栏图标间距 (3)3、显示状态条void show_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID,34、换主菜单/二级菜单背景 (3)5、修改情景模式默认值nvram_common_config.c (4)6、修改flash型号: (4)7、Speech→音量4由160→调整为180,其余不变 (5)8、添加彩号功能及修改彩号字体颜色 (6)9、修改音量调节界面按钮位置 (6)10、修改手机为单/双IMEI号, (6)11、修改运营商标志的位置 (7)12、修改照相机/录像防止闪烁默认频率为50Hz (7)13、去掉拼音输入法 (8)14、修改电子书全屏背景颜色 (9)15、修改滑盖机关机来闹钟滑盖下滑时白屏并自动开机的Bug (9)16、修改短信输入等界面背景为全透 (11)17、修改开盖铃声默认值/情景模式其他设置 (12)18、修改短信铃声资源数据 (13)19、增加滑盖机滑盖滑下时键盘锁自动锁住 (13)20、修改合盖并且键盘锁锁上及背光熄灭情况下按任意键不能点亮背光的Bug (15)21、打开6318对双喇叭的驱动 (16)22、修改选择标点界面符号和预设动画的字体颜色 (17)23、视频播放时去掉全屏的图标,并去掉触摸该区域时切换为全屏的响应 (17)24、修改屏灭后只有待机界面键盘锁住的情况下点触摸屏不亮 (19)25、修改视频播放/录像软键条不够高的问题 (20)26、注册上下左右键为计算器加减乘除功能键 (22)27、修改默认输入法为智能拼音/默认城市为北京/默认语言为中文/默认是否开启自动键盘锁2328、修改背光默认开启时间为15秒 (24)29、修改拨号界面功能键高度 (25)30、修改默认时间为2010年 (26)31、关闭开机触摸屏校准 (27)32、修改蓝牙装置名称 (27)33、更改了NVRAM升级软件不需要格式化 (27)34、通话界面上下键可以调节音量 (28)35、修改mp3、mp4默认存储位置为T卡 (28)36、修改模拟时钟的位置 (29)37、更换SIM1和SIM2的位置 (29)38、蓝牙耳机听MP3时,不能通过蓝牙耳机上的按键切换上下一首歌曲 (30)39、3603摄像头作为网络摄像头拍照时死机的Bug (30)40、去掉待机墙纸中的主题图片 (31)41、修改com口为Trace口 (32)42、添加ZI输入法后报无法找到zi8api.h的错误, (32)43、世界时钟入口函数 (32)44、日历入口函数 (32)45、SMS插入图片显示函数 (32)46、编辑短信时符号选择界面的高亮框 (33)47、计算手机占用RAM方法 (33)48、修改拨号界面输入框的大小, (33)1、添加一个按键DEVICE_KEY_LOCKA.用codegen配置好后生成keypad_drv.h文件,文件中会自动添加DEVICE_KEY_LOCK,B.在kbd_table.h文件中添加#define DEVICE_KEY_LOCK 74C.在KeyBrd.c文件nKeyPadMap[]数组中把底层的ID与上层ID对应起来{DEVICE_KEY_LOCK, KEY_EXTRA_1, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},直接使用KEY_EXTRA_1作为KEY_LOCK键2、修改状态栏图标间距arrange_status_icons(){......x = x1;// + STA TUS_ICON_X_GAP; Modified by Brandt 2009/11/28 for 修改状态栏图标的位置避免点此条被覆盖while (!done){……x += MMI_status_icons[k].width;// + STATUS_ICON_X_GAP; Modified by Brandt 2009/11/28 for 修改状态栏图标的位置避免点此条被覆盖……}}3、显示状态条void show_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID,隐藏状态条void hide_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID4、换主菜单/二级菜单背景因为菜单/二级菜单背景不是直接从压缩包里取的图片,而是从Themecomponents.h文件里取的16进制数据。
MTK平台camera(摄像头)学习教程重点讲义资料
Contents一、手机CAMERA的物理结构:........................................................................................- 4-二、CAMERA 的成像原理: .................................................................................................- 4-三、CAMERA 常见的数据输出格式:..................................................................................- 5-四、阅读CAMERA的规格书(以TRULY模组OV5647_RAW为例):........................... - 6 -五、CAMERA 的硬件原理图及引脚 .....................................................................................- 7-1、电源部分:.................................................................................................................... - 7 -2、 S ENSOR I NPUT部分:................................................................................................... - 7 -3、 S ENSOR O UT P UT部分:............................................................................................... - 7 -4、 I2C 部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。
MTK芯片总结 (2)word资料22页
MTK故障终结目前联发科技已开发出MT6205、MT6217、MT6218、MT6219、MT6226、MT6227、MT6228等系列平台其中 MT6205、MT6217、MT6218、MT6219、MT6226、MT6227、MT6228均为基带芯片,所有芯片均采用ARM7的核。
MT6305、MT6305B为电源管理芯片。
MT6129为RF芯片RF3146(7×7mm)、RF3146D(双频)、RF3166(6×6mm)为RFMD的PA。
MT6205为最早的方案,只有GSM的基本功能,不支持GPRS、WAP、MP3等功能。
(2019年MP)MT6218为在MT6205基础上增加GPRS、WAP、MP3功能。
MT6217为MT6218的cost down方案,与MT6128 PIN TO PIN,只是软件不同而已,另外MT6217支持16bit数据。
(2019年MP)MT6219为MT6218上增加内置AIT的1.3M camera处理IC,增加MP4功能。
8bit数据。
(2019年MP)MT6226为MT6219 cost 升级产品,内置0.3M 摄相处理IC,支持GPRS、WAP、MP3、MP4等,内部配置比MT6219优化及改善,比如配蓝牙是可用很便宜的芯片CSR的BC03模块USD3即可支持数据传输(如听立体声MP3等)功能。
MT6226M为MT6226高配置设计,内置的是1.3M摄像处理IC。
(2019年MP)MT6227与MT6226功能基本一样,PIN TO PIN,只是内置的是2.0M 摄像处理IC。
(2019年MP)MT6228比MT6227增加TV OUT功能,内置3.0M 摄像处理IC,支持支持GPRS、WAP、MP3、MP4。
(2019年MP)从MT6226后软件均可支持网络摄像头功能,也就是说你的机子可以用于QQ视频。
MTK芯片工作简解现在最长见的MTK手机芯片组合多是MT6128BT CPU(MT6219CPU)、MT6035电源IC和MT6129射频IC组合,以下是对MT芯片的简单讲解。
MTK平台驱动调试笔记
分类: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背光亮度。