MTK的驱动和MMI经验总结.docx
《MTK的驱动和MMI经验总结.docx》由会员分享,可在线阅读,更多相关《MTK的驱动和MMI经验总结.docx(53页珍藏版)》请在冰豆网上搜索。
MTK的驱动和MMI经验总结
MTK的驱动和MMI经验总结
1.Windows必须安装在C盘,否则会出现modis编译问题。
2.语言和输入法移植
2.1资源修改–这是我们需要修改的,2.2开始MTK已经帮你做好了。
2.1.1在mcu\plutommi\Customer\CustResource\PLUTO_MMI\ref_list.txt中添加新语言的字符串资源。
2.1.2用MCT工具生成新的字库,需要注意的是LanguageID必须和ref_list.txt中一致。
2.1.3输入法资源包括Zi、T9和CStar。
2.1.3.1Zi
a.新建mcu\vendor\inputmethod\ZI\project\PROJECTNAME\v?
_official\目录。
b.将第三方提供的Zi文件拷贝到该目录。
c.将所有ZI8DatXX.c文件扩展名改成.h文件,并将其包含到IMEResZi.h中。
d.将输入资源添加到mtk_gIMELDBArray数组中。
e.上面步骤,第三方可能已经提供IMEResZi.h文件。
如果提供了就不用这些步骤了。
2.1.3.2T9
将代码放到下面目录:
mcu\vendor\inputmethod\T9\project\PROJECTNAME\v?
_official\
移植比较麻烦,具体参考:
SOP_T9_Input_Method_Resource_Generation_07A.pdf
SOP_T9_Input_Method_Resource_Generation_08B.pdf
SOP_T9_Input_Method_Resource_Generation_09BV2.pdf
2.1.3.3CStar不说了
2.2SSC
有几个文件需要修改。
a.mcu\\plutommi\mmi\SSC\SSCInc\SSCStringHandle.h:
增加新的SSC码,需要和ref_list.txt、FontRes.c中的一致。
#defineSSC_AUTO"*#0000#"
#defineSSC_SCHINESE"*#0086#"
#defineSSC_TCHINESE"*#0886#"
#defineSSC_ENGLISH"*#0044#"
#defineSSC_DEFAULT"*#0044#"
#defineSSC_SPANISH"*#0034#"
//添加你的SSC码
//#defineSSC_XXXXX"*#00XX#"
2.3mcu\\plutommi\mmi\SSC\SSCInc\SSCStringHandle.c:
将新的SSC码加入到ssc_table2表中。
SSCStringTableExssc_table2[]=
{
{SSC_AUTO,MMI_FALSE,SSC_STR_ERR_SET_DEFAULT,SSC_SCR_LANGUAGE_DEFAULT_STR_ID},
{SSC_ENGLISH,MMI_FALSE,SSC_STR_ERR_SET_ENGLISH,SSC_SCR_LANGUAGE_ENGLISH_STR_ID},
#ifdefined(__MMI_LANG_TR_CHINESE__)
{SSC_TCHINESE,MMI_FALSE,SSC_STR_ERR_SET_TCHINESE,SSC_SCR_LANGUAGE_TCHINESE_STR_ID},
#endif
#ifdefined(__MMI_LANG_SPANISH__)
{SSC_SPANISH,MMI_FALSE,SSC_STR_ERR_SET_SPANISH,SSC_SCR_LANGUAGE_SPANISH_STR_ID},
#endif
……
2.4mcu\\plutommi\mmi\Setting\SettingSrc\PhoneSetup.c:
加到auto_lang_struct数组中。
staticStructAutoLangauto_lang_struct[]=
{
/*ISO6392-alphabetLanguageCodes*/
{CBS2_ZH,SSC_SCHINESE},
{CBS2_TW,SSC_TCHINESE},
{CBS0_ENGLISH,SSC_ENGLISH},
{CBS0_SPANISH,SSC_SPANISH},
{CBS2_TH,SSC_THAI},
{CBS0_FRENCH,SSC_FRENCH},
{CBS0_GERMAN,SSC_GERMAN},
{CBS0_ITALIAN,SSC_ITALIAN},
……
2.5MTK代码已经帮你完成,具体参考SOP_Input_Method_Porting_Guide_07A.pdf和
SOP_Language_and_Input_Method_Porting_Guide_08A.pdf文件。
3.如何修改软件版本号?
修改下面文件:
mcu\make\Verno_.bld
4.如何修改工程命令?
如将默认*#8375#(显示版本号)改成*#8376#。
文件:
\plutommi\Customer\CustResource\PLUTO_MMI\CustResDefPLUTO.h
修改:
#ifdef__MMI_AUTO_LANG_EN__
#defineMMI_DEFLANGSSC_FOR_AUTO"*#0044#"
#endif
#defineSSC_SW_VERSION"*#8375#"
#defineSSC_HW_VERSION"*#357#"//Notusedif__MMI_HW_VERSION__isnotturnedon
#defineSSC_ENGINEERING_MODE"*#3646633#"
#defineSSC_FACTORY_MODE"*#66*#"
#defineSSC_FACTORY_MODE_AUTOTEST"*#87#"
#defineSSC_SERIAL_NUMBER"*#33778#"
……
5.有关SIMLock代码参考哪些文档?
请参考:
2G-PS\Personalization_Lock_SIM_ME_Lock_After_06A0632MP.pdf
位于:
DCC\FeaturePhoneData\Software_Customer\StandardPackage\2G-PS\
6.如果添加一个Task?
a.添加taskindex和modid。
文件:
mcu\custom\system\PROJECTNAME\custom_config.h
/*************************************************************************
*[VeryImportantMessage]
*1.ComponentTaskIndex(Pleaseaddbeforesystemservice)
*2.Customersareallowedtocreateatmost16tasksasdefinedin
*config\include\stack_config.h(MAX_CUSTOM_TASKS=16)
*************************************************************************/
typedefenum{
INDX_CUSTOM1=RPS_CUSTOM_TASKS_BEGIN,
INDX_CUSTOM2,
#ifdef__FLAVOR_VENDOR_SDK__
INDX_VS,
#endif
//addyourtaskindexhere.
//INDX_XXX,
RPS_CUSTOM_TASKS_END
}custom_task_indx_type;
/*************************************************************************
*[VeryImportantMessage]
*1.Componenttask'smoduleid(Pleaseaddbeforesystemservice)
*2.Customersareallowedtocreateatmost16taskmoduleIDasdefined
*inconfig\include\stack_config.h(MAX_CUSTOM_MODS=16)
*************************************************************************/
typedefenum{
MOD_CUSTOM1=MOD_CUSTOM_BEGIN,
MOD_CUSTOM2,
#ifdef__FLAVOR_VENDOR_SDK__
MOD_VS,
#endif
//addmoduleidhere.
//MOD_XXX,
MOD_CUSTOM_END
}custom_module_type;
b.添加modid和taskindex的映射。
注意位置需要对应。
/*************************************************************************
*Global
*custom_mod_task_g
*
*DESCRIPTION
*moduletotaskindexmapping.
*forexample:
*INDX_CUSTOM1->MOD_CUSTOM1
*meansmoduleMOD_CUSTOM1belongstoINDX_CUSTOM1task
*
*Pleasearrangethemappingaccordingtocustom_config.hcustom_module_type
*sequence.
*
*GLOBALSAFFECTED
*
*************************************************************************/
custom_task_indx_typecustom_mod_task_g[MAX_CUSTOM_MODS]=
{
INDX_CUSTOM1,/*MOD_CUSTOM1*/
INDX_CUSTOM2,/*MOD_CUSTOM2*/
#ifdef__FLAVOR_VENDOR_SDK__
INDX_VS,
#endif
//addyoutaskindexhere.
//INDX_XXX,
INDX_NIL/*PleaseendwithINDX_NILelement*/
};
/*************************************************************************
*Global
*custom_comp_config_tbl
*
*DESCRIPTION
*Thearraycontainssystemcomponenttasks'configurationinformation
*
*GLOBALSAFFECTED
*
*************************************************************************/
constcomptask_info_structcustom_comp_config_tbl[MAX_CUSTOM_TASKS]=
{
/*INDX_CUSTOM1*/
{"CUST1","CUST1Q",210,1024,
#ifdefCUSTOM1_EXIST
custom1_create,KAL_FALSE
#else
NULL,KAL_FALSE
#endif
10,0
},
/*INDX_CUSTOM2*/
{"CUST2","CUST2Q",211,1024,
#ifdefCUSTOM2_EXIST
custom2_create,KAL_FALSE
#else
NULL,KAL_FALSE
#endif
10,0
},
#ifdef__FLAVOR_VENDOR_SDK__
/*INDX_VS*/
{"VS","VSQ",212,1024,
vs_sys_task_001_create,KAL_FALSE,10,0
},
#endif
//addyourcomptask_info_structhere.
//pleasereferencetocomptask_info_structdefine.
/*INDX_XXX*/
/*
{“XXX”,“XXXQ”,211,1024,
XXX_create,KAL_FALSE
}
*/
};
c.实现XXX_create。
详细参考代码中的custom1_create函数实现方式。
d.定义MSGID。
文件:
/*Addcustomizationmessageidhere*/
MSG_ID_CUSTOM1_CUSTOM2=CUSTOM_MSG_CODE_BEGIN,
MSG_ID_CUSTOM2_CUSTOM1,
//addMSGIDhere.
//MSG_ID_XXX,
7.如何添加一个新的NVRAM项?
NVRAM根据级别分3种region:
MT–系统,不对用户开放。
MP–和应用相关的,用户可以读到,写入。
CT–专门针对用户的,某个客户专用的一般放这里。
步骤如下:
a.定义新的LID,以及size和total数量。
MT:
mcu\interface\ps\nvram_data_items.h
在nvram_lid_core_enum中添加新的LID。
MP:
mcu\custom\common\PLUTO_MMI\nvram_common_defs.h
在nvram_lid_commapp_enum中添加新的LID。
MP:
\custom\app\PROJECTNAME\nvram_user_defs.h
在nvram_lid_cust_enum中添加新的LID。
b.
驱动开发
以下未说明文件的配置在项目make文件上进行:
mcu\make\PROJECTNAME.mak
1.设置BB
PLATFORM=MT6268
#HardwarePlatform,MT6208,FPGA,MT6218,MT6218B,MT6219,MT6226,MT6227,MT6228,MT6229...etc.
BOARD_VER=BROADMOBI68_09B_BB
#Basebandmainboarddescription,SHOULDBEONEOFTHEFOLLOWINGS
#MT6208_EVB,MT6208_CEVB,MT6205_CEVB,ORDNANCE,KLM2003_BB,CHICAGO2003_BB,
#MT6218_MW001,CANNON,MT6218B_EVB,JUPITER_EVB,MT6219_EVB,
#MT6226_EVB,MT6227_EVB,MT6228_EVB,MT6229_EVB
MCU_CLOCK=MCU_245_76M
#MCUclocksetting,MCU_13M,MCU_26M,MCU_39M,MCU_52M,MCU_104M
MCU_DCM=DCM_ENABLE
#DCM_ENABLE,DCM_DISABLE
#DynamicClockManagement
#AvailableBBchip:
MT6217,MT6226,MT6226M,MT6227,MT6228,MT6229...etc.
EXT_CLOCK=EXT_26M
#Externalclocksourcesetting,EXT_13M,EXT_26M
2.设置RFModule
RF模块:
UMTS_RF_MODULE=CUSTOM_MT6160
RF_MODULE=AD6546_CUSTOM
晶振类型:
AFC_VCXO_TYPE=VCTCXO
#VCTCXO:
VCTCXO
#VCXO:
VCXO
#VCXO_SC:
VCXOwith7areaslopecontrol
#VCXO_TC:
VCXOwithtemperaturecompensation
#VCXO_SC_TC:
VCXOwith7areaslopecontrol&temperaturecompensation
COM_DEFS_FOR_CUSTOM_MT6160=MT6160_RFCUSTOM_MT6160
UMTS_BAND_I=TRUE#TRUE,FALSE
UMTS_BAND_II=TRUE#TRUE,FALSE
UMTS_BAND_III=FALSE#TRUE,FALSE
UMTS_BAND_IV=FALSE#TRUE,FALSE
UMTS_BAND_V=TRUE#TRUE,FALSE
UMTS_BAND_VI=FALSE#TRUE,FALSE
UMTS_BAND_VII=FALSE#TRUE,FALSE
UMTS_BAND_VIII=FALSE#TRUE,FALSE
UMTS_BAND_IX=FALSE#TRUE,FALSE
UMTS_BAND_X=FALSE#TRUE,FALSE
驱动代码:
mcu\custom\l1_rf\$(RF_MODULE)\l1d_custom_rf.h
mcu\custom\l1_rf\$(RF_MODULE)\m12193.c
3.设置PMIC–电源管理模块
PMIC=MT6326
#ChargeFunction,NONE,MT6305orMT6318
4.设置LCD
LCD_MODULE=BROADMOBI68_09B_LCM
#BasedontheLCMsolutions(evenmultipleLCMmodulesforthisproject)#SHOULDBEONEOFTHEFOLLOWINGS,basedontheLCM#MTKLCM-Mono,102x64
#MTKLCM_COLOR-Color,120x160,forMT6218_MW001orMT6205_CEVB
#ORDNANCELCM-Mono,112x64
#KLMLCM-Color,128x128
#INFOLCM-Color,128x128
#TOPPOLY_LCM-Color,128x160,forMT6218B_EVB
#SONY_LCM
MAIN_LCD_SIZE=320X480
#Todistinguishthemainlcdsize.
#Wecanuseittocopythematchingresources,suchthemecomponents.h,Fontres.c,L_xxx.h,etc,toPLUTO_MMIfolder
SUB_LCD_SIZE=NONE
#NONE,48X64BW,64X96,96X64BW,96X64,128X128
COM_DEFS_FOR_BROADMOBI68_09B_LCM=BROADMOBI68_09B_LCMTFT_MAINLCD
#TFT_MAINLCD–LCD类型
驱动代码:
mcu\custom\drv\LCD\$(LCD_MODULE)\lcd.c
mcu\custom\drv\LCD\$(LCD_MODULE)\lcd_hw.h
mcu\custom\drv\LCD\$(LCD_MODULE)\lcd_sw.h
mcu\custom\drv\LCD\$(LCD_MODULE)\lcd_sw_inc.h
mcu\custom\drv\LCD\$(LCD_MODULE)\lcd_rnd.h
5.设置Camera
CMOS_SENSOR=OV2655
#OV9640,PAS105,OV9650
#MT9D011,
#6229uses2Msensor-MT9D011
SENSOR_ROTATE=SENSOR_ROTATE_0
#SENSOR_ROTATE_0,SENSOR_ROTATE_90,SENSOR_ROTATE_180,SENSOR_ROTATE_270
HORIZONTAL_CAMERA=TRUE
#FALSE,TRUE
#Toenablehorizontalcamerafeature.
#AddHORIZONTAL_CAMERAtoglobalcompileoptionwhenthevalueisTRUE.
WEBCAM_SUPPORT=TRUE
#TRUE,FALSEforWEBCAMERAsupport
SENSOR_TYPE=RAW
#RAW,YUV,DIRECT,NONE
对摄像头FineTune直接联系厂商或MTK。
驱动代码:
mcu\custom\drv\camera\PROJECTNAME\camera_hw.c
mcu\custom\drv\camera\PROJECTNAME\camera_tuning_oper.c
6.FM设置
FM_RADIO_CHIP=MT6188A1#NONE,TEA5767HN,
FM_RADIO_RECORD=FALSE#TRUE,FALSE
7.TP(TouchPanel)设置
TOUCH_PANEL_SUPPORT=TP_INTERNAL#NONE,MT6301,