好多年没有看mtk的代码了,mtk的代码在谷歌原生代码的基础上封装修改太厉害了,以往的经验往往不可行了,要养成记录的习惯。
关于MTK代码如何修改gpio的初始状态,记录如下:
首先,MTK代码在开机的时候,会先根据DWS文件的配置去初始化GPIO,但是当跑到lk的时候,有些gpio的状态会再次发生变化。所以如果gpio的状态和你想要的不对的话,请首先确认DWS文件,然后去lk下面看看是否有另外设置。
1、DWS文件修改
kernel、preloader、lk分别都有dws文件和相关工具。分别在kernel和vendor/mediatek/proprietary/bootable/bootloader/目录下find -name *.dws和find -name DrvGen.exe可以看到相关文件的位置。
DWS文件如何修改,这里就不详细介绍了,网上太多相关文章。关于gpio的状态重点关注defmod、上拉使能、pull high、out high。
2、lk相关代码的位置
vendor/mediatek/proprietary/bootable/bootloader/lk/target/sig6737t_66_m0/init.c
工程名不一样的话,路径会有稍微差异,请注意。
相关函数的实际实现位置在
vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6735/mt_gpio.c
这样基本就OK了,祝工作顺利!