http://blog.csdn.net/zuoyioo7/article/details/77863291
如果需要定制GPIO口呢,需要使用mediatek/dct/DrvGen.exe工具,点击Open,选择mediatek/custom/project_dir/kernel/dct/dct/codegen.dws文件,点击Edit,将出现如图所示的一个窗口:
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中。

MTK_GPIO口的定制的更多相关文章

  1. H5表单新特性

    1.HTML5表单新特性之——新的input type <input type=" "> HTML5之前已有的input type: text.password.rad ...

  2. Go(三)面向对象

    封装数据和行为 数据封装 结构定义 type Employee struct { Id string Name string Age int } field后面没有逗号 实例创建及初始化 e := E ...

  3. 华为5G空口新技术(2015年)

    2015-03-24 长江后浪推前浪,4G建设方兴未艾,业界关于5G的讨论已如火如荼.对于每一代移动通信,空口技术都相当于王冠上的明珠. 在月初的世界移动通信大会上,华为发布了面向5G的新空口,并展出 ...

  4. 定制个性化码表技术 ibus

    在不同用户的工作环境中,都会根据各自使用的字符集的不同,而需要定制优化各自的输入法码表,例如,在GB18030中的大量汉字,或许因为输入法码表的老旧,而难于利用自己熟悉的“五笔”方法快速录入,同样,需 ...

  5. FreeBSD_11-系统管理——{Part_4 - 内核参数定制}

    特别提醒:自行定制的内核,必須经过全方位测试无誤后,方能用于生产环境 基于:/usr/src/sys/amd64/conf/GENERIC cpu HAMMER ident TEST_kernel # ...

  6. CDC 虚拟com口

    现在很多电脑已经不带232了,特别是手提电脑.这使很多使用手提在外调试人员非常不方便.或许你可以买一条市面上usb转232转换线,但这些线抗干扰不是太好,在一些干扰大的地方会发生连接中断的问题,所以往 ...

  7. 一口一口吃掉Volley(一)

    欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/02/16/一口一口吃掉Volley(一)/ 本次编写的Volley教程现在看来其实已经跟不上时代了,但是技 ...

  8. 定制自己的new和delete:operator new 和 operator delete

    new和delete不同用法 基本用法 int * aptr = new int(10); delete aptr, aptr = nullptr; 上面的代码是我们最基本也是最常见的使用new和de ...

  9. 【VS Hacks】定制VS

    # Hack 24   定制快捷键 VS能够做很多键盘的配置,其实在VS中目前已经发现有很多的快捷键了,但是在这个技巧篇里会学到如何创建新的快捷键,以及编辑已有的快捷键.VS中包含很多的命令,只有其中 ...

随机推荐

  1. Redis和Mecahe的简介

    Memcache介绍 概念:Memcache是一个高性能,分布式内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等. ...

  2. issubclasss/type/isinstance/callable/super

    issubclass() : 方法用于判断第一个参数是否是第二个参数的子子孙孙类. 语法:issubclass(sub, super) 检查sub类是否是 super 类的派生类 class A: p ...

  3. SpringMVC---四大注解

    SpringMVC四大注解 Component 通用标注,在不清楚使用哪个注解的时候,可以使用Component通用注解 Controller 标注web请求控制器 Service 标注Service ...

  4. CodeForces 785C Anton and Fairy Tale 二分

    题意: 有一个谷仓容量为\(n\),谷仓第一天是满的,然后每天都发生这两件事: 往谷仓中放\(m\)个谷子,多出来的忽略掉 第\(i\)天来\(i\)只麻雀,吃掉\(i\)个谷子 求多少天后谷仓会空 ...

  5. nodejs基础1

    nodejs学习网站: https://github.com/alsotang/node-lessons 1.全局对象 (1)node中没有window对象,有global对象替代window对象 g ...

  6. rownum浅谈(二)

    上篇说到rownum和order by及索引列的关系,明白了通过构建一个子查询把查询结果固定住再取数就可以了 .还是取最近10条创建的用户: select * from (select u.* fro ...

  7. Linux再谈互斥锁与条件变量

    原文地址:http://blog.chinaunix.net/uid-27164517-id-3282242.html pthread_cond_wait总和一个互斥锁结合使用.在调用pthread_ ...

  8. web浏览器中的javascript -- 2

    在html里嵌入javascript: 在html文档里嵌入客户端javascript代码有4种方式: 1.内联,放置在<script>和</script>标签对之间; 2.放 ...

  9. java窗口程序初学组件小总结

    容器(可以放组件)JPanel默认的布局管理器是FlowLayout:JPanel panel=new JPanel(); 按钮JButton(可以为汉字 也可以是图片):JButton button ...

  10. iOS CGContextRef 画一条直线,仅仅是画一条直线

    今天周末休息,想好好补补课,无奈,弄了一上午,全部都是半边拉块的demo,有一种深深的挫败感. 中午睡醒一觉后,又看了一集“奔跑吧兄弟”,然后一下午时间就过去了. 仔细一想,应该是我的补课方法不对:要 ...