我们在LINUX外设驱动的开发与调试中,GPIO的正确使用是一门必修课,本文主要描述MTK平台GPIO的使用和调试方法。
一,DWS的配置
打开dws文件的工具 DrvGen.exe 有新和旧两种,不同平台使用的工具可能不一样,新平台大多使用新的 DrvGen.exe,两种工具只是打开的方式和界面不一样,其实GPIO的配置项两个都大同小异,本文以MT6739平台为例,使用新的 DrvGen.exe 工具。
路径在:alps\vendor\mediatek\proprietary\scripts\dct下,打开后选择左上角Pro然后open我们项目上所使用的 codegen.dws 文件,配置完成后保存即可,使用起来非常方便。
如下图:
- EintMode:是否当作中断引脚来使用,例如GPIO3,如果选中了该模式,其它模式是不可见的。
- Def.Mode:GPIO默认的模式,即在系统启动过程中GPIO口的模式,GPIO口启动模式是定义在文件 cust_gpio_boot.h 文件中的,例如GPIO2的启动模式就是作为普通的GPIO口来使用。
- M0~M7:由于GPIO口是可以复用的,除了作为普通的GPIO口使用之外,还有其它用途,例如GPIO4则作为UART1RX来使用,所以勾选对应的复选模式为M2。
- nPull En:是指GPIO是否使能上拉或下拉,只有当GPIO作为输入模式时才生效。
- InPull SelHigh:上面只设置了是否使能上拉或下拉,但并没有指出到底是上拉还是下拉,此处勾选了就表示上拉,否则表示设置下拉,同样只有当GPIO作为输入模式时才生效。
- Def.Dir: 设置GPIO的默认方向,是输入还是输出,都需要设置的。
- In、Out:In和Out这两个选项暂时不知道有何用处,根据字面意思,应该是允许输入或输出的。
- OutHigh:指示GPIO口作为普通IO输出时的电平高低。
- VarName1:变量的名字,就是为GPIO口定义一个别名,在 Preloader 和 LK 驱动中只需要这个属性就可以操作这个GPIO,如设置输出电平的高低等。
- SMT:是否使能斯密特触发器。
- IES:输入使能,控制输入是否有效。
Preloader初始化: