Zynq-7000、国产zynq-7000的GPIO控制(三)

news2024/10/7 3:25:22

本文主要对在Linux下使用zynq-7000或者FMQL45T900控制MIO/EMIO

首先内核配置项

如下,这个不用太多关注,一般都是默认打开的

CONFIG_GPIO_SYSFS=y
CONFIG_SYSVIPC=y
CONFIG_GPIO_ZYNQ=y

两者的控制都是流程都是一样的,在细节上又区别

首先都在/sys/class/gpio/查看对应节点

FMQL45T900

Zynq-7000平台

这里两者的明显的区别在于FMQL45T900节点个数比较多有四个,这里简单分析一下原因

两者的GPIO的驱动设计不一样

Zynq驱动设计从设备树zynq-7000.dtsi可以看出确实只有一个节点

		gpio0: gpio@e000a000 {
			compatible = "xlnx,zynq-gpio-1.0";
			#gpio-cells = <2>;
			clocks = <&clkc 42>;
			gpio-controller;
			interrupt-controller;
			#interrupt-cells = <2>;
			interrupt-parent = <&intc>;
			interrupts = <0 20 4>;
			reg = <0xe000a000 0x1000>;
		};

 FMQL45T900中设备文件fmsh-psoc.dtsi可以看出有四个节点

gpio0: gpio@e0003000 {
			compatible = "snps,dw-apb-gpio";
			reg = <0xe0003000 0x100>;
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clkc NCLK_APB_GPIO>;
			status = "disabled";

			porta: gpio-controller@0 {
				compatible = "snps,dw-apb-gpio-port";
				bank-name = "porta";
				gpio-controller;
				#gpio-cells = <2>;
				snps,nr-gpios = <32>;
				reg = <0>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

		gpio1: gpio@e0003100 {
			compatible = "snps,dw-apb-gpio";
			reg = <0xe0003100 0x100>;
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clkc NCLK_APB_GPIO>;
			status = "disabled";

			portb: gpio-controller@0 {
				compatible = "snps,dw-apb-gpio-port";
				bank-name = "portb";
				gpio-controller;
				#gpio-cells = <2>;
				snps,nr-gpios = <22>;
				reg = <0>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

		gpio2: gpio@e0003200 {
			compatible = "snps,dw-apb-gpio";
			reg = <0xe0003200 0x100>;
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clkc NCLK_APB_GPIO>;
			status = "disabled";

			portc: gpio-controller@0 {
				compatible = "snps,dw-apb-gpio-port";
				bank-name = "portc";
				gpio-controller;
				#gpio-cells = <2>;
				snps,nr-gpios = <32>;
				reg = <0>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

		gpio3: gpio@e0003400 {
			compatible = "snps,dw-apb-gpio";
			reg = <0xe0003400 0x100>;
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clkc NCLK_APB_GPIO>;
			status = "disabled";

			portd: gpio-controller@0 {
				compatible = "snps,dw-apb-gpio-port";
				bank-name = "portd";
				gpio-controller;
				#gpio-cells = <2>;
				snps,nr-gpios = <32>;
				reg = <0>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

怎么计算我们需要操作的原理图上的IO管脚

Zynq-7000假如要操作MIO10

从上图可以看到设备中第一个IO编号为906,这个编号属于MIO的编号。即第一个GPIO为gpio906。你需要操作某个GPIO直接找出对应的GPIO编号,比如:我要使用MIO10对应第11个GPIO对应的编号为:gpio916。注意第一个为906对应MIO0。

FMQL45T900的计算稍微复杂一点,提供了四个根节点,分别对应每个bank

其他MIO/EMIO可以根据下表格计算出来,这里列举几个实际使用的IO

Linux节点

对应bank

对应IO

最大偏移量

gpiochip394

BANK3起始节点

EMIO32

32

gpiochip426

BANK2起始节点

EMIO0

32

gpiochip458

BANK1起始节点

MIO32

54-32

gpiochip480

BANK0起始节点

MIO0

32

这里列举几个实际使用的管脚对应的节点

MIO32 ->   gpiochip458

MIO43 ->   gpiochip469

EMIO0 ->   gpiochip426

EMIO5 ->   gpiochip431

EMIO6 ->   gpiochip432

EMIO7 ->   gpiochip433

EMIO8 ->   gpiochip434

EMIO9 ->   gpiochip435

EMIO10 ->  gpiochip436

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/463774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章 安装Unity

使用Unity开发游戏的话&#xff0c;首先要安装Unity Hub和Unity Editor两个软件。大家可以去官方地址下载&#xff1a;https://unity.cn/releases/full/2020 &#xff08;这里我们选择的是2020版本&#xff09; Unity Hub 是安装 Unity Editor、创建项目、管理帐户和许可证的主…

mall-swarm微服务商城系统

mall-swarm是一套微服务商城系统&#xff0c;采用了 Spring Cloud 2021 & Alibaba、Spring Boot 2.7、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术&#xff0c;同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心…

陆游和辛弃疾都是南宋主战爱国的大才子,而且生活在同一个时代,有没有交集?

辛弃疾和陆游&#xff0c;都是宋朝著名的爱国诗人。但是这两位都没怎么做过正儿八经的大官&#xff0c;按照现代人的说法&#xff0c;他们总是在基层打嘴炮&#xff0c;对于朝廷的决策&#xff0c;他们是无能为力的。 这两位大诗人可以说生活在同一个年代&#xff0c;他们究竟…

【数据结构】算法的时间复杂度和空间复杂度详解

文章目录 一、算法的效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度的概念 二、大O的渐进表示法三、时间复杂度2.1 时间复杂度的概念2.2常见时间复杂度计算举例 四、空间复杂度2.1 空间复杂度的概念2.2常见空间复杂度计算举例五、解决问题的思路LeetCode-exercise 总结 一、算…

Html5惯性小鸟游戏制作与分享(经典游戏)

当年电子词典中的经典游戏&#xff0c;后来出了无数变种的玩法。这里还原了最初的玩法与操作。实现了这一款有点难度“的怀旧经典游戏。 玩法也很简单&#xff0c;不用碰到任何东西、持续下去。。。 可以进行试玩&#xff0c;手机玩起来效果会更好些。 点击试玩 还有很多变种…

Python小姿势 - 知识点:

知识点&#xff1a; Python的字符串格式化 标题&#xff1a; Python字符串格式化实例解析 顺便介绍一下我的另一篇专栏&#xff0c; 《100天精通Python - 快速入门到黑科技》专栏&#xff0c;是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造。 基础知识…

ASO优化之竞品研究与分析

我们的应用要有绝对优势和不同的营销策略才能在应用商城里脱颖而出&#xff0c;来获取用户的注意力。我们可以通过对自己家应用与竞争对手在相似的功能和后期用户评价方面&#xff0c;提取出有助于提升应用排名的因素&#xff0c;从而确定自己家应用的优化领域。 竞品分析的主…

Debian彻底卸载软件包(apt-get)

彻底卸载软件包可以运行如下命令&#xff1a; 1 # 删除软件及其配置文件 2 apt-get --purge remove <package> 3 # 删除没用的依赖包 4 apt-get autoremove <package> 5 # 此时dpkg的列表中有“rc”状态的软件包&#xff0c;可以执行如下命令做最后清理&#xff1a…

持续集成——App自动化测试集成实战

这里写目录标题 一、app自动化测试持续集成的好处二、环境准备三、Jenkins节点挂载四、节点环境的配置1、JDK2、模拟器3、sdk环境4、Python3环境5、allure-commandline工具6、allure插件 五、本地运行待测代码(保证代码没有问题)六、库文件的导出七、Jenkins上运行代码配置1、指…

如何使用git上传文件到Github远程仓库(完整详细流程)

文章目录 1.在电脑上下载Git2.配置Git3.上传Github仓库 1.在电脑上下载Git git官网下载&#xff1a;Git - Downloads (git-scm.com) 下载后安装即可。 2.配置Git 鼠标右键进入Git命令行 &#xff08;1&#xff09;设置用户名和设置用户账号&#xff08;需要是自己的注册Git…

Floccus插件 + 坚果云 实现不同浏览器间书签同步

&#xfeff; 在工作与学习中&#xff0c;我们时常希望在不同浏览器之间实现书签的同步&#xff1b;而一些传统的浏览器书签同步方案&#xff0c;或多或少都面临着一些问题——比如&#xff0c;Chrome浏览器尽管可以实现比较好的跨设备同步&#xff0c;但由于网络的限制可能导致…

总结832

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 暴力英语&#xff1a;读了《美丽心灵》中的经典演讲&#xff0c;回诵前3篇文章&#xff0c;默写了前3篇文章&#xff0c…

OpenCV中的图像处理3.1-3.3(三)

目录 3.1 改变色彩空间目标改变色彩空间对象跟踪如何找到HSV值来追踪&#xff1f;练习 3.2 图像的几何变换目标变换缩放平移旋转仿射变换透视变换其他资源 3.3 图像阈值处理目标简单的阈值处理自适应阈值处理Otsu的二值化Otsu的二值化是如何工作的&#xff1f;其他资源练习 翻译…

Ubuntu22.04安装CUDA、cudnn详细步骤

文章目录 安装CUDA安装cudnn下载安装文件安装验证是否安装成功 在Ubuntu系统中&#xff0c;使用nvidia-smi命令可以看到当前GPU信息&#xff0c;在右上角可以看到CUDA Version&#xff0c;意思是最大支持的CUDA版本号。 上一篇文章已经安装了显卡驱动&#xff0c;这次继续安装C…

带你深入学习k8s--(三) pod 管理

目录 一、简介 1、什么是pod 2、为什么要有pod 二、pod的分类 0、pod常用命令命令 1、准备镜像 2、自主式pod 3、控制器创建pod 4、扩容pod数量 5、通过service暴露pod&#xff08;负载均衡&#xff0c;自动发起&#xff09; 6、更新应用版本 三、编写yaml文件 四、Pod生命周期…

EF基础入门

目录 基础查询 基本单表Select查询 ​编辑 数据排序 分页Skip()、 Take() 查询聚合操作符&#xff08;如 Count、Sum、 Min、Max、Average、Aggregate&#xff09; 不返回一个序列&#xff0c;而返回一个值。 基本单表分页 基本单表 in / not in 内连接Join 左连 Grou…

基于springboot框架Java+vue2开发的智慧校园源码,智慧班牌源码

智慧校园云平台电子班牌系统源码 智慧校园平台电子班牌系统源码在大数据平台下&#xff0c;对应用系统进行统一&#xff0c;以数据互联软硬结合的特点应用在校园&#xff0c;实现对校园、班级、教师、学生的管理。 文末获取联系&#xff01; 电子班牌硬件主要用于显示班级信息…

Java SE

文章目录 基本概念cmd命令Java构成原码/反码/补码基本数据类型*switch表达式运算符三大特性关键字*对象四种关系对象的引用内存分配*接口*抽象类*内部类方法重载方法重写可变参数代码块包装类字符串* 基础知识常用APIMathSystemRuntimeObjectObjectsArraysBigIntegerBigDecimal…

node之包(第三方模块)

目录 安装包的命令 卸载包的命令 devDependencies节点 解决下包速度慢的问题 导入moment包案例 包的分类 项目包 全局包 模块的加载机制 优先从缓存中加载 内置模块的加载机制 自定义模块的加载机制 第三方模块的加载机制 目录作为模块 包是由第三方个人或团队…

c/c++:char*定义常量字符串,strcmp()函数,strcpy()函数,寻找指定字符,字符串去空格

c/c&#xff1a;char*定义常量字符串&#xff0c;strcmp()函数&#xff0c;strcpy()函数&#xff0c;寻找指定字符&#xff0c;字符串去空格 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所…