这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » MTK GPIO的定制详解

共1条 1/1 1 跳转至

MTK GPIO的定制详解

高工
2018-11-25 09:04:44     打赏


EintMode: 指示是否当作中断引脚来使用,例如GPIO0就可以当作ENTI0,如果选中了该模式,其它模式是不可见的。

Def.Mode: GPIO默认的模式,什么意思呢,就是在系统启动过程中GPIO口的模式,GPIO口启动模式是定义在文件cust_gpio_boot.h文件中的,例如,GPIO3的启动模式就是作为普通的GPIO口来使用,即模式为GPIO_MODE_00,稍后会为大家讲解cust_gpio_boot.h文件是怎么生成的。

M0~M7: 由于GPIO口是复用的,也就说除了作为普通的GPIO口使用之外,还有其它用途,所以这里会在cust_gpio_usage.h文件中产生一些宏定义,可能某些驱动中会用到这些宏定义。

InPull En: 是指GPIO是否使能上拉或下拉。

InPull SelHigh: 上面只是只是指示是否使能上拉或下拉,但是并没有指出到底是上拉还是下拉,那么就由这里来指定,如果勾选了那么就表示上拉,否则就是下拉。

Def.Dir: 指示GPIO默认的数据传输方向,是输入还是输出,都需要设置的。

In、Out: In和Out这两个选项暂时不知道有何用处,根据字面意思呢,应该是允许输入或输出的。

OutHigh: 指示GPIO口作为普通IO时输出电平高低。

VarName1: 变量的名字,有些驱动中可能会使用到一些GPIO口,那么这里就是为GPIO口定义一个别名,那么在驱动中只需要这个别名就可以了,而这个GPIO口是可以换的,所以这里也是为了可移植性。


在GPIO口配置完成之后,首先是需要点击Save来保存这个配置,可以点击Gen Code去生成新的代码,新的代码就生成在和codegen.dws同一个目录下,但是在Android 4.4版本上我都不是这样做的,在保存以后,直接运行./mk n k也会生成新的代码,生成目录在:

out/target/product/project_dir/obj/CUSTGEN/custom/kernel/dct/,如果是其他版本,可能会不相同。


前面说了在系统启动过程中会初始化这些GPIO口,那么什么地方在做初始化呢,有两个地方preloader和lk,preloader初始化代码流程如下:

mt_gpio_set_default()->mt_gpio_set_default_chip()

而该部分代码在mediatek/platform/mt6582/preloader/src/drivers/gpio_init.c中,在该文件中首先就是包含文件cust_gpio_boot.h。


而lk部分初始化流程都是差不多的,流程如下:

mt_gpio_set_default()->mt_gpio_set_default_chip()

lk部分代码在mediatek/platform/mt6582/lk/mt_gpio_init.c中。





共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]