MTK平台驱动调试介绍_第1页
MTK平台驱动调试介绍_第2页
MTK平台驱动调试介绍_第3页
MTK平台驱动调试介绍_第4页
MTK平台驱动调试介绍_第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 mcu make Option mak mcu make 不同的项目需求不同 需要修改和添加一些宏开关控制 基本格式和步骤 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的初始化设置 配置中断号 蓝牙中断号 Charger USB中断检测号等 键盘定义 设置对power键才能正常开机 ADC通道设置 Charger USB检测通道等 其他设置 T卡 音频PA开关设置等 3 整合LCD代码及背光代码 调试LCD和背光也需要从供应商处拿到以下资料 LCM型号 例如 TRULY 1N2007 LCM模组驱动IC型号及spec 例如 R61513Initialcode sleepcode背光芯片spec背光代码的整合需要注意的是脉冲计数方式还是PWM方式控制EN脚 LCD代码整合需要注意 数据传输的位数 blockwrite刷屏时起始 结束坐标的寄存器设置等等 后面再详细介绍 到这里为止EVT软件就可以整合出来 提供给产线贴片用了 三 各模块调试优化拿到主板后需要开始各模块的调试和优化 比如LCD显示效果等 三 各模块调试介绍 主要包括 GPIO GPOBacklightLCMVibratorTouchpanelCameraKeypadAFEADCEINTCharger USBFlashBTOthers 模块调试 GPIO GPO mcu custom drv misc drv SIMC25 06B BB gpio drv cvoidGPIO init void GPIO0 7配置为GPIO模式 DRV WriteReg GPIO MODE1 0 x0000 DRV 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 mcu custom drv misc drv SIMC25 06B BB custom 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 i temp i GPIO WriteIO 0 7 for j 0 j 100 j GPIO WriteIO 1 7 for j 0 j 20 j else GPIO WriteIO 0 7 PWM模式 需要根据实际情况在Mcu custom drv misc drv custom hw default c文件中修改PWM Level Info 即频率和占空比 MMI对背光的控制 mcu plutommi mmi gpio gpioSrc GeneralDeviceInterface c 关键的几个函数 voidTurnOffBacklight void 打开背光计时的timer StaticvoidBacklightTimerHdlr void 背光timer调用处理函数 VoidTurnOnBacklight gpio backlight time enumtime enum 打开的背光函数 注意 当time enum 0时 即调用TurnOnBacklight 0 作用是关闭背光的timer 使背光保持常亮不灭 如果需要恢复正常需要先调用一下TurnOffBacklight 函数使timer正常工作 背光 键盘灯的亮灭和lcdsleepin sleepout在以上函数里有同步的处理 模块调试 LCM 以SUNRISE 0255 LCM为例步骤1 XXX GPRS mak中配置LCD MODULE和MAIN LCD SIZE LCD MODULE SUNRISE 0255 LCMMAIN LCD SIZE 240X320Option mak中加入 COM DEFS FOR SUNRISE 0255 LCM SUNRISE 0255 LCMHX8312COLOR LCDTFT MAINLCDQVGA MAINLCD其中HX8312为LCDdriverIC的型号 COLOR LCD TFT MAINLCD QVGA MAINLCD为LCD的类型QVGA MAINLCD 240X320QCIF MAINLCD 176X220QQVGA MAINLCD 128X160如果有SubLCD 则需要顺序加入DUAL LCD COLOR SUBLCD以及型号名称 步骤2 Mcu custom drv LCD目录下添加SUNRISE 0255 LCM模块 目录以SUNRISE 0255 LCM为名 加入和修改5个文件分别为 lcd clcd hw hlcd sw hlcd sw inc hlcd sw rnd hlcd c 实现LCD的驱动接口 关键函数 init sleepin sleepout blockwrite init lcd interface等 lcd sw h 配置dataaddress commandaddress和outputformat等 lcd sw inc h 配置LCDWIDTH和HEIGHT lcd sw rnd h 一般不需修改 lcd hw h 一般不需要修改 关键函数介绍 Voidinit lcd interface void LCD读写时序的设置 参考driveric的spec 一般差异不大 较稳定 VoidLCD Init xxxx void 加入供应商给的初始化设置代码 需要注意开始部分的Reset信号设置 延时要满足IC的要求 LCD的显示效果基本上就在这段代码里调整 如果要兼容其它屏 需要在reset后读取IC的ID来区分不同的屏 VoidLCD EnterSleep xxxx void 和VoidLCD ExitSleep xxxx void 加入厂商给的sleep代码 voidLCD BlockWrite HX8312A kal uint16startx kal uint16starty kal uint16endx kal uint16endy 刷屏函数 设置刷屏时的起始 结束地址 Kal boolESD check void ESD措施 防止静电干扰使寄存器数据乱掉 定时去检测LCM的IC寄存器数据 如果数据乱了 则重新写入 保证LCD能正常显示 几个关键指令 Lcd sw h 写寄存器 LCD CtrlWrite xxxx 写数据 LCD DataWrite xxxx 读数据 LCD DataRead xxxx LCD常见问题及调试方法水波纹 flicker 正负电压不对称导致 需要调整Vcom值 白屏或花屏 可能是init寄存器设置有问题 在初始化代码中调试 刷一屏红黄蓝三色 如果正常则可以排除初始化设置的问题 送数据的方式有问题 分清8bit 9bit 16bit 18bit Blockwrite地址寄存器设置错误 颜色失常 需要调整gamma值 需要厂家调试 整体色调偏暗或是偏淡 对比度有问题 调整涉及到电压的几个相关寄存器 模块调试 Vibrator mcu custom drv misc drv SIMC25 06B BB custom equipment ckal boolcustom cfg gpio set level kal uint8gpio dev type kal uint8gpio dev level switch gpio dev type caseGPIO DEV VIBRATOR addcodehere break 马达控制方式 1 GPIO直接控制 只有高低电平的切换 2 PWM方式 可以调整占空比和频率来调节马达的振感 模块调试 Touchpanel custom drv misc drv M678 BB touch panel custom ccustom drv misc drv M678 BB touch panel custom hcustom drv misc drv M678 BB touch panel spi ccustom drv misc drv M678 BB touch panel spi hdrv src touch panel cdrv src touch panel main c修改点包括 GPIO分配 ADC值 坐标值 中断配置 压力检测等 经常调试用到的函数 IsPressureValid 压力检测 检测计算出Rtouch值 可用来去除飞笔 Tp read adc 读取当前pendown的adc值 可以改变算法 调整touchpanel的效果 其他的诸如 touch panel HISR touch panel init touch panel down hdr 可以在这些函数里加一些延时处理 可以改善断笔飞笔 模块调试 Camera 以OV9655为例 步骤1 XXX GPRS mak中配置ISP SUPPORT和CMOS SENSOR ISP SUPPORT TRUECMOS SENSOR OV9655CAMERA PIXEL ONE MEGA PIXEL注 一般30万象素可以插值到100万 130万可以插值到200万象素 如果是YUVsensor 需要设置 YUV SENSOR SUPPORT TRUE步骤2 Mcu custom drv image sensor下添加OV9655目录 添加或修改文件 camera hw c ModulePoweron off控制 GPIO分配要看硬件的资源分配表 camera para c ISP Sensor相关寄存器配置 在实际调试中对比效果来修改 image sensor c timing sensorinit poweron off preview capture等接口实现 image sensor h 有关sensor一些属性设置 一些宏定义 camera info c 一般不需修改 在完成所有的功能之后 效果调试是主要工作 主要工具 META CCT等 关于分屏的一点说明 Camera录像时经常碰到preview或者capture分屏的现象 如果录像后保存的片源放到电脑上看还是有分屏 说明问题出在sensor录像这一块 通常我们是降低录像的帧率来解决问题 15fps 12fps 如果是preview时移动手机在屏上看到的分屏 特别是QVGA的屏经常碰到这种情形 则原因是sensor采集数据往屏的buffer里填数据的时序和LCD刷屏的时序不匹配的导致 二者间缺少一个握手信号 所以经常会出现两帧图像重叠的现象 即LCD上看到的分屏 后续MTK会引出一个SYNC同步信号用于LCD和sensor的匹配 解决这个问题 关于显示效果的调试 RAWsensor数据处理这一块是BB的ISP处理 也需要CCT工具调试 通常需要等mtk工程师过来支持 YUVsensor数据处理是在sensor的IC里做的 所以一般是IC厂商过来支持 但是缺少专业工具调试 有同事已经做好了用ATcommand写寄存器数据调sensor的方法 比较方便 模块调试 Keypad 键盘定义需要对照硬件资源配置表来设置 custom drv misc drv M678 BB keypad def cconstkeypad structkeypad custom def ifdefined PHONE SLIDE 滑盖机型 ifdefined SLIDE M678 addm678keypaddefinehere ROW0 第一列 DEVICE KEY XX ROW1 第二列 else endif elifdefined PHONE BAR 直板机型 elifdefined PHONE SPIN 旋转机型 elifdefined PHONE CLAMSHELL 翻盖机型 endif 如果需要添加新键 除了上述外还需修改以下几处 interface hwdrv kbd table h定义DEVICE KEY XX 注意顺序 defineDEVICE KEY XX顺序值plutommi mmi Framework Osl OslSrc KeyBrd c假设DEVICE KEY XX为特定的按键定义特定的按键constU16PresentAllKeys KEY 0 KEY 1 KEY 2 KEY 3 KEY 4 KEY 5 定义特定的按键KEY XX 键盘映射 注意加入顺序要与PresentAllKeys 中一致 staticconstKeyPadMapnKeyPadMap 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 TIMER IDXX TONE DTMF 1 DEVICE AUDIO PLAY INFINITE 定义TIMERID 即KEY TIMER IDXX在plutommi mmi Inc TimerEvents h中顺序加入KEY TIMER IDXX 在drv src kbdmain c中可以修改debouncetime LongpressTime RepeatTime等参数来满足特殊的需要 模块调试 AFE custom audio M678 BB afe c 模拟开关 PA切换等 custom audio M678 BB audcoeff c FIRInput Output参数 custom audio M678 BB nvram default audio c GAIN值 l1audio afe2 c AFE管理代码 硬件给出的音频参数在audcoeff c和nvram default audio c中修改 Afe c中切换PA开关的动作 通常是一个GPIO或GPO来控制 Afe2 c中都是afe的管理代码 比如左右声道切换的函数等等 一般比较成熟 很少修改 可以关注一下里面函数的调用 模块调试 ADC 以MT6226平台为例 可用资源有ADC0 ADC6 通常用到ADC通道的有charger custom drv misc drv M678 BB adc channel c ifdefined LINE CONTROL EARPHONE SUPPORT constkal uint8ADC REMOTE 6 假设硬件接ADC6 endifkal uint8custom adc get channel adc channel typetype Switch type ifdefined LINE CONTROL EARPHONE SUPPORT caseremote adc channel return kal uint8 ADC REMOTE endif endif custom drv misc drv M678 BB auxmain cvoidaux task main task entry struct task entry ptr ifdefined LINE CONTROL EARPHONE SUPPORT kal uint8remote adc logic id kal uint8remote adc no endif 创建 ifdefined 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 endif while 1 receive msg ext q task info g task entry ptr task 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平台有Eint0 Eint7 Eint4 Eint7是GPIO复用过来的 以线控为例 介绍一下修改或者添加流程 interface hwdrv Eint htypedefenum ifdefined LINE CONTROL EARPHONE SUPPORT remote eint chann endif eint channel type custom drv misc drv M678 BB Eint 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 custom drv misc drv M678 BB auxmain 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对于Eint0 Eint3 可以通过下面的文件来修改debouncetime 而Eint4 Eint7没有debounce机制 custom drv misc drv M678 BB Eint def ckal uint8custom eint sw debounce time delay EINT MAX CHANNEL 50 EINT0 25 EINT1 50 EINT2 50 EINT3 也可通过下述函数来修改EINTaddr EINT Set HW Debounce EINT SW Debounce Modify 模块调试 Charger USB custom drv misc drv M678 BB chr 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 batterylevel1 8 35800

温馨提示

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

评论

0/150

提交评论