找回密码
 注册
搜索
查看: 16723|回复: 48

[资料] MTK平台驱动调试指南.doc(中文版)

[复制链接]
发表于 2008-4-28 11:59:55 | 显示全部楼层 |阅读模式
MTK平台驱动开发,相信对MTK驱动开发的兄弟会有用的。
【文件名】:08428@52RD_MTK平台驱动调试指南.doc
【格 式】:doc
【大 小】:391K
【简 介】:
【目 录】:



本文主要介绍了MTK驱动开发中关于GPIO设置等方面的内容。大家都知道在MTK
驱动的开发中,GPIO是驱动开发的重点之一,也是我们常出问题的地方。这篇文档
就专对这方面给出了系统的讲述。主要的内容有:
一、GPIO有关的函数

二、GPIO模式设置

三、各个功能模块的GPIO设置

四、总结
发表于 2008-4-28 12:43:55 | 显示全部楼层
太黑了点吧,这么贵.
详细目录列出来看看啊
点评回复

使用道具 举报

发表于 2008-4-28 13:28:17 | 显示全部楼层
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.        GPO_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进行控制。但不管那个方式进行控制,都只需修改Custom_equipment.c中的相关部分就可以了,具体如下:
首先,检查数组
GPIO_MAP_ENTRY gpio_map_tbl[] = {
/*GPIO_LABEL_LCD_BACKLIGHT */        {GPIO_VAILD, GPIO_PORT_24, netname[GPIO_LABEL_LCD_BACKLIGHT], NULL },



};
将没有使用的GPIO,用GPIO_INVALID给屏蔽掉。
然后,修改函数custom_cfg_gpio_set_level,在对应的GPIO类型上将控制函数添加进去即可。比如:
   switch(gpio_dev_type)     
   {
   case GPIO_DEV_LED_MAINLCD:
         if( gpio_dev_level == LED_LIGHT_LEVEL0)// LEVEL0- LEVEL5是背光由若到强的控制,LEVEL0表示关闭背光
GPIO_WriteIO(GPIO_OFF, custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT) );
        else
           GPIO_WriteIO(GPIO_ON, custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT) );
           
        PWM2_level(gpio_dev_level);
        break;

2.        蓝牙
在文件bt_hw_define.h中参照原理图进行对应GPIO的修改。
   #define BT_GPIO_RESET         52//39        //GPIO_39 : PMIC reset
   #define BT_GPIO_DSC                36//;4        //GPIO_4 : to disconnect RFComm link
   #define BT_GPIO_POWER        4//12 //GPIO_12: Power
   #define BT_GPIO_DATASELECT 0//;3 //GPIO_3: DataSelect

3.        Camera
在文件Camera_hw.c和sccb.h中参照原理图进行对应GPIO的修改。
【Camera_hw.c】
                #define MODULE_POWER_PIN                        6  // GPIO NO.
#define MODULE_RESET_PIN                        12  // GPIO NO.
#define MODULE_CMPDN_PIN                        13  // GPIO NO.

【sccb.h】
#define SCCB_SERIAL_CLK_PIN                8
#define SCCB_SERIAL_DATA_PIN                9
               
4.        TouchPanel
在文件Touch_panel_spi.h中参照原理图进行对应GPIO的修改
   #define SPI_DIN_PIN     1 //17  /*1GPO*/
   #define SPI_CLK_PIN     8 //20   /*8GPO*/
   #define SPI_DOUT_PIN    38 //22  /*18GPI*/
   #define SPI_CS_PIN      9 //23  /*9GPO*/
   #define SPI_BUSY_PIN    5 //21  /*5GPI*/

四、总结
        GPIO的设置相对来讲比较简单,只要仔细参对原理图,基本上就可以将GPIO配置好。当然有些时候GPIO配置好了也达不到效果,就需要和硬件工程师一起来进行检测分析,测量对应电路的工作电压或电流,来判断工作是否正常。总之在前期的调试方面,多跟硬件工程师沟通、讨论、分析,会很快解决问题。


        中断调试篇
中断调试一般来说包括以下几个方面,一一做简单介绍:
1.        中断号匹配
这个部分在文件eint_def.c中进行设置,参照原理图设置即可。

2.        中断触发方式的设置
在文件eint_def.c中,首先要对中断的触发响应时间进行设置,是在数组变量custom_eint_sw_debounce_time_delay中。一般情况下这个部分是不用动的,但有时候中断触发有问题的时候,这就是一个调试点。比如对于Touchpanel的中断,对应的响应时间一般是0,如果不是0,就需要修改。
另外,因为中断触发分电平触发和边沿触发,电平触发又分高电平触发和低电平触发,边沿触发又分为上升沿触发和下降沿触发,因此先需要跟硬件工程师了解对应的中断触发方式,然后在对应的中断初始化的地方修改触发方式。

3.        中断处理流程调试
有时候中断设置好了,对应功能也不能正常使用,那么就需要调试中断处理流程了,需要增加trace,一般我们会用系统带的trace函数kal_prompt_trace,有时候调试这个函数不能正常工作,那么我们就用这个文件中的函数sys_print打印trace信息,要使用这个函数,需要在系统最开始启动的时候,调用sys_uart_init进行初始化。这个函数库是在6228平台上做的,可能在其他平台上寄存器因为不同,需要进行修改。
往往在调试的过程中,经常发现是给芯片供电方面出了问题。因为有时候MTK给过来的代码,在他们的参考设计上是一种供电方式,但是在我们的设计上可能就是不一样了。所以在找到芯片供电部分代码的时候,查找对应资料,看是否调用正常。
点评回复

使用道具 举报

发表于 2008-4-29 16:16:08 | 显示全部楼层
呵呵谢谢 telepower888
点评回复

使用道具 举报

发表于 2008-4-29 18:36:18 | 显示全部楼层
建议斑竹给telepower888加分
点评回复

使用道具 举报

发表于 2008-4-29 22:42:15 | 显示全部楼层
MTK 的GPIO控制函数写的一塌糊涂。
点评回复

使用道具 举报

发表于 2008-5-1 03:37:10 | 显示全部楼层
奖励telepower888 4分
点评回复

使用道具 举报

发表于 2008-5-3 23:17:28 | 显示全部楼层
MTK平台驱动调试指南.doc(中文版)
方便没钱的朋友 呵呵
【文件名】:0853@52RD_MTK平台驱动调试指南.doc
【格 式】:doc
【大 小】:391K
【简 介】:
【目 录】:


点评回复

使用道具 举报

发表于 2008-5-14 23:08:22 | 显示全部楼层
上当了[em09]
点评回复

使用道具 举报

发表于 2008-5-15 09:50:23 | 显示全部楼层
好东东,多谢分享!
点评回复

使用道具 举报

发表于 2008-5-15 10:13:02 | 显示全部楼层
从HongdunaLiu处减分,然后加给telepower888
[em01]
点评回复

使用道具 举报

发表于 2008-7-6 22:22:39 | 显示全部楼层
谢谢 telepower888
点评回复

使用道具 举报

发表于 2008-12-20 03:00:53 | 显示全部楼层
telepower888真是一个牛人,令许多象我这样入门级的人膜拜,将来学好以后象这样做人,多谢啦
点评回复

使用道具 举报

发表于 2008-12-29 22:23:27 | 显示全部楼层
要免费哦!![em01]
点评回复

使用道具 举报

发表于 2009-3-21 20:35:30 | 显示全部楼层
telepower888
感谢
点评回复

使用道具 举报

发表于 2009-3-24 14:02:31 | 显示全部楼层
资料还可以 最好是免费啊 对初学者有利
点评回复

使用道具 举报

发表于 2009-3-24 21:48:22 | 显示全部楼层
没钱,呵呵,楼主太黑了[em12][em12][em12]
点评回复

使用道具 举报

发表于 2009-3-27 19:48:17 | 显示全部楼层
elepower888 ,你简直就是我的偶像!
点评回复

使用道具 举报

发表于 2009-3-29 10:41:49 | 显示全部楼层
thank you
点评回复

使用道具 举报

发表于 2009-3-29 11:15:49 | 显示全部楼层
[em01]
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-4-19 22:42 , Processed in 0.064456 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表