MTK驱动学习文档
- 格式:pdf
- 大小:111.98 KB
- 文档页数:33
MTK_驱动总结文档G616 驱动文档总结在/mediatek/custom下会有好多重名的文件,在不同的文件夹里,最终会编译哪个文件是根据目录的优先级来判断brighter89_evdo_jb2 > mt6589 > xxmon也就是说如果brighter89_evdo_jb2 ,mt6589 , xxmon 同时存在一文件,最终编译的会是brighter89_evdo_jb2目录下的文件也可以通过/mediatek/custom/out/开判断,此文件时最终编译的文件运行/mediatek/dct/。
选择文件/mediatek/custom/brighter89_evdo_jb2/kernel/dct/dct /Edit,打开后可以修改GPIO的模式,上拉,下拉,输入,输出修改后点击“Save”和“Gen Code”重新编译:./makeMtk brighter89_evdo_jb2 codegen ./makeMtk brighter89_evdo_jb2 new pl lk kernel ./makeMtk brighter89_evdo_jb2 bootimage提交时替换bw/custom/project/g616/mediate/custom/brighter89_evdo_jb2/kernel/dct/dct修改CUSTOM_LK_LCM=hx8389b_qhd_dsi_vdoBOOT_LOGO=qhd //根据屏的分辨率CUSTOM_KERNEL_LCM=hx8389b_qhd_dsi_vdo LCM_HEIGHT=960 LCM_WIDTH=540/mediatek/custom/xxmon/kernel/lcm目录名与下hx8389b_qhd_dsi_vdo名字相同,目录下为驱动文件在/mediatek/custom/xxmon/kernel/lcm/mt65xx_lcm_下添加要添加的屏#if defined(HX8389B_QHD_DSI_VDO) &hx8389b_qhd_dsi_vdo_lcm_drv, #endif下修改CUSTOM_HAL_IMGSENSOR=ov5648_mipi_raw hi257_yuv //前后camera CUSTOM_HAL_MAIN_IMGSENSOR=ov5648_mipi_rawCUSTOM_HAL_SUB_IMGSENSOR=hi257_yuvCUSTOM_KERNEL_IMGSENSOR=ov5648_mipi_raw hi257_yuv //前后camera CUSTOM_KERNEL_MAIN_IMGSENSOR=ov5648_mipi_raw CUSTOM_KERNEL_SUB_IMGSENSOR=hi257_yuv驱动要添加的文件:/mediatek/custom/xxmon/kernel/imgsensor/ov5648_mipi _raw /mediatek/custom/xxmon/hal/imgsensor/ ov5648_mipi_raw//hi257前camera同理/mediatek/custom/xxmon/hal/imgsensor/src/ #if defined(OV5648_MIPI_RAW)RAW_INFO(OV5648MIPI_SENSOR_ID, SENSOR_DRVNAME_OV5648_MIPI_RAW, NULL), #endif /mediatek/custom/xxmon/kernel/imgsensor/src/ kd_ #if defined(OV5648_MIPI_RAW) {OV5648MIPI_SENSOR_ID,SENSOR_DRVNAME_OV5648_MIPI_RAW,OV5648MIPISensorInit}, #endifCamera电所在文件:/mediatek/custom/brighter89_evdo_jb2/kernel/camera/ camera/kd_camera_ 核心驱动文件:/mediatek/custom/xxmon/kernel/imgsensor/src /kd_ 如果修改HAL层参数编译命令如下:./makeMtk -t brighter89_evdo_jb2 mm mediatek/platform/mt6589/hardware/camera/下修改: CUSTOM_HAL_LENS=dw9714afCUSTOM_HAL_MAIN_LENS=dw9714af CUSTOM_KERNEL_LENS=dw9714afCUSTOM_KERNEL_MAIN_LENS=dw9714af添加对应的文件夹和驱动文件/G616/mediatek/custom/xxmon/kernel/lens/dw9714af/ M config/mt6589/M custom/brighter89_evdo_jb2/hal/lens/src/ M custom/xxmon/hal/inc/camera_custom_A custom/xxmon/hal/lens/dw9714af/lens_para_ M custom/xxmon/hal/lens/src/ A custom/xxmon/kernel/lens/dw9714af/ A custom/xxmon/kernel/lens/inc/M platform/mt6589/hardware/camera/core/featureio/drv/ lens/mcu_下修改:CUSTOM_KERNEL_FLASHLIGHT=constant_flashlight CUSTOM_HAL_FLASHLIGHT=constant_flashlight驱动核心:/mediatek/custom/xxmon/kernel/flashlight/src/kd_/mediatek/custom/xxmon/kernel/flashlight/constant_f lashlight/leds_G616用的bd7710gwl driver IC,leds_会有相应的更改,文件修改都放到bw目录下 HAL tunning 文件:mediatek/custom/brighter89_evdo_jb2/hal/camera/came ra/flash_tuning_下修改:CUSTOM_KERNEL_TOUCHPANEL=ft5336驱动文件:mediatek/custom/xxmon/kernel/touchpanel/ft5336/ft53 36_/home/chenjian/CJ_WORK/code/G616/mediatek/custom/br ighter89_evdo_jb2/kernel/touchpanel/ft5336/tpd_cust om_下修改:CUSTOM_KERNEL_ACCELEROMETER=lis3dh CUSTOM_KERNEL_ALSPS=tmd2772驱动文件:/mediatek/custom/xxmon/kernel/accelerometer/lis3dh/ //gsensor 配置I2c和Gsensor 的position/mediatek/custom/brighter89_evdo_jb2/kernel/acceler ometer/lis3dh/cust_ static struct acc_hw cust_acc_hw = { .i2c_num = 3,.direction = 6, //chenjian 20XX-12-26 modify gsensor position.power_id = MT65XX_POWER_NONE, /*!< LDO is not used */ .power_vol= VOL_DEFAULT, /*!< LDO is not used */.firlen = 0, //old value 16 /*!< don't enable low pass fileter */ };/mediatek/custom/xxmon/kernel/alsps/tmd2772/ //psensor light sensor 配置I2c和 light sensor上报数据/mediatek/custom/brighter89_evdo_jb2/kernel/alsps/t md2772/cust_.als_level = { 4, 40, 80, 120, 160, 240, 400, 800, 1200, 1600, 20XX, 3000, 5000, 8000, 65535}, .als_value = {0,20, 60, 100, 150, 240, 400, 600, 1000, 1500, 20XX,3000, 5000, 8000, 10000, 10000},配置xls/mediatek/build/tools/emigen/MT6589/MemoryDeviceLis t_都是MTK release的,需要添加的memory要在MemoryDeviceList_表里,且名字与/mediatek/custom/brighter89_evdo_jb2/preloader/inc/ custom_名字需一样如H9TP32A8JDBCPR_KGM 需和MemoryDeviceList_表的名字一样 #define BOARD_ID MT6589_EVB#define CS_PART_NUMBER[0] SD7DP28C_4G#define CS_PART_NUMBER[1] H9TP32A8JDBCPR_KGM Memory兼容:向下添加即可#define CS_PART_NUMBER[2] #define CS_PART_NUMBER[3] ….….9.音频参数硬件同事,通过工具修改,导出文件,替换如下目录/mediatek/custom/brighter89_evdo_jb2/cgen/inc/。
MTK驱动基本介绍MTK(Mediatek Inc.)是台湾联发科技股份有限公司的一个子公司,是一家全球领先的半导体芯片设计公司。
MTK驱动(Mediatek Driver)是联发科技开发的一款设备驱动程序,用于支持和管理MTK系列芯片的硬件设备。
MTK驱动的目的是为了提供对MTK芯片的各种硬件设备的支持,使其能够在计算机系统中正常工作。
MTK芯片广泛用于智能手机、平板电脑、智能家居、物联网等领域的设备,而MTK驱动则起到了连接和协调计算机系统和硬件设备之间的桥梁作用。
1.提供设备识别和连接:MTK驱动可以识别MTK芯片的硬件设备,并与计算机系统进行连接,完成设备的初始化和配置工作。
2.实现设备通信和数据传输:MTK驱动通过与设备之间的通信接口,实现了设备和计算机之间的数据传输和交互,包括文件的读写、音视频的传输和图像的显示等。
3.支持设备管理和控制:MTK驱动可以对MTK芯片的硬件设备进行管理和控制,包括设备的开关、功能设置、驱动安装和升级等。
4.提供系统稳定性和兼容性:MTK驱动经过严格的测试和验证,能够保证在不同的计算机系统环境下的稳定性和兼容性,确保硬件设备能够正常工作。
5.支持开发者和用户的需求:MTK驱动提供了丰富的开发工具和接口,为开发者和用户提供定制化和个性化的驱动支持,方便二次开发和扩展。
2.连接设备和计算机:使用USB数据线或其他连接方式将MTK芯片的硬件设备连接到计算机上。
3.设置设备连接模式:根据设备的不同,选择合适的连接模式,如USB存储模式、USB调试模式等。
4.等待系统安装驱动:当设备连接到计算机后,操作系统会自动检测并安装相应的MTK驱动程序,期间需要等待一段时间。
5.使用设备:一旦驱动安装完成,设备就可以在计算机上正常工作,可以进行文件传输、数据交互、驱动管理等操作。
总之,MTK驱动是一款重要的软件工具,为MTK芯片的硬件设备提供了必要的支持和管理功能,使其能够在计算机系统中正常工作。
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工具生成新的字库,需要注意的是Language ID必须和ref_list.txt中一致。
2.1.3输入法资源包括Zi、T9和CStar。
2.1.3.1Zia.新建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.pdfSOP_T9_Input_Method_Resource_Generation_08B.pdfSOP_T9_Input_Method_Resource_Generation_09BV2.pdf2.1.3.3CStar不说了2.2SSC有几个文件需要修改。
a.mcu\ \plutommi\mmi\SSC\SSCInc\SSCStringHandle.h:增加新的SSC码,需要和ref_list.txt、FontRes.c中的一致。
#define SSC_AUTO "*#0000#"#define SSC_SCHINESE "*#0086#"#define SSC_TCHINESE "*#0886#"#define SSC_ENGLISH "*#0044#"#define SSC_DEFAULT "*#0044#"#define SSC_SPANISH "*#0034#"//添加你的SSC码//#define SSC_XXXXX "*#00XX#"2.3mcu\ \plutommi\mmi\SSC\SSCInc\SSCStringHandle.c:将新的SSC码加入到ssc_table2表中。
MtK平台驱动调试指南GPIO设置篇一、GPIO有关的函数1.GPIO_ModeSetup:函数原型:void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)功能:设置GPIO的工作模式是作为GPIO,还是作为专有功能接口。
参数:pin:GPIO 的pin脚号,对应于原理图上MTK62XX 主CPU芯片的上的GPIO标号conf_dada:值有0~3。
其中0是表示作为GPIO模式,其他根据专有功能的不同进行设置。
2.GPiO_InitIO函数原型:void GPIO_InitIO(char direction, char port)功能:初始化GPIO的工作方向是作为输入,还是作为输出参数:direction:工作方向,0表示输入,1表示输出port:GPIO的pin脚3.GPIO_ReadIO函数原型:char GPIO_ReadIO(char port)功能:从GPIO读取数据参数:port:GPIO的pin脚4.GPIO_WriteIO函数原型:void GPIO_WriteIO(kal_char data, kal_char port)功能:往GPIO写数据参数:data:1表示给高电平,0表示给低电平port:GPIO的pin脚备注:这些函数在Gpio.C中可以找到。
二、GPIO模式设置GPIO口在系统上电的时候,有的是默认高电平,有的是默认低电平,这是MCU 内部决定的,软件无法更改,但是在系统开机过程中,会对GPIO进行初始化,MCU中有几个GPIO模式初始化寄存器,通过这个寄存器给GPIO设置初始模式。
例如:以下这个寄存器就是用来设置0-7号GPIO的模工作模式的。
这个初始化过程在Gpio_Drv.C中的函数GPIO_init()中,项目开始的时候,先要检查这个部分的模式设置是否正确。
三、各个功能模块的GPIO设置1. LCD背光,马达有的LCD背光是靠GPIO进行控制的,有的则靠PMIC进行控制。
MTK入门资料文档内容:-》MTK软件架构-》如何编译-》开发目录结构解析-》开发工具的了解-》程序入口,程序导读-》MMI的制作1. MTK软件构架参考文档:MT6218_SW_ReleaseNote.pdfMTK为MediaTek公司提供的GSM软件方案。
它包含5个部分:-》L1协议-》设备驱动-》协议栈-》MMI-》WAP应用MediaTek为用户提供3个工具:-》Catcher-》META-》MCTMTK软件架构图:下面3个部分组成该软件方案:1. MS Executable Software, which is the software running on the MS, includes the following modules- OS: Nucleus OS.- L1 Protocol Stack: GSM physical layer.- Drivers: device driver, like SIM, UART, GPIO, etc.- L2/L3 protocol stack: GSM protocol stack layer.- MMI: man-machine interface.- WAP: Wireless application protocol.- JAVA: J2ME Software2. The Mobile Engineering Testing Architecture, also known as META3. Catcher-》OSMediaTek采用Nucleus OS实时操作系统。
KAL OS层为MediaTek’s软件和Nucleus操作系统的接口。
它为任务提供许多系统服务函数,比如计时器,队列,内存管理,事件等等。
-》L1 Protocol StackThe physical layer or Layer 1 supports the transfer of bit streams on the radio medium according to the Technical Specifications of the 05-series. It provides service to upper layers and control the mapping and scheduling between the logical and physical channels. The TDMA framing and radio control parts are also implemented.StickJPEG Decoder: Software for controlling hardware JPEG decoder-》L2/L3/L4 Protocol Stack这部分包含大量的GSM/GPRS需求以及提供一个优秀的GSM/GPRS平台给应用程序。
驱动调试流程驱动代码文件主要集中在/mediatek/custom/mediatek/kernel/mediatek/platform下,对于客制化代码分布在多个不同的文件夹里,而最终会编译哪个文件是根据目录的优先级来判断S610T>mt6592>common也就是说如果S610T ,mt6592 , common同时存在一文件,最终编译的会是S610T目录下的文件也可以通过/mediatek/custom/out/开判断,此文件时最终编译的文件1.GPIO运行/mediatek/dct/DrvGen.exe,选择文件/mediatek/custom/S610T/kernel/dct/dct/codegen.dwsEdit,打开后可以修改GPIO的模式,上拉,下拉,输入,输出修改后点击“Save”和“Gen Code”重新编译:./makeMtkS610Tcodegen./makeMtk S610Tnew pllk kernel./makeMtk S610Tbootimage提交时替换/mediatek/custom/S610T/kernel/dct/dct即可。
2.LCD修改ProjectConfig.mkCUSTOM_LK_LCM=nt35596_fhd_dsi_vdo_yassy_auoBOOT_LOGO=cmcc_S610T //根据屏的分辨率CUSTOM_KERNEL_LCM=nt35596_fhd_dsi_vdo_yassy_auoLCM_HEIGHT=1920LCM_WIDTH=1280/mediatek/custom/common/kernel/lcm目录名与ProjectConfig.mk下nt35596_fhd_dsi_vdo_yassy_auo名字相同,目录下为驱动文件在/mediatek/custom/common/kernel/lcm/mt65xx_lcm_list.c下添加要添加的屏#if defined(NT35596_FHD_DSI_VDO_YASSY_AUO)Extern LCM_DRIVER nt35596_fhd_dsi_vdo_yassy_auo_lcm_drv;#endifLCM_DRIVER* lcm_driver_list[]={……#if defined(NT35596_FHD_DSI_VDO_YASSY_AUO)& nt35596_fhd_dsi_vdo_yassy_auo_lcm_drv,#endif}3.CAMERAProjectConfig.mk下修改CUSTOM_HAL_IMGSENSOR=imx135_mipi_raw a5141_mipi_raw //前后cameraCUSTOM_HAL_MAIN_IMGSENSOR=imx135_mipi_rawCUSTOM_HAL_SUB_IMGSENSOR=a5141_mipi_rawCUSTOM_KERNEL_IMGSENSOR=imx135_mipi_raw a5141_mipi_raw //前后cameraCUSTOM_KERNEL_MAIN_IMGSENSOR=imx135_mipi_rawCUSTOM_KERNEL_SUB_IMGSENSOR=a5141_mipi_raw驱动要添加的文件:/mediatek/custom/common/kernel/imgsensor/imx135_mipi_raw/mediatek/custom/common/hal/imgsensor/imx135_mipi_raw//a5141前camera同理/mediatek/custom/common/hal/imgsensor/src/sensorlist.cpp#if defined(IMX135_MIPI_RAW)RAW_INFO(IMX135_SENSOR_ID, SENSOR_DRVNAME_IMX135_MIPI_RAW, NULL),#endif/mediatek/custom/common/kernel/imgsensor/src/kd_sensorlist.h#if defined(imx135_MIPI_RAW){imx135_SENSOR_ID, SENSOR_DRVNAME_IMX135_MIPI_RAW, IMX135_MIPI_RAW_SensorInit}, #endifCamera电所在文件:/mediatek/custom/S610T/kernel/camera/camera/kd_camera_hw.c核心驱动文件:/mediatek/custom/common/kernel/imgsensor/src/kd_sensorlist.c如果修改HAL层参数编译命令如下:./makeMtk -t S610T mm mediatek/platform/mt6589/hardware/camera/4.AFProjectConfig.mk下修改:CUSTOM_HAL_LENS=bu6429afCUSTOM_HAL_MAIN_LENS=bu64294afCUSTOM_KERNEL_LENS=bu6429afCUSTOM_KERNEL_MAIN_LENS=bu6429af添加对应的文件夹和驱动文件/mediatek/custom/common/kernel/lens/bu6429af/bu6429AF.cM config/S610T/init.rcM custom/S610T/hal/lens/src/lenslist.cppM custom/common/hal/inc/camera_custom_lens.hA custom/common/hal/lens/bu6429af/lens_para_bu6429AF.cppA custom/common/kernel/lens/bu6429af/bu6429AF.cA custom/common/kernel/lens/inc/bu6429AF.h5.flashledProjectConfig.mk下修改:CUSTOM_KERNEL_FLASHLIGHT=constant_flashlightCUSTOM_HAL_FLASHLIGHT=constant_flashlight驱动核心:/mediatek/custom/common/kernel/flashlight/src/kd_flashlightlist.c/mediatek/custom/common/kernel/flashlight/constant_flashlight/leds_strobe.cS610T用的lm3624 driver IC,leds_strobe.c会有相应的更改,文件修改都放到S610T目录下HAL tunning文件:mediatek/custom/S610T/hal/camera/camera/flash_tuning_custom.cpp6.TPProjectConfig.mk下修改:CUSTOM_KERNEL_TOUCHPANEL=ft5436驱动文件:mediatek/custom/common/kernel/touchpanel/ft5436/ft5436_driver.c/mediatek/custom/S610T/kernel/touchpanel/ft5436/tpd_custom_ft5436.hS610项目备注:CUSTOM_KERNEL_TOUCHPANEL=cy8ctma463CYTTSP4_SUPPORT=yesHW_HAVE_TP_THREAD=no7.sensorProjectConfig.mk下修改:CUSTOM_KERNEL_ACCELEROMETER=lis3dhCUSTOM_KERNEL_ALSPS=tmd2772驱动文件:/mediatek/custom/common/kernel/accelerometer/lis3dh/lis3dh.c //gsensor配置I2c和Gsensor的position/mediatek/custom/S610t/kernel/accelerometer/lis3dh/cust_acc.cstaticstructacc_hwcust_acc_hw = {.i2c_num = 2,.direction = 2, // gsensor position.power_id = MT65XX_POWER_NONE, /*!< LDO is not used */.power_vol= VOL_DEFAULT, /*!< LDO is not used */.firlen = 0, //old value 16 /*!< don't enable low pass fileter */};/mediatek/custom/common/kernel/alsps/stk3x1x/stk3x1x.c //psensor light sensor配置I2c和light sensor上报数据/mediatek/custom/S610T/kernel/alsps/stk3x1x/stk3x1x_cust_alsps.c.als_level = { 4, 40, 80, 120, 160, 240, 400, 800, 1200, 1600, 2000, 3000, 5000, 8000, 65535},.als_value = {0,20, 60, 100, 150, 240, 400, 600, 1000, 1500, 2000, 3000, 5000, 8000, 10000, 10000},8.memory配置xls/mediatek/build/tools/emigen/MT6589/MemoryDeviceList_MT6592.xls都是MTK release的,需要添加的memory要在MemoryDeviceList_MT6592.xls表里,且名字与/mediatek/custom/S610T/preloader/inc/custom_MemoryDevice.h名字需一样如H9TP32A8JDBCPR_KGM需和MemoryDeviceList_MT6592.xls表的名字一样#define BOARD_ID MT6592_EVB#define CS_PART_NUMBER[0] SD7DP28C_4G#define CS_PART_NUMBER[1] H9TP32A8JDBCPR_KGMMemory兼容:向下添加即可#define CS_PART_NUMBER[2]#define CS_PART_NUMBER[3]….….9.音频参数硬件同事,通过工具修改,导出文件,替换如下目录/mediatek/custom/S610T/cgen/inc/。
MTK入门培训教程MTK入门培训教程 (1)一、搭建MTK环境 (1)1、安装ARM Developer Suite (ADS) version 1.2 (1)2、安装perl解释器 (1)3、安装VC6.0 (2)4、下载线驱动: (2)5、下载软件 (2)二、安装MTK使用工具 (2)1、代码编辑软件 (2)2、代码比较工具 (2)3、reflist.txt编辑软件 (2)三、软件使用方法 (2)1、Flash_Tool (2)四、MTK工程初步上手 (3)1、编译方法: (3)2、模拟器的使用: (3)3、如何在MTK上添加一个菜单和图片: (3)4,如何在MTK上创建一个新的application (5)五、入门可以参考的文档有以下: (5)一、搭建MTK环境1、安装ARM Developer Suite (ADS) version 1.2路径:mtk环境工具\konka_ads12\ads12安装步骤:双击setup.exe进行安装,按照提示进行安装。
安装结束后程序要求导入序列号,选择导入序列号文件,找到mtk环境工具\konka_ads12\ads12\CRACK,导入LICENSE.DA T 即可完成安装。
2、安装perl解释器路径:mtk环境工具\ActivePerl-5.6.1.626-MSWin32-x86-multi-thread.msi安装步骤:双击可执行文件按照提示完成安装。
3、安装VC6.0路径:mtk环境工具\vc_setup\vc6安装步骤:双击setup.exe安装提示安装即可。
安装完后将mfc patch中的文件拷入system32目录中。
4、下载线驱动:路径:mtk环境工具\6219B_USB_Line_Driver 2.0.1.1 (Recommend)prolific安装步骤:将下载线插入USB口中,弹出驱动安装窗口,安装提示将目录定位在上面得路径中按照提示安装即可。
MTK驱动调试相关总结 2010-12-14 Ver:1.11 SIM卡2 T卡3 FLASH4 按键KEY5 IO配置6 ADC配置7 EINT配置8 FM驱动9 BT驱动10 TOUCHSCEEN驱动11 LCM驱动12 Sensor驱动13 背光灯、按键灯、振动器、PWM14 跑马灯15 移动传感器、四方传感器16 MP4、3GP播放17 音量参数、EQ参数、音频功放开关18 SMS、电话本等容量设置19 耳机插入、拔出检查、耳机按键处理20 充电器或USB插入、拔出检查、识别21 RF 配置22参考文档附录默认系统平台为MT6253,code版本:09B.W10.12.MP。
版本变更记录:Andy 2010.12.10 Ver:1.0Andy 2010-12-14 Ver:1.11 SIM卡F910(MT6253)SIM卡插槽与系统SIM卡号映射关系drv\src\switchControl_al.c// andy 2010.05.31 SIM卡插槽映射 __DRV_DUAL_SIM_INVERSE__//kal_bool sim_physicalSlotChanged;#ifdef __DRV_DUAL_SIM_INVERSE__kal_bool sim_physicalSlotChanged = KAL_TRUE ;#elsekal_bool sim_physicalSlotChanged = KAL_FALSE;#endif定制支持的SIM电压:Customer_sim_voltage_support.c/* For customer define ME support voltage of SIM *//* For 1.8V Tech. ME use ME_18V_30V *//* For 3.0V ONLY ME use ME_30V_ONLY *//* For 1.8V ONLY ME use ME_18V_ONLY */#define SIM_VOLTAGE_SUPPORT ME_18V_30Vsim_env SIM_GetCurrentEnv(void){(SIM_VOLTAGE_SUPPORT);return}MT6253的“4.3 SIM Interface”,介绍了SIM卡接口的情况。
----------MTK6225一:LCD文件位于custom\drv\LCD以华立维的一款240X320的屏为例介绍如何添加LCD驱动gprs.makLCD_MODULE=HUALIWEI_SSD1289_LCMMAIN_LCD_SIZE=240X320OptionCOM_DEFS_FOR_HUALIWEI_SSD1289_LCM=HUALIWEI_SSD1289_LCM SSD1289 COLOR_LCD TFT_MAINLCD QVGA_MAINLCD在custom\drv\LCD添加HUALIWEI_SSD1289_LCM文件夹,下面有5个文件。
文件名同MTK系统自带的(lcd.c lcd_hw.h lcd_sw.h lcd_sw_inc.h lcd_sw_rnd.h)。
HUALIWEI--------------屏的厂家SSD1289-----------------屏的驱动芯片LCM----------------------屏240X320-----------------屏的分辨率COLOR_LCD----------彩色TFT_MAINLCD-------屏的类型,对应的还有CSTN,OLED。
目前主要是TFT QVGA_MAINLCD----屏的分辨率做了上述修改以后,编译时,lcd驱动就对应HUALIWEI_SSD1289_LCM文件夹里的驱动。
文件夹里的5个文件,通常lcd_hw.h,lcd_sw_rnd不需要修改。
lcd_sw_inc.h只是定义屏的分辨率。
如下:#ifdef__MMI_MAINLCD_128X128__#define LCD_WIDTH128#define LCD_HEIGHT128#elif(defined(__MMI_MAINLCD_128X160__))#define LCD_WIDTH128#define LCD_HEIGHT160#elif(defined(__MMI_MAINLCD_176X220__))#define LCD_WIDTH176#define LCD_HEIGHT220#elif(defined(__MMI_MAINLCD_240X320__))#define LCD_WIDTH240#define LCD_HEIGHT320#endif#define UI_DEVICE_WIDTH LCD_WIDTH#define UI_DEVICE_HEIGHT LCD_HEIGHT修改比较多的是lcd.c和lcd_sw.h。
Lcd_sw.h#define LCD_CMD_DMA_MODE---------是否使用DMA方式?(DMA简单,速度快,通过MTK的寄存器进行操作,但灵活性差。
非DMA方式,直接对地址操作,灵活性好,但速度会有影响。
目前,一般都是用DMA方式)#define LCD_16BIT_MODE-----------------lcd使用16位总线?(由硬件决定)#define LCD_SSD1289_CTRL_ADDR LCD_PARALLEL0_A0_LOW_ADDR#define LCD_SSD1289_DATA_ADDR LCD_PARALLEL0_A0_HIGH_ADDR#define MAIN_LCD_CMD_ADDR LCD_SSD1289_CTRL_ADDR#define MAIN_LCD_DATA_ADDR LCD_SSD1289_DATA_ADDR#define MAIN_LCD_OUTPUT_FORMAT LCM_16BIT_16_BPP_RGB565_1#define LCD_delay_SSD1289()\{\volatile kal_uint16iI;\for(iI=0;iI<0x20;iI++);\}#ifdef LCD_CMD_DMA_MODE-------------DMA方式#define LCD_SEND_DMA_CMD(n)\{\while(LCD_IS_RUNNING);\DISABLE_LCD_TRANSFER_COMPLETE_INT;\DISABLE_ALL_LCD_LAYER_WINDOW;\SET_LCD_ROI_CTRL_NUMBER_OF_CMD(n);\ENABLE_LCD_ROI_CTRL_CMD_FIRST;\SET_LCD_ROI_WINDOW_SIZE(0,0);\START_LCD_TRANSFER;\while(LCD_IS_RUNNING);\}#define LCD_CtrlWrite_SSD1289(_data)\{\SET_LCD_CMD_PARAMETER(0,LCD_CMD,_data);\--------写的是命令LCD_SEND_DMA_CMD(1);\}#define LCD_DataWrite_SSD1289(_data)\{\SET_LCD_CMD_PARAMETER(0,LCD_DATA,_data);\--------写的是数据LCD_SEND_DMA_CMD(1);\}#else----------非DMA方式#define LCD_CtrlWrite_SSD1289(_data)\{\*(volatile kal_uint32*)LCD_SSD1289_CTRL_ADDR=_data;\--------写的是命令LCD_delay_SSD1289();\}#define LCD_DataWrite_SSD1289(_data)\{\*(volatile kal_uint32*)LCD_SSD1289_DATA_ADDR=_data;\------------写的是数据LCD_delay_SSD1289();\}#endif#define LCD_DataRead_SSD1289(*(volatile kal_uint16 *)LCD_SSD1289_DATA_ADDR);------用于读LCD id,兼容lcd用。
(这个需要硬件上接读lcd的信号)Lcd.cLCD_Funcs LCD_func_SSD1289={LCD_Init_SSD1289,LCD_PWRON_SSD1289,LCD_SetContrast_SSD1289, LCD_ON_SSD1289,LCD_BlockWrite_SSD1289, LCD_Size_SSD1289,LCD_EnterSleep_SSD1289, LCD_ExitSleep_SSD1289,LCD_Partial_On_SSD1289, LCD_Partial_Off_SSD1289, LCD_Partial_line_SSD1289,LCD_GetParm_SSD1289,LCD_SetBias_SSD1289,LCD_Contrast_SSD1289,LCD_LineRate_SSD1289,LCD_Temp_Compensate_SSD1289 #ifdef__LCD_ESD_RECOVERY__ ,LCD_ESD_check_SSD1289#endif};void LCD_FunConfig(void){MainLCD=&LCD_func_SSD1289;}上层通过这个LCD_func_SSD1289来调用相应的lcd驱动函数的。
这个结构体里的很多函数不需要修改。
经常需要修改的有以下几个函数:LCD_Init_SSD1289(),LCD_BlockWrite_SSD1289(), LCD_EnterSleep_SSD1289(),LCD_ExitSleep_SSD1289()。
这其中,LCD_Init_SSD1289(),LCD_EnterSleep_SSD1289(), LCD_ExitSleep_SSD1289(),屏厂会提供,只需要按照写就可以了。
LCD_BlockWrite_SSD1289()需要根据LCD的datasheet写。
见ssd1289+2.2topsun-init.txtLCD_Init_SSD1289(){……………….LCD_CtrlWrite_SSD1289(0x0000);LCD_DataWrite_SSD1289(0x0001);LCD_CtrlWrite_SSD1289(0x0003);LCD_DataWrite_SSD1289(0xa8a4);…………………}void LCD_BlockWrite_SSD1289(kal_uint16startx,kal_uint16 starty,kal_uint16endx,kal_uint16endy){…………………….SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x4E);---------表示寄存器SET_LCD_CMD_PARAMETER(1,LCD_DATA,startx);----------表示寄存器中的值SET_LCD_CMD_PARAMETER(2,LCD_CMD,0x4F);SET_LCD_CMD_PARAMETER(3,LCD_DATA,starty);SET_LCD_CMD_PARAMETER(4,LCD_CMD,0x44);SET_LCD_CMD_PARAMETER(5,LCD_DATA,(((endx&0x00ff)<<8)|(startx& 0x00ff)));SET_LCD_CMD_PARAMETER(6,LCD_CMD,0x45);SET_LCD_CMD_PARAMETER(7,LCD_DATA,starty);SET_LCD_CMD_PARAMETER(8,LCD_CMD,0x46);SET_LCD_CMD_PARAMETER(9,LCD_DATA,endy);SET_LCD_CMD_PARAMETER(10,LCD_CMD,0x22);ENABLE_LCD_TRANSFER_COMPLETE_INT;ENABLE_LCD_ROI_CTRL_CMD_FIRST;SET_LCD_ROI_CTRL_NUMBER_OF_CMD(11);START_LCD_TRANSFER;}具体的寄存器意义,见datasheet SSD1289_1.1.pdf(P51)datasheet。
这个是一般的lcd调试,特殊的不做描述。
在硬件没有问题的情况下,lcd没有点亮,可做如下动作:1)在LCD_Init_SSD1289()函数下加{lcd_drive_ic_id=LCD_DataRead_SSD1289;}2)LCD_Init_SSD1289()增大lcd复位时间{SET_LCD_CTRL_RESET_PIN;LCD_Delay100us(1000);CLEAR_LCD_CTRL_RESET_PIN;LCD_Delay100us(1000);SET_LCD_CTRL_RESET_PIN;LCD_Delay100us(1000);}3)LCD_Init_SSD1289()添加测试代码{{unsigned int m,n;GPIO_ModeSetup(25,0);GPIO_InitIO(1,25);GPIO_WriteIO(1,25);for(m=0;m<240;m++)for(n=0;n<320;n++){LCD_DataWrite_SSD1289(0xf800);}}-----------用于判断初始化代码是否正确}4)修改时序,主要是写的时序void init_lcd_interface(void) {SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)3);SET_LCD_PARALLEL_CE2WR_HOLD_TIME(4);SET_LCD_PARALLEL_CE2RD_SETUP_TIME(3);SET_LCD_PARALLEL_WRITE_WAIT_STATE(7);SET_LCD_PARALLEL_READ_LATENCY_TIME(31);SET_LCD_ROI_CTRL_CMD_LATENCY(10);}5)初始化正确的前提下,检查函数LCD_BlockWrite_SSD1289()。