itop-3568开发板驱动学习笔记(25)设备树(四)GPIO 实例分析

news/2024/11/26 4:21:49/

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记

文章目录

  • GPIO 控制器
    • 必要属性
    • 其他属性
  • 指定 GPIO 引脚

和时钟类似,GPIO 在设备树中也存在两层定义,首先是 GPIO 控制器,这部分由芯片原厂工程师编写,相当于 GPIO 底层引脚定义;另一层则是用户引用的部分,一般用于外设引脚配置。

以 iTOP-3568 的 GPIO 设备树为例:

GPIO 控制器

GPIO 控制器例子:

在这里插入图片描述

必要属性

在 GPIO 控制器中,必须有 #gpio-cells 和 gpio-controller 属性,

#gpio-cells 表示其他节点使用该 GPIO 控制器需要几个参数来表示使用的 GPIO,
gpio-controller 表示该节点是一个 GPIO 控制器。

其他属性

上面的例子中还用到了 gpio-ranges 属性

gpio-ranges <&x a b c> 可以把 GPIO 的 b ~ (b + c -1) pin 映射到 x 节点的 a ~ (a + c -1) pin,
比如上面例子的 gpio-ranges = <&pinctrl 0 0 32>; 表示将 GPIO 的 0 ~ 31 号 pin 脚映射到 pinctrl 的 0 ~ 31 号 pin 脚。

这里还有一个 GPIO 控制器的例子,里面除了有上面提到的三个 gpio 属性,还有 ngpios 属性,

在这里插入图片描述
ngpios 表示当前 GPIO 控制器下有多少个 pin 脚。

这里再介绍两个 GPIO 控制器属性:

gpio-reserved-ranges 用于指定保留的 pin 脚,例如 gpio-reserved-ranges <2 3> 表示当前 GPIO 控制器的 2,3,4 pin 脚为预留 pin,即第一个参数为起始 pin,第二个参数为 pin 脚数量。

gpio-line-names 用于给 GPIO 控制器的 pin 脚命名,控制器有多少 pin,就有多少个名字,名字用逗号隔开。

指定 GPIO 引脚

在设备树中给外设分配 GPIO 时,需要指定特定的 GPIO 引脚,指定的格式由 GPIO 控制器决定,

例如 iTOP-3568 设备树中 work 节点中 GPIO pin 定义:

在这里插入图片描述

“gpios” 是一个自定义属性,有三个参数(参数个数由 GPIO 控制器中的 #gpio-cells = <2> 决定),参数的顺序和含义是由平台决定,这里指定 gpios 为 gpio0 控制器下的第 RK_PB7 pin(其实就是 GPIO0_B7),电平为 GPIO_ACTIVE_HIGH。


这里有个小疑问,#gpio-cells = <2>,网上资料基本都说 gpio 属性应该有两个 32 位参数,但 gpio 属性不是有三个参数吗?难道 &gpio0 和 RK_PB7 算一个参数?


http://www.ppmy.cn/news/61165.html

相关文章

sentinel 随笔 2-降级处理

0. 像喝点东西&#xff0c;但不知道喝什么 先来段源码&#xff0c;看一下 我们在dashboard 录入的降级规则&#xff0c;都映射到哪些字段上 package com.alibaba.csp.sentinel.slots.block.degrade;public class DegradeRule extends AbstractRule {public DegradeRule(String…

【Python】贪吃蛇 —— 无聊必备的小项目

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,YOLO领域博主爱笑的男孩。擅长深度学习,活动,YOLO,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typecollect个人…

鸿蒙Hi3861学习四-Huawei LiteOS介绍

一、什么是LitesOS Huawei LiteOS是华为针对物联网领域推出的轻量级物联网操作系统&#xff0c;是华为物联网战略的重要组成部分&#xff0c;具备轻量级、低功耗、互联互通、组件丰富、快速开发等关键能力。基于物联网领域业务特征打造领域性技术栈&#xff0c;为开发者提供“一…

Vue学习笔记1 - Vue是什么?

1&#xff0c;Vue概念 官网上&#xff08;简介 | Vue.js&#xff09; 上说&#xff0c; Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。 这个还好理解&#xff0c;就是说它是一款前端框架&#xff0c;用于构建 前端界面的。 但是它…

element ui el-calendar日历组件使用总结

el-calendar日历组件使用总结 1. 需求说明2. 基础实现3. 只展示当月数据4. 动态切换日历里的数据实现5. 顺便把快捷方式隐藏了&#xff0c;不让用户选择上一个月下一个月 1. 需求说明 按月显示&#xff0c;每次只显示一个月的日期&#xff0c;其余隐藏 日历组件的显示时间随着…

Linux网络编程——网络基础[1]

0.关注博主有更多知识 操作系统入门知识合集 目录 1.网络发展 2.初识协议 2.1协议分层 2.2OSI七层模型 2.3TCP/IP四层(五层)模型 3.网络传输的基本流程 3.1协议报头 3.2局域网通信原理 3.3广域网通信原理 3.4数据包的封装和分用 4.网络中的地址管理 1.网络发展 …

SpringBoot配置连接两个或多个数据库

在Spring Boot应用中连接多个数据库或数据源可以使用多种方式&#xff0c;下面介绍两种常用的方法&#xff1a; 1、使用Spring Boot官方支持的多数据源配置 Spring Boot提供了官方支持的多数据源配置&#xff0c;可以简单地配置和管理多个数据源。 需要在application.proper…

聚合函数+group by

目录 聚合函数group by子句 聚合函数 常用的聚合函数有COUNT()、AVG()、SUM()、MAX()、MIN()。 COUNT()函数&#xff1a;统计数据表中包含的记录行的总数&#xff0c;或者根据查询结果返回列中包含的数据行数。 COUNT(*)计算表中总的行数&#xff0c;不管某列是否有数值或者…