[dts]AM4378的dts中配置和数据手册映射关系
最近在设置AM4378 GPIO的时候产生了困惑
- 如何设置GPIO为output_pullup, output_pulldown, input_pullup, input_pulldown, high-impedency, output_disable, input_disable
- 在dts中0x020 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* (B10) gpmc_ad8.gpio0[22] */是什么意思,和数据手册怎么对应
首先在官方的TI PinMux Tool只有outpu/input的三种pull_up, pull_down, no_pull,也就是在dts中input和output只对应三种配置方式,NOPULL, PULLUP, PULLDOWN,并没有像飞思卡尔imx6那么多可配的属性, 这三个和MUX_MODE7定义在:
include/dt-bindings/pinctrl/am43xx.h
中可以看出, 在kernel里面关于上下拉确实没有高阻等配置方式,
- PIN_OUTPUT即为PULL_DISABLE (1<<16)
- PIN_OUTPUT_PULLUP为PULL_UP (1<<17)
- PIN_OUTPUT_PULLDOWN为0
- PIN_INPUT为INPUT_EN和PULL_DISABLE (1<<18 | 1<<16)
- PIN_INPUT_PULLUP为INPUT_EN和INPUT_UP (1<<18 | 1<<17)
- PIN_INPUT_PULLDOWN为INPUT_EN (1<<18)
接下来,0x020 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)这个是在设置哪个寄存器呢,0x020是什么意思呢?
查看手册AM437x TRM的Chapter2.Memory Map, CONTROL_MODULE 0x44E1_0000 0x44E1_FFFF和Chapter7.Control Module (800h CTRL_CONF_GPMC_AD0),这其中,0x44E1_0000+0x800之和就是GPIO配置的基地址,上面的0x020就是基于当前基地址的偏移,在Register地址映射能看出820h CTRL_CONF_GPMC_AD8,这个和之前dts中(B10) gpmc_ad8.gpio[0[22]可以对应起来
也就能推断出来0x020 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) 这个脚本是在设置Control Module的寄存器,而非GPIO章节的寄存器,那么我们来看下这个寄存器的内容


从上述可以看出来,0-3bit为Mux Mode,16bit为pullup/pulldown使能/失能,17bit为pullup/pulldown选择,18bit为Input使能
这样从数据手册到kernel源码再到device tree整套就齐整了。
另外上述提到的MODE0和MODE7到底代表什么属性?
在Processor文档中,有如下pin说明

为什么N4是mode0因为该引脚只有ddr_wen功能,A24引脚有8个功能,而Reset之后是Mode7,也就是表中的gpio2_25,普通gpio功能
[dts]AM4378的dts中配置和数据手册映射关系的更多相关文章
- 12.翻译系列:EF 6 中配置一对多的关系【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-f ...
- PostgreSQL、SQL Server数据库中的数据类型的映射关系
PostgreSQL 8.1 轰动发布,我也打算将原来使用 SQL Server 的一些应用迁移到 PostgreSQL 上,首先需要迁移的是表,那么这就必须要先搞清楚这两个数据库中的数据类型的映射关 ...
- ubuntu系统中java -version所显示的版本与/etc/profile中配置的$JAVA_HOME的关系
问题产生 ubuntu 18.04环境下,执行 java -version 发现与/etc/profile中的$JAVA_HOME所设置的java版本不同. 推测原因 最近用apt install 安 ...
- 11.翻译系列:在EF 6中配置一对零或者一对一的关系【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-fi ...
- 8.翻译系列: EF 6中配置领域类(EF 6 Code-First 系列)
原文地址:http://www.entityframeworktutorial.net/code-first/configure-classes-in-code-first.aspx EF 6 Cod ...
- WebLogic的安装和配置以及MyEclipse中配置WebLogic
WebLogic 中间件: 是基础软件的一大类,属于可复用软件的范畴,顾名思义,中间件属于操作系统软件与应用软件的中间,比如:JDK,框架,weblogic. weblogic与tomcat区别 : ...
- ASP.NET Core 在 JSON 文件中配置依赖注入
前言 在上一篇文章中写了如何在MVC中配置全局路由前缀,今天给大家介绍一下如何在在 json 文件中配置依赖注入. 在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等 ...
- Windows Server2008 下用于.NET Framework3.0版本的问题无法在IIS7中配置.NET Framework4.0节点的问题
Windows Server 2008中,功能列表安装的为.NET Framework3.0. 试了N种方法未升级为.NET Framework4.0(哪位如果可以直接升级为4.0或3.5希望能够分享 ...
- Ubuntu中配置Java环境变量时,出现command not found问题解决记录
百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile, ...
随机推荐
- 【BZOJ2395】【Balkan 2011】Timeismoney 最小乘积生成树
链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...
- jota-time 练习
public static void main(String[] args) { LocalDate now = new LocalDate(); //输出形式为yyyy-MM-dd System.o ...
- 【Android UI】如何做一个纯粹的Android app UI 设计
原文:http://android.eoe.cn/topic/summary 许多开发者会在多个平台上发布应用.如果您打算为 Android 开发应用,请记住在不同的平台需要遵守不同的要求和惯例.在某 ...
- Bootstrap FileInput中文API整理
这段时间做项目用到bootstrap fileinput插件上传文件,在用的过程中,网上能查到的api都不是很全,所以想着整理一份比较详细的文档,方便自己今后使用,也希望能给大家带来帮助,如有错误,希 ...
- 了解HTTP协议栈(实践篇)
关于http协议的理论知识,我在这里就不详细说明了,具体下面给出的链接有.接下来都是用具体的操作显示的,各位可以结合起来看. 一.使用nc打开端口,并使用浏览器进行访问 (对应文章中的HTTP协议详解 ...
- Stochastic Gradient Descent收敛判断及收敛速度的控制
要判断Stochastic Gradient Descent是否收敛,可以像Batch Gradient Descent一样打印出iteration的次数和Cost的函数关系图,然后判断曲线是否呈现下 ...
- FFmpeg(12)-使用NDK通过GLSurfaceView完成视频的播放
一.包含头文件和库文件 这里采用的是NDK中的ANativeWindow来完成视频的播放,因为需要添加相关的库和头文件. CMakeLists target_link_libraries( # Spe ...
- G1 Garbage Collector and Shenandoah
http://www.diva-portal.se/smash/get/diva2:754515/FULLTEXT01.pdf https://is.muni.cz/th/ifz8g/GarbageC ...
- Gartner 2018新技术成熟度曲线
https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/82047719 近日,Gartner发布了2018年新技术成熟度曲线,首次将生物 ...
- select元素添加option的add()方法 | try{}catch{}
1.javascript中的select元素添加option使用add()方法 select的add方法,第一个参数是需要被添加的option元素,第二个参数决定了被添加的位置 普通浏览器中,第二个参 ...