MTK平台驱动调试介绍PPT课件_第1页
MTK平台驱动调试介绍PPT课件_第2页
MTK平台驱动调试介绍PPT课件_第3页
MTK平台驱动调试介绍PPT课件_第4页
MTK平台驱动调试介绍PPT课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Agenda,一、驱动调试开发周期(一)给出EVT贴片软件(二)EVT至MP驱动调试(三)MP后项目维护二、驱动调试步骤(一)掌握资料(二)EVT贴片软件的整合(三)各模块调试优化三、各模块调试介绍,一.驱动调试开发周期,(一)给出EVT贴片软件接手新项目后需要根据硬件资源配置表和机器的配置整合一版软件,用于EVT试产主板贴片用,最低要求要能开机,背光能够点亮。如果LCD能点亮正常显示,则有利于产线测试,加快项目进度。(二)EVT至MP驱动调试拿到主板后调试各个模块:调试LCD、Camera效果等,保证各个模块能够正常工作。一直到量产前需要和硬件,测试工程师不断沟通解决出现的问题。(三)MP后项目维护量产后需要跟进产线出现的问题及客户反映的问题。,二.驱动调试步骤,(一)掌握资料通常开始一个新项目的驱动调试的时候,需要掌握以下资料。1.硬件资源配置表(Hardwareresourcetable)它包括BB上所有硬件资源的用法:GPIO/GPOInterfaceInterruptsettingKeypadsettingADCsettingChipSelect/Audiosetting/T-FlashCardInterface2.硬件原理图详细的硬件接法,便于调试时参考用。3.产品规格书/产品定义了解项目定义:机器的结构形式、LCD像素大小、sensor类型等。以上资料由项目经理和硬件工程师给出。,(二)EVT贴片软件的整合,1.配置makefilexxx_GPRS.mak(mcumake)Option.mak(mcumake)不同的项目需求不同,需要修改和添加一些宏开关控制。基本格式和步骤:MXX_GPRS.mak:XXX_XXX=XXXXXX_XXX=NONEXXX_XXX=TRUEXXX_XXX=FALSEOption.mak:ifdefXXX_XXXifneq($(strip$(XXX_XXX),FALSE)COM_DEFS+=XXX_XXXendifendif代码中就使用XXX_XXX来控制相关代码;#ifdefined(XXX_XXX)/addcodehere#endif,驱动常用的一些宏开关:RF_MODULE=SIMC25_06B_MT6139E#MT6129DAFC_VCXO_TYPE=VCXO#VCTCXOPMIC=MT6305#ChargeFunction,NONE,MT6305orMT6318PLATFORM=MT6225LCD_MODULE=TRULY_1N2007_LCMMSDC_CARD_SUPPORT_TYPE=MSDC_SD_MMCFM_RADIO_CHIP=TEA5760UK#NONE,TEA5767HN,NAND_SUPPORT=FALSEUSB_IN_NORMAL_MODE_SUPPORT=TRUEISP_SUPPORT=TRUE#TRUE,FALSECMOS_SENSOR=OV7670BLUETOOTH_SUPPORT=BTMTK_MT6601TOUCH_PANEL_SUPPORT=TRUE#TRUEorFALSEPHONE_TYPE=BAR#BAR,CLAMSHELL,SLIDEPLATFORM_NAME=XXMAIN_LCD_SIZE=240X320WEBCAM_SUPPORT=TRUE#TRUE,FALSEforWEBCAMERAsupportYUV_SENSOR_SUPPORT=TRUE#TRUE,FALSE,2.根据Hardwareresourcetable配置硬件资源,配置GPIO/GPO:GPIO/GPO的初始化设置;配置中断号:蓝牙中断号、ChargerDRV_WriteReg(GPIO_MODE2,0 x5555);DRV_WriteReg(GPIO_MODE3,0 x1555);DRV_WriteReg(GPIO_MODE5,0 x5680);DRV_WriteReg(GPIO_MODE6,0 x5515);DRV_WriteReg(GPIO_MODE7,0 x1555);DRV_WriteReg(GPO_MODE,0 x0005);/GPO0forEA24#ifdefined(_BAR_K28_)GPIO_ModeSetup(2,0);GPIO_InitIO(1,2);GPIO_WriteIO(0,2);#elifdefined(_BAR_S50_)/LK2007-06-27GPIO_ModeSetup(0,0);GPIO_InitIO(1,0);GPIO_WriteIO(0,0);#endif,模块调试:Backlight,mcucustomdrvmisc_drvSIMC25_06B_BBcustom_equipment.ckal_boolcustom_cfg_gpio_set_level(kal_uint8gpio_dev_type,kal_uint8gpio_dev_level)switch(gpio_dev_type)caseGPIO_DEV_LED_MAINLCD:/用屏的宏开关来控制代码break;,注意事项:需根据硬件接法区分背光芯片使能端控制是脉冲计数还是PWM方式。脉冲计数:在GPIO端输出高低电平来模拟脉冲,连续发送一定数量的脉冲到背光芯片使能端,在其限定的范围之内,脉冲数越多,背光越亮,反之越暗。用此方式可以节省PWM资源用于其他用途。if(gpio_dev_level)switch(gpio_dev_level)case1:temp=4;/7break;case2:temp=11;/13break;case3:temp=16;/19break;case4:temp=20;/25break;case5:temp=25;/27break;default:temp=16;break;for(i=0;itemp;i+)GPIO_WriteIO(0,7);for(j=0;jtask_indx.task_ext_qid,#endif,break;/销毁caseMSG_ID_BMT_ADC_MEASURE_DONE_CONF:#ifdefined(_LINE_CONTROL_EARPHONE_SUPPORT_)elseif(mea_done_ptr-adc_sche_id=remote_adc_logic_id)adc_measure_count+;remote_value=(kal_int32)mea_done_ptr-volt;aux_remove_adc_channel(remote_adc_logic_id);#endif,模块调试:EINT,M6226平台有Eint0Eint7,Eint4Eint7是GPIO复用过来的。以线控为例,介绍一下修改或者添加流程:interfacehwdrvEint.htypedefenum#ifdefined(_LINE_CONTROL_EARPHONE_SUPPORT_)remote_eint_chann,#endifeint_channel_type;customdrvmisc_drvM678_BBEint_def.c#ifdefined(_LINE_CONTROL_EARPHONE_SUPPORT_)constkal_uint8REMOTE_EINT_NO=3;/假设硬件配置为EINT3#endifkal_uint8custom_eint_get_channel(eint_channel_typetype)switch(type)#ifdefined(_LINE_CONTROL_EARPHONE_SUPPORT_)caseremote_eint_chann:return(kal_uint8)REMOTE_EINT_NO);#endif,customdrvmisc_drvM678_BBauxmain.c/中断处理函数voidREMOTE_EINT_HISR(void)if(remote_state)/高电平/相关处理代码else/低电平/相关处理代码/中断注册voidaux_task_main(task_entry_struct*task_entry_ptr)kal_uint8remote_eint_no;#ifdefined(_LINE_CONTROL_EARPHONE_SUPPORT_)remote_eint_no=custom_eint_get_channel(remote_eint_chann);EINT_Registration(remote_eint_no,KAL_TRUE,remote_state,REMOTE_EINT_HISR,KAL_TRUE);#endif在注册中断时要注意:中断触发方式:电平触发/边沿触发?debounce:Enable/Disable?电平触发高电平有效还是低电平有效等问题。,Debouncetime对于Eint0Eint3,可以通过下面的文件来修改debouncetime;而Eint4Eint7没有debounce机制。customdrvmisc_drvM678_BBEint_def.ckal_uint8custom_eint_sw_debounce_time_delayEINT_MAX_CHANNEL=50,/*EINT0*/25,/*EINT1*/50,/*EINT2*/50/*EINT3*/;也可通过下述函数来修改EINTaddr()EINT_Set_HW_Debounce()EINT_SW_Debounce_Modify(),模块调试:Charger/USB,customdrvmisc_drvM678_BBchr_parameter.c充电相关电压和电流的设置:bmt_customized_structbmt_custom_chr_def=;里面包括一些重要的电压电流值的设置。电池格数的算法:custom_equipment.c中custom_cfg_vbat_level_regulator函数处理每格电压的设置:nvram_user_config.c(06B)/custom_hw_default.c(05C)/*BatteryvoltageLevel*/3500000,/*LowBatteryPoweroff*/3550000,/*LowBattery*/*batterylevel18*/3580000,3630000,3740000,3840000,3950000,9999999,9999999,9999999,CHARGER/USB检测的电压值:staticconstkal_int32chr_usb_detect_volt;因为charger和usb的检测是共用一个中断和adc通道,所以要靠一个电压值来区分是插入的是charger还是usb。以10pinminiusb接口来说,插charger的时候adc检测到的电压是3v左右;而插usb是1v左右。所以设定chr_usb_detect_volt为2V,高于2V判定为charger,代码走charger的处理流程;低于2V走usb的处理流程。注意:10pin的接口因为插拔方便,所以容易出现快速插拔时由于碰到接口弹片导致电压不稳而误报的现象。解决办法:延长此中断响应的时间。customdrvmisc_drvM678_BBEint_def.ccustom_eint_sw_debounce_time_delayEINT_MAX_CHANNEL另外此模块可以关注一下以下文件Mcubmt*.*Mcudrvsrcpwic.,模块调试:Flash,添加新的NAND:DrvsrcNAND_MTD.cstaticconstflash_listNAND_ID_Table=/ID,planesizeinMB,blocksizeinKB,pagesizeinB,addresscycle,IObuswidth,mtdsubdriver/添加新的NAND的相关信息(参考芯片Spec)DA(DownloadAgent)部分代码(一般不需修改)DA_SRCsrcnand_dev_tbl.cConstNAND_Device_Sg_NandFlashDevTbl=/加入新的NAND信息(参考芯片Spec);,添加新的NorFlashDA_SRCsrcflash_dev_tbl.cConstNor_Device_Sg_FlashDevTbl=/加入新的Nor信息(参考芯片Spec);对于DA的修改,需重新生成DA文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论