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卡接口的情况。
MTK无线电平台学习报告1,MTK平台默认是基于多语种的,所以基本上与文本相关的都是使用unicode编码,如L”Hello World”方式强制将字符串转换为unicode编码。
2,MTK无线电平台的屏幕类似与windows等系统中的窗口概念,但是MTK下的屏幕是独占式的,即任何时候只能有一个屏幕。
3,程序规范:规范化就是要我们将我们的程序独立出来。
独立分为两大步:代码独立与数据独立:3.1,代码独立:就是将程序代码放到单独的文件中。
3.1.1 目录结构:一般新加的MMI程序都放到plutommi\MMI下面Plutommi\MMI\MyApp 程序总目录Plutommi\MMI\MyApp\MyAppInc 头文件目录Plutommi\MMI\MyApp\MyAppSrc 源文件目录因使用ARM编译器,需手动加入新文件到数据表文件中,需修改make\plutommi\下的三个文件:1)Plutommi.lis:此文件用来指明MMI所要编译的所有源文件,在文件中添加如下一行:Plutommi\MMI\MyApp\MyAppSrc\MyAppSrc.c2)Plutommi.inc 此文件用来指明MMI所有头文件所在目录:Plutommi\MMI\MyApp\MyAppInc3)Plutommi.pth此文件用来指明MMI所有源文件所在目录。
Plutommi\MMI\MyApp\MyAppSrc另外在plutommi\mmi\MyApp\MyAppInc\下创建程序头文件:MyAppProt.h //存放函数声明,只被本程序的源文件加载MyAppDefs.h //用来定义本程序的资源IDMyAppTypes.h //存放本程序所需的类型,结构,常量定义MyAppGprot.h //存放函数声明,但被用于对外接口3.1.2 代码控制为了精简最终生成的烧录程序,一般都给每个小程序加上自己的编译开关,并将自己程序所有代码都包含进编译开关。
1.配置GPIO 并初始化gpio_drv.c内的void GPIO_init(void) 进行初始化1.DRV_WriteReg(GPIO_MODE1,0x0000) 设置模式2.DRV_Reg(GPIO_DIR1) |= 0x00FF 设置方向0 GPIOs are configured as input1 GPIOs are configured as output2.audio_pa配置音频对应Driver部分主要需要留意以下三支档案:afe.c AMP gpo settingaudcoeff.c 首先需要注意是的output channel的配置,配置错误将出现没有声音的现象。
(见audio_驱动.pdf) 此文件需要注意output channel 、FIR setting和echo参数的设置audcoeff_default.h 定义语音增强参数nvram_default_audio.c 此文件主要配置各音阶的音量AUD_VOLUME_CTN :call waiting tone, error tone, warning toneAUD_VOLUME_KEY :keypad tone]AUD_VOLUME_MIC :microphone inputAUD_VOLUME_FMR :FM radio soundAUD_VOLUME_SPH :speech sound (during phone call)AUD_VOLUME_SID :side tone (sound loop-back)AUD_VOLUME_MEDIA :music1.设置模式,方向,上拉gpio_drv.c 里配置2.afe.c 文件里void AFE_SwitchExtAmplifier( char sw_on )设置3.afe2.c 文件里void AFE_TurnOnExtAmplifier( void )void AFE_TurnOffExtAmplifier( void )进行调用.3.触摸屏先初始化,后期是自动配置1.在eint_var.c里看中断2.touch_panel_spi.h 配GPIO 口3.touch_panel_spi.c Implement serial interface4.touch_panel_custom.c Set ADC and coordinate calibration4.FM1.RDA5800_SerialComm.c 配GPIO 口2.RDA5800_drv.c 函数的实现5.跑马灯\背光灯1.custom_equipment.c 或者uem_gpio.c 中找2.SN3726_LIGHT_LED3.lcd_backlight_set6.MT6318 driver1.pmic_custom.c2.Engineer mode3.*#3646633# =>Device=>PMIC7.工程模式参数1.CustResDef.h8.软件调speecher大小1.Audcoeff.c2.DG_DL_SPEECH = 0X1000 指gain = 13.DG_MICPHONE = 0X1400 最大0x2000 gain = 29.项目(6225平台),原先做的900/1800双频,校准综测都是正常的。
MTK平台:基于32bit ARM7EJ-S Risc处理器,GPRS Class12 Modem.功能扩展接口:3个port外部内存接口,3个8/16bit并行接口,Nand Flash,IrDA,USB 和MMC/SD/MS/MS Pro.时钟频率:104MHz;48K Bytes on-chip SRAM;72K Bytes MCU dedicated Tightly Coupled MemoryMCU_CLOCK = MCU_104M # MCU clock setting, MCU_13M, MCU_26M, MCU_39M, MCU_52M, MCU_104MEXT_CLOCK = EXT_26M # External clock source setting, EXT_13M, EXT_26M RF_MODULE = LENOVOSH25_06B_PMJ_MT6139E;PMIC = MT6318 # Charge Function, NONE, MT6305 or MT6318 PLA TFORM = MT6225 # Hardware Platform, MT6208, FPGA, MT6218, MT6218B, MT6219, MT6226, MT6227, MT6228, MT6229 ...etc.MCU启动流程:UART口在26Mhz环境下150ms内,若没收到start命令,它会自动从flash的0x0地址去执行。
否则:Meta模式的触发(trigger)命令,是一个目标寄存器的写命令。
寄存器:0x80120000=0x01(MT6217/ MT6218/ MT6219/ MT6226/ MT6227/)离开bootrom后,发生在flash上的第一个动作是关闭IRQ和FIQ,并且确保系统进入监视模式;Remapping,即地址0x00将被切换到SRAM上面;检测非正常reset,从flash上拷贝读/写数据,随后栈指针(sp)初始化;最后,MCU的启动序列在应用程序进入点终止;Remapping为了remapping成功,如下修改是必须的:1 SRAM开始的320Byte内存要保留,用于异常处理,异常处理代码在reset后从flash复制。
分类:LINUX一、【一】调试串口的设置驱动的调式过程经常需要通过trace工具看log的,trace前需要修改手机串口,有以下三种方法设置串口1 通过手机进入工程模式设置2 修改代码,修改Nvram_user_config.c中的NVRAM_EF_PORT_SETTING_DEFAULT[]3.通过META工具修改在连上meta:左上角选中NVRAM Editor,在跳出的对话框里选择other LID,再选择NVRAM_EF_PORT_SETTING_LID,接下来read from nvram,对话框右边就会出现串口的设置情况,对调tst_port_ps(输入0)和ps_port(输入99)的值,二【【二】关于gpio口Gpio的初始化在文件gpio_drv.c里,可以用MTK提供的工具配置也可以用代码在程序里直接操作,二者的选择要看有没有定义宏__CUST_NEW__工具初始化时要注意配置codegen.dws,该文件里配置的只是对gpio口的初始化,并不是所有的gpio口都要设置成工作时的模式,尤其是当作时钟和蓝牙部分的gpiio口,初始化时就设置成工作模式的话会造成电机电流过大的。
代码初始化时DRV_WriteReg()、DRV_Reg对gpio口寄存器操作,分别定义gpio口的模式,和方向(0:输入;1:输出),对单个gpio口操作用到以下函数(以gpio25为例):GPIO_ModeSetup(25, 0);设置GPIO25为模式0GPIO_InitIO(1,25);初始化GPIO25方向为输出GPIO_WriteIO(0, 25 );设值GPIO25输入低电平0三、【三】键盘设置1)键盘定义Keypad_def.c如果定义CUST_NEW,工具中的键盘定义对应在改文件里的KEYPAD_MAPPING(keypad_drv.h);2)硬件键盘定义与软件mmi键盘的对应nKeyPadMap[](Keybrd.c)3)工程模式键盘测试函数EntryFMKeypadTest()修改键盘测试时界面显示的键的名称1. 做好上面的第一第二两步2. FactoryModeSrc.c开始部分定义添加的键所要显示的名称,值,分别应用到keypad_layout[](确定要显示的位置),keypad_value[]3.在EntryFMKeypadTest()函数中的数组IdleScreenDigits[]里添加要显示的键4)如果要设置一个键不管在什么界面下都起作用的话(如手电筒开关或则其他需求)就需要在键盘的事件响应函数static voidKeyEventHandler(KEYBRD_MESSAGE *eventKey)里设置,根据键值条用相应的响应函数,不过该函数及时在锁屏状态下也会执行的,需要根据需要添加条件语句四、关于LCDlcm背光驱动分为两种控制方式:1. pwm这个是通过调占空比来调节亮度的持续信号;2. PFM这个是通过脉冲的个数来控制LCM背光亮度。
----------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()。