详解MTK平台驱动调试指南GPIO设置篇

移动开发
MTK平台驱动调试指南是本文要介绍的内容,主要是来了解并学习MTK应用平台上驱动调试的相关内容,具体内容来看本文。

MTK平台驱动调试指南是本文要介绍的内容,主要是来了解并学习MTK应用平台上驱动调试的相关内容,不多说,具体内容的实现来看本文详解。

GPIO设置篇

一、GPIO有关的函数

1、GPIO_ModeSetup:

函数原型:voidGPIO_ModeSetup(kal_uint16pin,kal_uint16conf_dada)

功能:设置GPIO的工作模式是作为GPIO,还是作为专有功能接口。

参数:

pin:GPIO的pin脚号,对应于原理图上MTK62XX主CPU芯片的上的GPIO标号

conf_dada:值有0~3。其中0是表示作为GPIO模式,其他根据专有功能的不同进行设置。

2、GPO_InitIO

函数原型:voidGPIO_InitIO(chardirection,charport)

功能:初始化GPIO的工作方向是作为输入,还是作为输出

参数:

direction:工作方向,0表示输入,1表示输出

port:GPIO的pin脚

3、GPIO_ReadIO

函数原型:charGPIO_ReadIO(charport)

功能:从GPIO读取数据

参数:

port:GPIO的pin脚

4、GPIO_WriteIO

函数原型:voidGPIO_WriteIO(kal_chardata,kal_charport)

功能:往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中的相关部分就可以了,具体如下:

首先,检查数组

  1. GPIO_MAP_ENTRYgpio_map_tbl[]={  
  2. {GPIO_VAILD,GPIO_PORT_24,netname[GPIO_LABEL_LCD_BACKLIGHT],NULL},  
  3. }; 

将没有使用的GPIO,用GPIO_INVALID给屏蔽掉。

然后,修改函数custom_cfg_gpio_set_level,在对应的GPIO类型上将控制函数添加进去即可。比如:

  1. switch(gpio_dev_type)  
  2. {  
  3. caseGPIO_DEV_LED_MAINLCD:  
  4. if(gpio_dev_level==LED_LIGHT_LEVEL0)//LEVEL0-LEVEL5是背光由若到强的控制,LEVEL0表示关闭背光  
  5. GPIO_WriteIO(GPIO_OFF,custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT));  
  6. else  
  7. GPIO_WriteIO(GPIO_ON,custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT));  
  8. PWM2_level(gpio_dev_level);  
  9. break; 

2、蓝牙

在文件bt_hw_define.h中参照原理图进行对应GPIO的修改。

  1. #defineBT_GPIO_RESET52//39//GPIO_39:PMICreset  
  2. #defineBT_GPIO_DSC36//;4//GPIO_4:todisconnectRFCommlink  
  3. #defineBT_GPIO_POWER4//12//GPIO_12:Power  
  4. #defineBT_GPIO_DATASELECT0//;3//GPIO_3:DataSelect 

3、Camera

在文件Camera_hw.c和sccb.h中参照原理图进行对应GPIO的修改。

【Camera_hw.c】

  1. #defineMODULE_POWER_PIN6//GPIONO.  
  2. #defineMODULE_RESET_PIN12//GPIONO.  
  3. #defineMODULE_CMPDN_PIN13//GPIONO. 

【sccb.h】

  1. #defineSCCB_SERIAL_CLK_PIN8  
  2. #defineSCCB_SERIAL_DATA_PIN9 

4、TouchPanel

在文件Touch_panel_spi.h中参照原理图进行对应GPIO的修改

  1. #defineSPI_DIN_PIN1//17  
  2. #defineSPI_CLK_PIN8//20  
  3. #defineSPI_DOUT_PIN38//22  
  4. #defineSPI_CS_PIN9//23  
  5. #defineSPI_BUSY_PIN5//21 

四、总结

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给过来的代码,在他们的参考设计上是一种供电方式,但是在我们的设计上可能就是不一样了。所以在找到芯片供电部分代码的时候,查找对应资料,看是否调用正常。

dbg_print怎么打开?

哪个宏控制呢?

DRV_DEBUG打开后串口还是没有信息出来

  1. make\drv\drv.def 

中加入DRV_DEBUG

我一般在dbgprint.c里面直接修改

  1. #if1//defDRV_DEBUG  
  2. #if1//(!defined(IC_MODULE_TEST))  
  3. {  
  4. charbuffer[50];  
  5. sprintf(buffer,"ERROR");  
  6. rmmi_write_to_uart((kal_uint8*)buffer,strlen(buffer),KAL_TRUE);  

小结:详解MTK平台驱动调试指南的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-08-31 10:20:26

MTK驱动开发

2011-08-31 09:52:55

MTKMT6235驱动

2011-08-30 16:32:41

MTK开发环境

2011-08-31 10:26:38

MTK驱动开发

2011-09-06 09:14:27

MTK平台软件

2023-09-06 15:31:19

GPIO鸿蒙

2011-09-06 09:26:03

2011-08-30 16:22:00

MTK开发环境

2021-11-29 07:55:45

Linux GPIO Linux 系统

2011-09-06 15:12:39

MTK

2011-09-05 17:35:18

MTK启动过程RTOS

2021-08-25 06:33:52

Node.jsVscode调试工具

2011-08-30 16:02:10

MTK开发环境

2011-09-01 15:24:22

SQL Server 存储过程调试

2011-09-05 19:02:45

MTK系统字符串

2011-09-06 09:37:04

MTK平台

2011-09-06 13:31:10

MTK平台Scatter文件

2011-09-06 09:48:41

MTK平台

2011-08-31 10:23:40

MTK平台列表控件

2021-10-28 08:51:53

GPIO软件框架 Linux
点赞
收藏

51CTO技术栈公众号