全志平台uboot中GPIO和PIN脚配置说明

2024-03-30 20:38

本文主要是介绍全志平台uboot中GPIO和PIN脚配置说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自:https://www.ebaina.com/articles/140000004643?utm_source=searchindex&utm_medium=list&utm_campaign=140000004643


  • 1.前言

这里描述uboot中关于GPIO和PIN脚配置的修改;以及dts中的规则说明

  • 2.port接口对应数字编号
#define  PA  0
#define  PB  1
#define  PC  2
#define  PD  3
#define  PE  4
#define  PF  5
#define  PG  6
#define  PH  7
#define  PI  8
#define  PJ  9
#define  PK  10
#define  PL  11
#define  PM  12
#define  PN  13
#define  PO  14
#define  PP  15

  • 3.Sysconfig中描述gpio的形式

Sysconfig中描述gpio的形式:
Port:端口+组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态>

  • 4.Pin配置说明

Pinctrl节点分为cpux和cpus,对应的节点路径如下:

Cpux :   /soc/pinctrl@xx
Cpus :   /soc/pinctrl@xx

(1)查看PIN配置

a. PIN配置属性字段说明

<allwinner,function>对应于sysconfig中的主键名
<allwinner,pins>对应于sysconfig中每个gpio配置中的端口名.
<allwinner,pname>对应于sysconfig中主键下面子键名字
<allwinner,muxsel><allwinner,pull><allwinner,drive><allwinner,data>这些属性分别表示<功能分配><内部电阻状态><驱动能力><输出电平状态>

b. 查看cpux的PIN配置

sunxi#fdt list /soc/pinctrl@01c20800/lcd0
lcd0@0 {linux,phandle = <0x000000ab>;phandle = <0x000000ab>;allwinner,pins = "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21";allwinner,function = "lcd0";allwinner,pname = "lcdd0", "lcdd1", "lcdd2", "lcdd3", "lcdd4", "lcdd5", "lcdd6", "lcdd7", "lcdd8", "lcdd9";allwinner,muxsel = <0x00000003>;allwinner,pull = <0x00000000>;allwinner,drive = <0xffffffff>;allwinner,data = <0xffffffff>;
};

c.查看CPUS的PIN配置

sunxi#fdt list /soc/pinctrl@01f02c00/s_uart0
s_uart0@0 {linux,phandle = <0x000000b4>;phandle = <0x000000b4>;allwinner,pins = "PL2", "PL3";allwinner,function = "s_uart0";allwinner,pname = "s_uart0_tx", "s_uart0_rx";allwinner,muxsel = <0x00000002>;allwinner,pull = <0xffffffff>;allwinner,drive = <0xffffffff>;allwinner,data = <0xffffffff>;
};

(2)修改PIN配置
使用fdt set命令可以修改PIN中相关属性字段

sunxi#fdt set /soc/pinctrl@01c20800/lcd0 allwinner,drive <0x1>
sunxi#fdt list /soc/pinctrl@01c20800/lcd0                     
lcd0@0 {linux,phandle = <0x000000ab>;phandle = <0x000000ab>;allwinner,pins = "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21";allwinner,function = "lcd0";allwinner,pname = "lcdd0", "lcdd1", "lcdd2", "lcdd3", "lcdd4", "lcdd5", "lcdd6", "lcdd7", "lcdd8", "lcdd9";allwinner,muxsel = <0x00000003>;allwinner,pull = <0x00000000>;allwinner,drive = <0x00000001>;allwinner,data = <0xffffffff>;
};

  • 5.GPIO配置说明

(1)Device tree和sysconfig.fex中GPIO对应关系
以usb中usb_id_gpio为例

sunxi#fdt list /soc/usbc0                          
usbc0@0 {test = <0x00000002 0x00000003 0x12345678>;device_type = "usbc0";compatible = "allwinner,sun50i-otg-manager";........usb_serial_unique = <0x00000000>;usb_serial_number = "20080411";rndis_wceis = <0x00000001>;status = "okay";usb_id_gpio = <0x00000030 0x00000007 0x00000009 0x00000000 0x00000001 0xffffffff 0xffffffff>;
};usb_id_gpio         = port:PH09<0><1><default><default>

对应于device tree中
usb_id_gpio = <0x00000030 0x00000007 0x00000009 0x00000000 0x00000001 0xffffffff 0xffffffff>
由上面描述, 端口PH 组内序号 功能分配 内部电阻状态 驱动能力 输出电平
2)修改GPIO配置
果需要修改 usb_id_gpio的配置,可按如下方式

sunxi#fdt set /soc/usbc0 usb_id_gpio <0x00000030 0x00000007 0x00000009 0x00000000 0x00000001 0x2 0x1>              
sunxi#fdt list                                                                        
usbc0@0 {test = <0x00000002 0x00000003 0x12345678>;device_type = "usbc0";compatible = "allwinner,sun50i-otg-manager";........usb_serial_unique = <0x00000000>;usb_serial_number = "20080411";rndis_wceis = <0x00000001>;status = "okay";usb_id_gpio = <0x00000030 0x00000007 0x00000009 0x00000000 0x00000001 0x00000002 0x00000001>;   //修改ok
};

这篇关于全志平台uboot中GPIO和PIN脚配置说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/862526

相关文章

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S