MTK平台驱动调试介绍幻灯片

上传人:每**** 文档编号:119480284 上传时间:2022-07-15 格式:PPT 页数:38 大小:368KB
收藏 版权申诉 举报 下载
MTK平台驱动调试介绍幻灯片_第1页
第1页 / 共38页
MTK平台驱动调试介绍幻灯片_第2页
第2页 / 共38页
MTK平台驱动调试介绍幻灯片_第3页
第3页 / 共38页
资源描述:

《MTK平台驱动调试介绍幻灯片》由会员分享,可在线阅读,更多相关《MTK平台驱动调试介绍幻灯片(38页珍藏版)》请在装配图网上搜索。

1、Agenda一、驱动调试开发周期(一)给出EVT贴片软件(二)EVT至MP驱动调试(三)MP后项目维护二、驱动调试步骤(一)掌握资料(二)EVT贴片软件的整合(三)各模块调试优化三、各模块调试介绍一一.驱动调试开发周期驱动调试开发周期(一)给出(一)给出EVTEVT贴片软件贴片软件接手新项目后需要根据硬件资源配置表和机器的配置整合一版软件,用于EVT试产主板贴片用,最低要求要能开机,背光能够点亮。如果LCD能点亮正常显示,则有利于产线测试,加快项目进度。(二)(二)EVTEVT至至MPMP驱动调试驱动调试拿到主板后调试各个模块:调试LCD、Camera效果等,保证各个模块能够正常工作。一直到量

2、产前需要和硬件,测试工程师不断沟通解决出现的问题。(三)(三)MPMP后项目维护后项目维护量产后需要跟进产线出现的问题及客户反映的问题。二二.驱动调试步骤驱动调试步骤 (一)掌握资料(一)掌握资料通常开始一个新项目的驱动调试的时候,需要掌握以下资料。1.1.硬件资源配置表硬件资源配置表(Hardware resource table)它包括BB上所有硬件资源的用法:GPIO/GPO InterfaceInterrupt settingKeypad settingADC settingChip Select/Audio setting/T-Flash Card Interface2.2.硬件原理

3、图硬件原理图详细的硬件接法,便于调试时参考用。3.3.产品规格书产品规格书/产品定义产品定义了解项目定义:机器的结构形式、LCD像素大小、sensor类型等。以上资料由项目经理和硬件工程师给出。(二)(二)EVTEVT贴片软件的整合贴片软件的整合1.1.配置配置 makefilexxx_GPRS.mak(mcumake)Option.mak(mcumake)不同的项目需求不同,需要修改和添加一些宏开关控制。基本格式和步骤:MXX_GPRS.mak:XXX_XXX =XXX XXX_XXX=NONEXXX_XXX =TRUEXXX_XXX =FALSEOption.mak:ifdef XXX_X

4、XXifneq($(strip$(XXX_XXX),FALSE)COM_DEFS +=XXX_XXXendifendif代码中就使用代码中就使用XXX_XXX来控制相关代码;来控制相关代码;#if defined(XXX_XXX)/add code here#endif驱动常用的一些宏开关:RF_MODULE =SIMC25_06B_MT6139E#MT6129DAFC_VCXO_TYPE =VCXO#VCTCXO PMIC =MT6305#Charge Function,NONE,MT6305 or MT6318PLATFORM =MT6225 LCD_MODULE =TRULY_1N200

5、7_LCM MSDC_CARD_SUPPORT_TYPE=MSDC_SD_MMC FM_RADIO_CHIP =TEA5760UK#NONE,TEA5767HN,NAND_SUPPORT =FALSE USB_IN_NORMAL_MODE_SUPPORT=TRUE ISP_SUPPORT=TRUE#TRUE,FALSECMOS_SENSOR=OV7670BLUETOOTH_SUPPORT =BTMTK_MT6601 TOUCH_PANEL_SUPPORT =TRUE#TRUE or FALSEPHONE_TYPE =BAR#BAR,CLAMSHELL,SLIDE PLATFORM_NAME=X

6、XMAIN_LCD_SIZE=240X320 WEBCAM_SUPPORT =TRUE#TRUE,FALSE for WEB CAMERA support YUV_SENSOR_SUPPORT =TRUE#TRUE,FALSE2.2.根据根据Hardware resource table配置硬件资源配置硬件资源配置GPIO/GPO:GPIO/GPO的初始化设置;配置中断号:蓝牙中断号、Charger&USB中断检测号等;键盘定义:设置对power键才能正常开机;ADC 通道设置:Charger&USB检测通道等;其他设置:T卡,音频PA开关设置等。3.3.整合整合LCDLCD代码及背光代码代码

7、及背光代码 调试LCD和背光也需要从供应商处拿到以下资料:LCM型号,例如:TRULY_1N2007_LCM模组驱动IC型号及spec,例如:R61513Initial code/sleep code背光芯片spec背光代码的整合需要注意的是脉冲计数方式还是PWM方式控制EN脚。LCD代码整合需要注意:数据传输的位数、blockwrite刷屏时起始、结束坐标的寄存器设置等等。后面再详细介绍。到这里为止EVT软件就可以整合出来,提供给产线贴片用了。(三)各模块调试优化(三)各模块调试优化拿到主板后需要开始各模块的调试和优化,比如LCD显示效果等。三、各模块调试介绍三、各模块调试介绍主要包括:uG

8、PIO/GPO uBacklight uLCMuVibrator uTouch panel uCamera uKeypaduAFEuADC uEINT uCharger/USB uFlashuBTuOthers模模块调块调试:试:GPIO/GPOmcucustomdrvmisc_drvSIMC25_06B_BBgpio_drv.cvoid GPIO_init(void)/*GPIO0-7 配置为GPIO模式*/DRV_WriteReg(GPIO_MODE1,0 x0000);DRV_WriteReg(GPIO_MODE2,0 x5555);DRV_WriteReg(GPIO_MODE3,0 x

9、1555);DRV_WriteReg(GPIO_MODE5,0 x5680);DRV_WriteReg(GPIO_MODE6,0 x5515);DRV_WriteReg(GPIO_MODE7,0 x1555);DRV_WriteReg(GPO_MODE,0 x0005);/GPO0 for EA24#if defined(_BAR_K28_)GPIO_ModeSetup(2,0);GPIO_InitIO(1,2);GPIO_WriteIO(0,2);#elif defined(_BAR_S50_)/LK 2007-06-27GPIO_ModeSetup(0,0);GPIO_InitIO(1,0

10、);GPIO_WriteIO(0,0);#endif模模块调块调试:试:Backlight mcucustomdrvmisc_drvSIMC25_06B_BBcustom_equipment.ckal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type,kal_uint8 gpio_dev_level)switch(gpio_dev_type)case GPIO_DEV_LED_MAINLCD:/用屏的宏开关来控制代码 break;注意事项:需根据硬件接法区分背光芯片使能端控制是脉冲计数还是PWM方式。脉冲计数:在GPIO端输出高低电平

11、来模拟脉冲,连续发送一定数量的脉冲到背光芯片使能端,在其限定的范围之内,脉冲数越多,背光越亮,反之越暗。用此方式可以节省PWM资源用于其他用途。if(gpio_dev_level)switch(gpio_dev_level)case 1:temp=4;/7break;case 2:temp=11;/13break;case 3:temp=16;/19break;case 4:temp=20;/25break;case 5:temp=25;/27break;default:temp=16;break;for(i=0;itemp;i+)GPIO_WriteIO(0,7);for(j=0;j 100

12、;j+)GPIO_WriteIO(1,7);for(j=0;j12fps。如果是preview时移动手机在屏上看到的分屏,特别是QVGA的屏经常碰到这种情形。则原因是sensor采集数据往屏的buffer里填数据的时序和LCD刷屏的时序不匹配的导致。二者间缺少一个握手信号,所以经常会出现两帧图像重叠的现象,即LCD上看到的分屏。后续MTK会引出一个SYNC同步信号用于LCD和sensor的匹配,解决这个问题。关于显示效果的调试:RAW sensor 数据处理这一块是BB的ISP处理,也需要CCT工具调试,通常需要等mtk工程师过来支持;YUV sensor数据处理是在sensor 的IC里做的

13、,所以一般是IC厂商过来支持。但是缺少专业工具调试,有同事已经做好了用AT command 写寄存器数据调sensor的方法,比较方便。模块调试:模块调试:Keypad键盘定义需要对照硬件资源配置表来设置。customdrvmisc_drvM678_BBkeypad_def.cconst keypad_struct keypad_custom_def=#if defined(_PHONE_SLIDE_)/滑盖机型#if defined(_SLIDE_M678)/add m678 keypad define here/ROW 0(第一列)DEVICE_KEY_XX,/ROW 1(第二列)./.#

14、else#endif#elif defined(_PHONE_BAR_)/直板机型/#elif defined(_PHONE_SPIN)/旋转机型/#elif defined(_PHONE_CLAMSHELL)/翻盖机型/#endif;如果需要添加新键,除了上述外还需修改以下几处:interfacehwdrvkbd_table.h定义DEVICE_KEY_XX:注意顺序#define DEVICE_KEY_XX 顺序值plutommimmiFrameworkOslOslSrcKeyBrd.c假设DEVICE_KEY_XX为特定的按键定义特定的按键const U16 PresentAllKeys

15、=KEY_0,KEY_1,KEY_2,KEY_3,KEY_4,KEY_5,/定义特定的按键KEY_XX,;键盘映射(注意加入顺序要与PresentAllKeys 中一致)static const KeyPadMap nKeyPadMap=DEVICE_KEY_0,KEY_0,KEY_TIMER_ID0,TONE_DTMF_0,DEVICE_AUDIO_PLAY_INFINITE,DEVICE_KEY_1,KEY_1,KEY_TIMER_ID1,TONE_DTMF_1,DEVICE_AUDIO_PLAY_INFINITE,/映射特定的按键DEVICE_KEY_XX,KEY_XX,KEY_TIME

16、R_IDXX,TONE_DTMF_1,DEVICE_AUDIO_PLAY_INFINITE,;定义TIMER ID:即KEY_TIMER_IDXX在plutommimmiIncTimerEvents.h中顺序加入KEY_TIMER_IDXX;在drvsrckbdmain.c中可以修改debounce time,Long press Time,Repeat Time等参数来满足特殊的需要。模块调试:模块调试:AFEcustomaudioM678_BBafe.c(模拟开关、PA切换等)customaudioM678_BBaudcoeff.c(FIR Input/Output参数)customaud

17、ioM678_BBnvram_default_audio.c(GAIN值)l1audioafe2.c(AFE管理代码)硬件给出的音频参数在audcoeff.c和nvram_default_audio.c中修改。Afe.c中切换PA开关的动作,通常是一个GPIO或GPO来控制。Afe2.c 中都是afe的管理代码,比如左右声道切换的函数等等,一般比较成熟,很少修改。可以关注一下里面函数的调用。模块调试:模块调试:ADC以MT6226平台为例,可用资源有ADC0-ADC6。通常用到ADC通道的有charger&USB检测、耳机检测等等,也可以添加新的设备检测。以线控为例,介绍一下修改或者添加流程:

18、interfacehwdrvBmt.htypedef enum vbat_adc_channel=0,visense_adc_channel,vbattmp_adc_channel,#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_)remote_adc_channel,#endif adc_channel_type;customdrvmisc_drvM678_BBadc_channel.c#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_)const kal_uint8 ADC_REMOTE=6;/假设硬件接ADC6#e

19、ndifkal_uint8 custom_adc_get_channel(adc_channel_type type)Switch(type)#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_)case remote_adc_channel:return(kal_uint8)ADC_REMOTE);#endif#endif;customdrvmisc_drvM678_BBauxmain.cvoid aux_task_main(task_entry_struct*task_entry_ptr)#if defined(_LINE_CONTROL_EARPHONE

20、_SUPPORT_)kal_uint8 remote_adc_logic_id;kal_uint8remote_adc_no#endif/创建#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_)remote_adc_no =custom_adc_get_channel(remote_adc_channel)remote_adc_logic_id=adc_sche_create_object(MOD_AUX,remote_adc_no,40,1,KAL_TRUE);#endifwhile(1)receive_msg_ext_q(task_info_gtask_

21、entry_ptr-task_indx.task_ext_qid,¤t_ilm);switch(current_ilm.msg_id)/读ADCcase MSG_ID_READ_ALL_ADC_CHANNEL_REQ:#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_)aux_read_adc_channel(remote_adc_logic_id);#endifbreak;/销毁case MSG_ID_BMT_ADC_MEASURE_DONE_CONF:#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_)el

22、se if(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平台有Eint0 Eint7,Eint4 Eint7是GPIO复用过来的。以线控为例,介绍一下修改或者添加流程:interfacehwdrvEint.htypedef enum#if defined(_LINE_CONTROL_EAR

23、PHONE_SUPPORT_)remote_eint_chann,#endif eint_channel_type;customdrvmisc_drvM678_BBEint_def.c#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_)const kal_uint8 REMOTE_EINT_NO=3;/假设硬件配置为EINT3#endifkal_uint8 custom_eint_get_channel(eint_channel_type type)switch(type)#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_

24、)case remote_eint_chann:return(kal_uint8)REMOTE_EINT_NO);#endifcustomdrvmisc_drvM678_BBauxmain.c/中断处理函数void REMOTE_EINT_HISR(void)if(remote_state)/高电平/相关处理代码else/低电平/相关处理代码/中断注册void aux_task_main(task_entry_struct*task_entry_ptr)kal_uint8 remote_eint_no;#if defined(_LINE_CONTROL_EARPHONE_SUPPORT_)re

25、mote_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?电平触发高电平有效还是低电平有效等问题。Debounce time对于Eint0 Eint3,可以通过下面的文件来修改debounce time;而Eint4 Eint7没有debounce机制。custom

26、drvmisc_drvM678_BBEint_def.ckal_uint8 custom_eint_sw_debounce_time_delayEINT_MAX_CHANNEL=50,/*EINT0*/25,/*EINT 1*/50,/*EINT2*/50 /*EINT3*/;也可通过下述函数来修改EINTaddr()EINT_Set_HW_Debounce()EINT_SW_Debounce_Modify()模块调试:模块调试:Charger/USBcustomdrvmisc_drvM678_BBchr_parameter.c 充电相关电压和电流的设置:bmt_customized_stru

27、ct bmt_custom_chr_def=;里面包括一些重要的电压电流值的设置。电池格数的算法:custom_equipment.c中custom_cfg_vbat_level_regulator函数处理每格电压的设置:nvram_user_config.c(06B)/custom_hw_default.c(05C)/*Battery voltage Level*/3500000,/*Low Battery Power off*/3550000,/*Low Battery*/*battery level 1 8*/3580000,3630000,3740000,3840000,3950000

28、,9999999,9999999,9999999,CHARGER/USB检测的电压值:static const kal_int32chr_usb_detect_volt;因为charger和usb的检测是共用一个中断和adc通道,所以要靠一个电压值来区分是插入的是charger还是usb。以10pin mini usb接口来说,插charger的时候adc检测到的电压是3v左右;而插usb是1v左右。所以设定chr_usb_detect_volt为2V,高于2V判定为charger,代码走charger的处理流程;低于2V走usb的处理流程。注意:注意:10pin的接口因为插拔方便,所以容易出

29、现快速插拔时由于碰到接口弹片导致电压不稳而误报的现象。解决办法解决办法:延长此中断响应的时间。customdrvmisc_drvM678_BBEint_def.ccustom_eint_sw_debounce_time_delayEINT_MAX_CHANNEL 另外此模块可以关注一下以下文件Mcubmt*.*Mcudrvsrcpwic.模块调试:模块调试:Flash添加新的NAND:DrvsrcNAND_MTD.cstatic const flash_list NAND_ID_Table=/ID,planesize in MB,blocksize in KB,pagesize in B,ad

30、dress cycle,IO bus width,mtd sub driver/添加新的NAND的相关信息(参考芯片Spec)DA(Download Agent)部分代码(一般不需修改)DA_SRCsrcnand_dev_tbl.cConst NAND_Device_S g_NandFlashDevTbl=/加入新的NAND信息(参考芯片Spec);添加新的Nor FlashDA_SRCsrcflash_dev_tbl.cConst Nor_Device_S g_FlashDevTbl=/加入新的Nor信息(参考芯片Spec);对于DA的修改,需重新生成DA文件用于Flash Download Tool模块调试:模块调试:BTMTK开放代码较少。Driver基本上设置一下中断号和几个功能引脚就OK了。如果是MTK6601的蓝牙。需要在以下文件中设置:mcucustomcommonBt_common_config.cmcucustomdrvbluetoothSIMC25_06B_BBBtmtk_config.c如果是其他蓝牙在以下文件中设置:mcucustomappSIMC25_06B_BBBt_user_config.c模块调试:模块调试:Others 新需求,新功能调试:转盘、指纹识别、GPS、手机电视等等。部分资料从网络收集整理而来,供大家参考,感谢您的关注!

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!