MTK开发之—常见问题与解决方案

1、 如何查看系统各GPIO的状态以及高低电平

在adb下进入pinctrl子系统查看mt_gpio文件,该文件在: /sys/devices/soc/1000b000.pinctrl,可以看到所有的IO模式与状态

adb shell
cd /sys/devices/soc/1000b000.pinctrl
cat mt_gpio

如下图所示:
在这里插入图片描述

2、如何排查驱动是否正常加载

①驱动编写时加log信息
②保存系统开机启动log
③查看log文件,查找驱动中的相应log信息

mtk系统启动时有特别多的log,并且mtk系统串口波特率比较高,一般的串口工具还真扛不住,我推荐使用SecureCRT,该工具的优点我就不多说了,这里只介绍下如何设置保存log,如下图所示:
在这里插入图片描述
根据工具连接时间设置了保存的位置以及名称
E:\1.Work\LKK\log%Y%M%D_%h%m%s.log
[%Y%M%D_%h:%m:%s]
[%h:%m:%s:%t]
驱动有没有生效,首先看串口记录的log,然后看相应的设备节点下有无对应的驱动,能否进行操作
如果没有就去查看系统的启动log文件,去里边跟踪某个驱动文件中的相应log,看驱动是否成功加载
当然前提是你在驱动中编写了相关log信息

3、如何修改驱动文件权限属性

用DEVICE_ATTR宏定义生成的文件上有权限设置,DEVICE_ATTR宏定义如下:

//参数:文件名, 权限属性(usr/group/others), 读函数, 写函数
#define DEVICE_ATTR(_name, _mode, _show, _store) \
	struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
//示例:
static DEVICE_ATTR(reg, S_IWUSR | S_IRUGO, reg_show, reg_store);

这个权限是有限制的,有时编译会出错,因为VERIFY_OCTAL_PERMISSIONS宏对权限的检查有限制,该宏在/kernel-3.18/include/linux的sysfs.h文件中,具体可以参考这篇文章的描述VERIFY_OCTAL_PERMISSIONS权限检查
不过今天我们来介绍另外一种改变文件权限属性的方法,只需改变/system/core/rootdir/ueventd.rc文件,打开如下,是对文件设备权限的一些描述:
在这里插入图片描述
第一栏是设备文件路径,第二栏是文件名,第三栏是权限属性,第四栏是所有者权限,第五栏是用户组权限,我们只需要将我们需要修改的文件一葫芦画瓢填进去即可,编译make systemimage -j8后,在out/target/product/$(project)/root下查看同名文件是否修改成功

4、gpio被占用了,而又不知道是哪个地方占用的,该怎么办?

在mtk_gpio_set函数里边加log,只要使用了gpio就会调用该函数,可以定位是哪个函数调用了
该函数属于pinctrl子系统,在pinctrl-mtk-common.c文件里,而该文件路径在:/kernel-3.18/drivers/pinctrl/mediatek下
在该函数下加log,比如下图所示:
该函数static void mtk_gpio_set(struct gpio_chip *chip, unsigned offset, int value)有三个参数,其中中间offset参数表示的是哪个gpio,比如我测试用的是gpio27,只要有地方使用了gpio27,就会打印我们设置的特定log
dump_stack()是内核提供的接口,可以定位某个回调函数由谁调用
在这里插入图片描述
然后进行编译 make bootimage -j8
再然后将编译后的程序烧录进板子
重新上电启动之后将启动log保存下来,我用的是CRT
打开log文件查找我们设置的特定log标志,如下图所示,果然有地方调用了该gpio
在这里插入图片描述
于是我们可以确定是mtk_ext_disp_mgr_init这个函数中使用了该gpio,我们只需将该函数所在模块关闭即可,然后编译重新验证,如果log中不再出现我们设置的特定log,则说明没有任何函数使用了该gpio

5、一些完整的流程

一、需要将几个GPIO设置为高/低电平,比如我手头这项目就需要将GPIO26、27、28分别设置为高、低、低,怎么弄呢?

处理方法:可以用mtk源码中自带的dct工具,使用dct工具对coden.dws文件操作可以很容易的对gpio进行设置,
该dct工具在:vendor\mediatek\proprietary\bootable\bootloader\preloader\tools\dct下
coden.dws文件在: vendor\mediatek\proprietary\bootable\bootloader\lk\target$(project)\dct\dct下
①使用dct工具对coden.dws文件进行配置,然后保存
②编译,make lk -j8,make kernel -j8
③配置文件有没有生效可以看cust_gpio_boot.h这个文件
在:lkk_origin\out\target\product$(project)\obj\BOOTLOADER_OBJ\build-lkk8163_tb_m\inc目录下,这个文件是上面那个配置文件编译后生成的,如果没问题就烧写程序到板子,如果有问题就重新检查①②步骤
④下载到板子后可以直接用万用表测相应的gpio口电平状态,也可以在adb下进入pinctrl子系统查看mt_gpio文件,该文件在:
/sys/devices/soc/1000b000.pinctrl,可以看到所有的IO模式与状态

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MTK6762开发文档是为MTK6762芯片而准备的一份技术文档,旨在为开发人员提供有关如何编写和优化与该芯片兼容的软件的详细信息。 首先,文档介绍了MTK6762芯片的基本架构和核心功能。它解释了芯片的不同组成部分,包括处理器核心,内存子系统,多媒体处理单元和IO接口等。开发人员可以通过阅读文档来了解芯片的性能和特性,从而更好地利用其潜力。 其次,文档详细说明了MTK6762芯片的编程接口和软件开发工具。这包括有关如何配置和使用操作系统(如Android),编写和调试设备驱动程序,编写应用程序和库以及进行性能调优的信息。开发人员可以按照文档中的指导进行相应的设置和操作,以确保他们的软件与芯片完全兼容且能够最大程度地发挥其功能。 此外,文档还提供了有关MTK6762芯片的测试和验证方法的详细信息。它提供了一系列的测试用例和验证工具,帮助开发人员在软件开发过程中进行各种测试和优化工作。开发人员可以通过执行这些测试用例来验证他们的软件在不同应用场景下的稳定性和性能表现。 总的来说,MTK6762开发文档为开发人员提供了一个详尽的指引,帮助他们更好地理解和利用MTK6762芯片的功能。通过阅读和遵循文档中的指南,开发人员可以更加高效地开发基于MTK6762芯片的软件,并确保其在不同环境下的稳定性和性能表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东皇※太一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值