MTK平台的DEVICE驱动20100428_z重要.doc

上传人:scccc 文档编号:12508564 上传时间:2021-12-04 格式:DOC 页数:71 大小:1.80MB
返回 下载 相关 举报
MTK平台的DEVICE驱动20100428_z重要.doc_第1页
第1页 / 共71页
MTK平台的DEVICE驱动20100428_z重要.doc_第2页
第2页 / 共71页
MTK平台的DEVICE驱动20100428_z重要.doc_第3页
第3页 / 共71页
MTK平台的DEVICE驱动20100428_z重要.doc_第4页
第4页 / 共71页
MTK平台的DEVICE驱动20100428_z重要.doc_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《MTK平台的DEVICE驱动20100428_z重要.doc》由会员分享,可在线阅读,更多相关《MTK平台的DEVICE驱动20100428_z重要.doc(71页珍藏版)》请在三一文库上搜索。

1、MTK平台的DEVICE驱动2008/08/28 Vincent主要内容 BOOT-UP FLASH配置 GPIO LCD ADC Scheduler Battery Management Keypad PWM AUDIO CAMERABOOT-UPRESET Boot fromBOOTRORI-Receiving startuppattern via UART 1within 150ms?* YESMETA Modencui nitsrcbootarm.smcuinitsrcini.c初始化顺序Mcuinitsrcbootarm.s包含着boot Rom codeMcunucleaussrc

2、inc.c初始化系统函数INCJnitializeMcuinitsrcinit.cApplicationnitialize初始化硬件以及系统 M c ud rvs rcd rv_co mm.c驱动初始化(void Drvjnit(void)初始化顺序用户定制设备的初始化m c uc u s to md r vm i sc_d r v”C u s to m_p rj ”c u stom_drv_init.c用户设备初始化函数custom_drv_init(void) 初始化LCD函数指针映射分配等5GPIO5SPI,Alerter, PWM等FLASH酉己置通常NOR FLASH分为两个区,其中

3、的一个 区为CODE区,另外区为文件系统区,此部 分代码参考flashconf.Co具体的配置参考下 图。Figure 14: Flash Configuration Example0x00000000Code Banks0x00300000File SystemBanks0x003FFFFF'Step #define FLASH_BASE_ADDRESS OxOEOOOOO /Ox1 EOOOOO,old value#define ALLOCATED_FAT_SPACE 0x200000 /0x200000 = 2MbytesP Step 3. 7 #ifdef_LOW_COST_S

4、INGLE_BANK_FLASH_ static FlashRegionlnfo Regionlnfo= #elsestatic const FlashRegionlnfo Regionlnfo= #endif#ifdef _SPANSION_PL_N_0x40000, 7,/0x20000, 8,0x10000, 4/Ox20000, 8,# else0x10000, 31,/0x20000, 8f0x2000,8f/0x20000, 8,#endifEndRegionlnfo /* Don't modify this line 7;广/r Step 4. 7严#define TOT

5、AL_BLOCKS 39 /old value 16 /Maximum 127Step 5. 7r Partition Sectors in the First Partitions (Unit Sectors) one sector 512 Byte 7 r 0 for no partition 7#define PARTITION_SECTORS 1536r Step 6. 7r page buffer size in WORD for page buffer program 7 DWORD PAGE BUFFER SIZE = 16;/32;GPIO驱动:Mcui nterfacehwd

6、 rvgpio_hw.hMcui nterfacehwd rvgpio_sw.hMcudrvsrcgpio.c用户定制代码部分Gpio_drv.c包含着用户端口初始化,根据硬 件设计来实现软件LCD组成LCM (LCD Module) LCD模块是手机的一个重要 组成部分。在折叠式手机中,LCM位于上翻盖 中,它包含了LCD,Speaker, Receiver, Motor 等。在某些Camera功能的手机中,LCM模块还 包含了camera ASIC和Sensor。背而示意图Sub LCDconn ector背而示意图2LCM送样流程厂LCM结构设计一|页目立T卜曲嚮啓T样品测试卜f卜晶确认

7、T_CM电路设和迫 LCM供应商根据结构和电路设计要求,制作LCM样品。收到LCM样品后,对LCM样品进行结构和电气方面的验 证。结构验证由结构部负责。电气测试为硬件部、软件部 和测试部共同完成。驱动工程师负责前期的调试工作,直到LCM模块能够正常 工作,LCM的底层软件由基带工程师提供给软件部集成。LCD测试1. 编写驱动软件,对LCD进行调试。包括显示、开关屏和对比度等。2. LCD背光调节测试。3. Speaker, receiver, motor验证。4. 通话噪声,背光噪声检查。5. 对于带camera功能的LCD,需要进彳亍camera相关功能的测试。6. 其他功能测试,七色灯测试

8、。7. 完成软件的LCD和camera软件的集成合优化。8. 配合测试工程师完成待机电流,翻合盖测试合高低温等测试。9. LCD显示效果确认,包括三色图显示,全白,全黑画面,灰度图, 其他人物照片,景色照片等希望关如能认盲施责廳亍務入环节的测试,尽量早的暴露问题。 建立相关样品如LCD/CAMERA等样品送样规范 驱动工程师完成调试I寸候,能够给予调试报告。LCD接口方式LCD接口方式目前大部分LCD的接口方式有SPI,8080,6800三种接口方式。常用的接口如下,并口方 式。【/CS/WR/RDA0/ResetRow O-yyDriver -c0 XXLCD displaypanelLCD

9、LPCEO# < LPCE1# vLRST# < LRD# < LWR# +LPAO# < NLD7:0 <Parallel LCDInterface<=>LayerO ControllerLSCEOtf*LSCE1#*LSDA < LSAO#< LSCLK<EA25:0 <ED15:0 <EC7:0 <ERD# v EWR# <Serial LCDInterfacebverlaytzLayerl ControllerLaver2 ControllerLExternal MemoryInterfaceLCD A

10、HBMasterl<=>Layer3 ControllerASYSRAMLCD AHBMasterO<=>LUTO<=>LUT1MT6219LCDLCD InterfaceLCDLCD底层函数LCD底层定义的主要函数如下:Icd.clcd_hw.hlcd_sw.hlcd_sw_inc.hlcd_sw_rnd.htypedef structvoid (* Init)(kal_uint32 background, void *buf_addr);void (* PWRON)(kal_bool on);void (* BrightLevel)(kal_uint8

11、level);void (* SCREENON)(kal_bool on);void (* BlockWrite)(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy);void (* GetSize)(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height);void (* Sleepln)(void);void (* SleepOut)(void);void (* PartialOn) (kal_uint16 start_page,kal_uint16 en

12、d_page);void (* PartialOff) (void);kal_uint8 (*partial_display_align) (void);广Engineering mode*/kal_uint8 (* get_param_number)(lcd_func_type type);void (* set_bias)(kal_uint8 *bias);void (* set_contrast)(kal_uint8 *contrast);void (* setjinerate)(kal_uint8 *linerate);void (* set_temp_compensate)(kal_

13、uint8 *compensate);LCD_Funcs;LCD重点函数介绍#define LCD_CtrlWrite_HX8306A(_data) SET_LCD_CMD_PARAMETER(O 丄 CD_CMD,(_data& 0xFF00)«2)|(_data8xFF)<<1); LCD_SEND_DMA_CMD(1 ); #define LCD_DataWrite_HX8306A(_data) SET_LCD_CMD_PARAMETER(O)LCD_DATA,(_data & 0xFF00)«2)|(_data&0xFF)

14、1;1 ); LCD_SEND_DMA_CMD(1 ); 根据数据位数以及驱动IC的要求完成相应的LCD寄存器的读写。 void (* Init)(kal_uint32 background, void *buf_addr); void (* BlockWrite)(kal_uint16 startx,kal_uint16 starty,kal_uint16 endxj<al_uint16 endy)j在调试时候根据厂商代码完及初始化程序的编 写。尝试刷屏操作,观察LCD反映。如果能观察 至IJLCD上有反映,说明读写LCD寄存器命令已经 有作用o在完成L$D显示后,工作只是完成一半,还

15、有更重 要昭工作要做,就是根据前面提到的测试规范进 行样品测试。如何在今后项目改善效果显示效果建议增加供应商支持力度,简单 改变几个参数可能对效果进行改善 UI风格 建议选些轻快明亮的颜色选用咼品质的屏,与项目定位有关显示效果不好的LCD可能会影响camera预览 效果,所以请做好前面的把关工作。ADC SchedulerSynO Syn1 |Syn2| |Syn3| |Syn4| |Syn5| |Syn6| < TimeEventlTimeEventO Sync7_ADC machine1 Auto measure.2. TDMA timer Event trigger.ADC酉己置根

16、据硬件设计,完成相应的ADC的channel配 置。 const kal_uint8 ADC_VBAT = 0; const kal_uint8 ADC_VISENSE = 1; const kal_uint8 ADC_VBATTMP = 2; const kal_uint8 ADC_VCHARGER = 3; const kal_uint8 ADC_ACCESSORYID = 5 const kal_uint8 ADC_PCBTMP = 6;Battery ManagementMMIMMIAUX taskNVRAMPMICdriverADC driverBMT充电的检测BMTInit saf

17、ety timerADC check for abnormal conditiona. Vbat > 4.5V Battery over voltageb. Vchg> 6.5 otVchg< 4.5 Invalid chargerc. BATEMP < OoC or BATEMP > 45oCBattery temp .too cold or over heatd. BAUD N.A.e. ICHGon> 750mA oiCHGon< 20mA Invalid charger or batteryf. ICHGoft> 50mA Charger

18、 failg. Check ADC fail,hSafety timer timeout (6hr)i. Charger plugged outj.Bad contact of ChargerAll boundary values above can be customizedP.S. XXX.on : ADC value is measured during pulse on charging and RF off statexoff: ADC value is measured during pulse off charging and RF off state.xxx: ADC valu

19、e is measured during pulse on and pulse off charging and RF off stateCharger detectedmode4.1VVbat off >4.1VbaLoff >4.05V anstatestastaTa kTausestateVbat off>4.05V amodeon>4.0and inmoderecharVbat offVbat-Off <3.8V or in stand by mode ichargeIkingInitstateVbaLoff>4.05V and inChargeco

20、mpleteVbat offICHG<talkingop-off充电参数(bmt_customized_struct bmt_custom_chr_def =31,/*GPIO_CHRCTRL*/14,/*GPIO_BATDET77ZGPIO_VIBRATOR7广charing parameters*/广Check Phy parameters,Maybe changecT/1 lOOOOOZTypicaLLLBATTYPE*/11OOOOO,/*TypicaLNI_BATTYPEV10OOOOOZICHARGE_ON_HIGH720000,/*ICHARGE_ON_LOW71 oooo

21、oo,/*icharge_off_high*/ /?500004050000,/*VFAST2TbPOFF_THRES72500000,/*BATTMP_MINUS_40C71469409,/*BATTMP_0C7520042,/*BATTMP_45C74500000,/*MAX_VBAT_LI*/5500000,/*MAX_VBAT_NI73400000ZV_PRE2FAST_THRES*/ 250000ZLTdPOFF2FAST_THRES7 /*250ma?TOPOFF->FAST7 120000ZI_TOPOFF2FULL_THRES7 /*120ma,TOPOFF->BA

22、TFULL74110000,/*V_FULL2FAST_THRES*/ /*BATFULL->FAST*/414557,/*V_TEMP_FAST2FULL_THRES_NI*/ /*50oC?FAST->BATFULL*/ 4050000ZV_FULL2FAST_THRES_NI7600000ZFASTJCHARGCHIGHLEVEL7 /*600ma?for table search*/ 400000,/*FAST_ICHARGE_LOWLEVEL*/ /*400maJor table search*/ 40500001/*V_PROTECT_HIGH_Lr/3800000,广

23、 V_PROTECT_LOW_LF/6500000,/*VCHARGER_HIGH70,/*VCHARGER_LOW7/*Time delay*/r PRE CHARGE search table*/广 TON = 3s,TOFF=2s*/3,/*PRE_TON*/2,广PRE TOFF7充电参数r FAST CHARGE ,search table*/*TON = 3s,TOFF=Os73,/*TOPOFF_TON70,/*TOPOFF_TOFF*/6,/*BATFULL_TON_Lr/ 广unit: second*/ 0/*BATFULL_TOFF_LI71 ,/*BATFULL_TON_

24、NI7 /*unit: second*/9,广 BATFULL_TOFNF/6,广 BATFULL_TOFF/ 10ZBATHOLD OFF*/2.5,/*ADCJSENSE_RESISTANCE_FACTOR724, /*bmt measure discard time*/ /*24 ticks*/ADC_CALIDATA adc_cali_param5524,5524,5524,5524,5524,5524, 5524,(23286),(23286),(23286),(23286),(23286),(23286), (23286),(二)/*ratio = adc_volt_factor/

25、1007/const kal_uint16 adc_volt_factorADC_MAX_CHANNELrv ly c 5 r10105025505050,/const kal_uint8 TONOFFTABLE2=7U8U9U751,/*talk V851,/*talk V951/*talk*/,/const kal_int32 CurrOffset3=100000,/100ma100000,100000,KAL_FALSE, /* enable checking temperature while charging */KAL_TRUE r enable checking charging

26、 voltage while charging */ ;KEYPAD低级服务中断程序:激活高级中断服务高级中断服务:激活KBD task KBD发送相应的消息给MMI层等KEY PAD 阵歹 U文件 keypad_def.c结构体keypad_c usto m_d ef记录着键盘阵 歹U。驱动工程师根据硬件设计的电路图完成键盘 阵列的写入KEY PAD阵列示例r row 0 */ DEVICE_KEY_SEND, DEVICE_KEY_SK_RIGHT, DEVICE_KEY_N(DNE, DEVICE_KEY_FUNCTION, DEVICE_KEY_NONE, DEVICE_KEY_NON

27、E, DEVICE_KEY_END,/* row 1 7 DEVICE_KEY_UP, DEVICE_KEY_SK_LEFT, DEVICE_KEY_MENU, DEVICE_KEY_NONE, DEVICE_KEY_NONE, DEVICE_KEY_NONE, DEVICE_KEY_END,/* row 2 7 DEVICE_KEY_DOWN, DEVICE_KEY_LEFT, DEVICE_KEY_RIGHT, DEVICE_KEY_NONE, DEVICE_KEY_NONE, DEVICE_KEY_NONE, DEVICE_KEY_END,PWMInternalPWM?:):乞 ?5 _

28、jn_n_run_n_PWM Clock, 13MH乙 13/2 MHZ , 13/4MH乙 13/8MHzA* PWM counter,(12 bits)PWM threshold(12 bits) PWM2_lnit(PWMCIock_SEL clk_sel,PWMCIock_DIV Clock_div) PWM1_Start PWM1_Stopvoid PWMnit(PWMCIock_SEL clk_sel,PWMCIock_DIV Clock_div)AUDIOSpeechPCMfWAV,MP3,Melody,Wave table,SMFrAMR,i Melody, Voice mem

29、o and etcL1 Audio Adaptation LayerExternalMIDI Chips (Opt.)(MT6205B only)AudioVoic« lik-eVoice、ADC厂EaMone Riylit- Ch am n elHea<he1Hiwket SpeakeiE<M|>lioneL曲.Ch anibdHan <ls etMicro phon HeadsetMicrophoneAFE void AFE_SwitchExtAmplifier( char sw_on )当使用loud speaker,需要调用此函数打开外部音频功放 co

30、nst unsigned char L1 SP_MICROPHONE1 =L1SP_LNA_0;- const unsigned char L1SP MICROPHONE2 =L1SP_LNA_1; const unsigned char L1SP SPEAKER1 =L1SP_BUFFER_0; const unsigned char L1SP_SPEAKER2 =L1SP_BUFFER_ST;- const unsigned char L1SP_LOUD_SPEAKER = L1 SP_BUFFER_ST_M|L1 SP_BUFFER_EXT;音频参数的修改音频包含三种模式:1. N0R2

31、. L0UD3. HEADSET相关文件:Nvram_default_audio.cAudcoeff.c音频参数示例(一)#define GAIN NOR MED VOL 级一 一 一#define GAIN_NOR_MED_VOLO #define GAIN_NOR_MED_VOL1 #define GAIN_NOR_MED_VOL2 modified from 55 >60#define GAIN_NOR_MED_VOL3 #define GAIN_NOR_MED_VOL4 modified from 110 ->100#define GAIN_NOR_MED_VOL5 mod

32、ified from 120 ->1103默认的音频参数等03560 /zwg 06032880100 /zwg 060328110 /zwg 060328124 /zwg 060328#define GAIN_NOR_MED_VOL6 modified from 135 ->124咅频参数示例(二) const signed shortAudio_FIR_Output_Coeff_a30 = 32767,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,05音频问题涉及到结构,软件,硬件等很多方 击,客户反馈问题也较

33、多,调试项目时修 还是请重点关注!也请大家想想从哪些方 面还可以做的更好呢?、除了声音大小之外,也可以从声音的音源方 面入手,给大家带来听觉享受!关于声音问题的几点个人看法音腔设计合理性,密封性,请给出评估 Speaker选型,前期的测试 Gain值调试,软件集成,最终测试音源的选择其他增加音效的办法,多speaker,立体声 芯片选择等CMOS Sensor成像原理信号传输晶体管oi in3d90技术角度分析成像原理,核心结构上每单位像素点由一个感光电极、一个电 信号转换单元、一个信号传狗晶体管,以及一个侑号放大器所组成。理论上 CMOS感受到的光线经光电袋换后屣电极带上负皿和正电,这两个互

34、补效应 所产生的电信号(电流或者电势差)被CMOS从一个一个像素当山顺次提取 至外部的A/D (模/数)转换器上再被处理芯片记录解读成影像.Camera基本原理最简单的Camera功能实现方法如下:摄像头模组(CCM)YUV或者RGB格式的 数据JPEG编码 芯片JPEG图片数据基带CPU存储图片存储器摄像头模组的接口是YUV或者Raw data,都算是标准器件,对camera方案的选择,主要是对JPEG编码芯片的选择。手机摄像实现C_DA7:0C HSC_VS C_PCLK: c mclkr C_PST C_SDA! Camera| qsic(pLp|sJj:n aw w olSLkJS O

35、llnl<lsMNUM WSdV IAI芒Nw CHOHWL_SD 17:0LLMainLCDModem CPUMTK 622X camera实现MT 6218/MT6217NAND Flash <=ECCMTK 622X camera实现与通常手机平台不同,MTK平台内置图像 处理DSP,称为ISP采用很多加速器来实现预览、拍照和MP4 录制、播放等目前现有图像输入只支持RAW DATA格式ISPISPISP_PREVIEW_STATEISP IDLE STATEinitJspJfOYAmpeg4_encode_process()camera_preview_process()c

36、amera_capturejpeg_process()ISP_MPEG4_ENCO DE STATE:amera_ca ptu re_mem_proces()ISP_CAPTURE_ME"m state"ISP_C APTURE_JPE 'G STATE"ISPCamera preview pathISPJPEG filebufferCamera capture with JPEG encode pathISPCamera capture with frame added pathISPCamera capture with frame added pat

37、hCamera驱动调试 MTK会根据客户相应sensor release相关代 码对于驱动工程师重点调试sensor驱动电源 电路部分,通过对LDO的控制,保证对 sensor供电CAMERA POWERVgXTCEVINvssMCVOUTMC CNO-SLUGLK1CI3xce2ieu?55-opU 1?u2GWDWCJ 7 mJ?vg jL-i代码实现49 /GPIO NO48 /GPIO NO.49 /GPIO NO.#define MODULE_POWER_PIN#define MODULE_RESETjPIN/#define MODULE_CMPDN_PIN/ Compact Ima

38、ge Sensor Module Power ON/OFFvoid cis_module_power_on(kal_bool on)if(on=KAL_TRUE)GPIO_lnitlO(1, MODULE_POWER_PIN); GPIO_ModeSetup(MODULE_POWER_PIN,0); GPIO_WritelO(1, MODULE_POWER_PIN);else/ Sensor Module PowerGPIO_lnitlO(1, MODULE_POWER_PIN); GPIO_ModeSetup(MODULE_POWER_PIN,0); GPIO_WritelO(0, MODU

39、LE_POWER_PIN);/ Sensor Power, CMOS Sensor Power Down Signal Output /GPIO_ModeSetup(MODULE_CMPDN_PIN?0); GPIO_ModeSetup(MODULE_RESET_PiN?0); /GPIO_WritelO(0, MODULE_CMPDN_PIN); GPIO_WritelO(0? MODULE_RESET_PIN);/GPIO_lnitlO(1, MODULEjCMPDN_PIN); GPIO_lnitlO(1, MODULE_RESET_PIN);/ SCCB Low GPIO_ModeSe

40、tup(SCCB_SERIAL_CLK_PIN?OxO); GPIO_ModeSetup(SCCB_SERIAL_DATA_PIN?OxO);GPIO_WritelO(0? SCCB_SERIAL_CLK_PIN); GPIO_WritelO(0? SCCB_SERIAL_DATA_PIN);GPIO_lnitlO(1, SCCB_SERIAL_CLK_PIN);GPIO_lnitlO(1, SCCB_SERIAL_DATA_PIN);Camera测试客户反馈问题汇总:照像模糊AE不稳定暗处不清晰色彩问题:仁者见仁,智者见智的问题,不同客户喜好不同, 配上不同的屏显示效果也会有不同。视角问题拍后的尺寸和预览的尺寸不一样等等希望大家能防止原来客户提出的问题在新项目上出现,提前 关注并解决。众人拾柴火焰高!建立camera测试规范,©,加油哦!总结调试一个项目时候,需要关注的内容:显示部分,包括camera> LCD声音部分附件部分(充电、USB、耳机等)键盘待机电流,主板功能验证思考?请大家思考下,在项目研发过程中如何尽可 能早的规避问题Q&A请大家提问,我将尽量回答每一个问题!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1