飞凌嵌入式技术帖——i.MX9352的GPIO怎么用?

news2024/10/5 14:37:39

之前小编为大家介绍过在飞凌嵌入式i.MX6ULL开发板上操作GPIO的方法。本期,让我们一起走近i.MX9352处理器,深入了解这位i.MX系列新成员的GPIO该如何操作,以及它与前辈i.MX6ULL处理器又有哪些异同。

01 硬件原理分析

以点灯和按键为例,打开飞凌嵌入式OK-MX9352-C开发板的原理图,可以看到一颗LED灯,它由MX93_PAD_CCM_CLKO4控制。由于这一个GPIO属于1.8V电平域,所以在OK-MX9352-C开发板的底板上并没有直接将GPIO接到LED上,而是用GPIO控制了一个MOS管,再由MOS管去控制LED的亮灭——当GPIO电平为高时,MOS导通,LED点亮;当GPIO电平为低时,MOS关断,LED熄灭。

02 设备树引脚复用

打开飞凌嵌入式OK-MX9352-C开发板的设备树:

OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/OK-MX93-C.dts

在iomuxc节点下新建一组引脚复用,复用的两个GPIO分别是底板上的LED灯D6和按键K1。

接下来新建一个GPIO节点,内容如下:

注释掉LED和KEY部分,防止复用冲突:

保存退出后重新编译设备树。

执行环境变量: 

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk$ . environment-setup-aarch64-toolchain

单独编译设备树:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux- dtbs

编译完成后,单独更新设备树。首先将U盘插到虚拟机上,将生成的设备树文件拷贝到U盘:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ cp arch/arm64/boot/dts/freescale/OK-MX93-C.dtb /media/forlinx/2075-A0A7/

将生成的dtb文件使用U盘拷贝到OK-MX9352-C开发板上,替换掉:/run/media/Boot-mmcblk0p1/OK-MX93-C.dtb

root@ok-mx93:/run/media/Boot-mmcblk0p1# cp /run/media/sda/OK-MX93-C.dtb ./

重启OK-MX9352-C开发板。

03 通过命令测试

在OKMX6ULL-S开发板中,操作GPIO的方式是通过操作/sys/class/gpio下的文件来实现的。而在OK-MX9352-C上,引入了新的Lingpiod的方式,而原有的基于sysfs的操作方式已经不再被支持。

Libgpiod是一种字符设备接口,GPIO访问控制是通过操作字符设备文件(比如/dev/gpiodchip0)实现的。OK-MX9352-C共有4组GPIO,可以在/dev下查看GPIO设备文件。

Libgpiod可以通过shell终端和C库两种方式使用,本节介绍在shell终端控制GPIO的方法,下一节我们将会介绍使用C库的方式控制GPIO。

3.1 gpiodetect

查看所有GPIO设备

这里的gpiochip0- gpiochip4分别对应的是设备树当中的GPIO1-GPIO4这四组GPIO,但是顺序并不是一一对应的,这是由于对应的寄存器地址顺序问题导致的。那么goiochip0如何跟设备树对应起来呢?我们可以打开设备树当中的dtsi文件,文件路径为:

OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/imx93.dtsi

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk$ vi OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/imx93.dtsi

查看GPIO3的寄存器基地址为:gpio3: gpio@43820080,对应的是gpiochip1,而GPIO4对应的是gpiochip2。

其余GPIO的对应关系如下,可供大家参考:

3.2 gpioinfo

由3.1可知,LED灯对应的是GPIO4,即gpiochip2;按键对应的是GPIO3,即gpiochip1。列出gpiochip2控制器的引脚情况:

3.3 gpioset

该命令用于设置GPIO电平,2代表gpiochip2,即GPIO4,28是GPIO pin,当设置该GPIO为1时,底板上的D6点亮。

3.4 gpioget

该命令用于获取GPIO引脚状态,以按键为例,按键对应的是GPIO3-27,即gpiochip1 27。按键没有按下时,读取到按键状态为1,当按键按下时,读到按键状态为0。

3.5 gpiomon

监控GPIO的状态是否发生变化,同样以按键为例,当按键按下时:

04 使用Libgpiod库编程

Libgpiod是用于与Linux GPIO交互的C库和工具,Linux官方于Linux 4.8 版本引入了Libgpiod的功能。而在OK-MX9352-C开发板搭载的Linux5.15内核版本中,已经不再支持sysfs的方式操作GPIO。与sysfs相比,Libgpiod更加可靠,具备更多功能,例如,可一次读写多个GPIO值。

4.1 源码获取

如果想要在PC上交叉编译出能够在开发板上运行的应用,则交叉编译时链接的库文件应该与开发板上的保持一致,可以直接把开发板上的库拷贝到开发环境进行使用。该库文件在开发板上的路径为:

从上图可以看出,Libgpiod库的版本为libgpiod.so.2.2.2,软链接到libgpiod.so.2。

在飞凌嵌入式提供的OK-MX9352-C开发板资料中,已经将所需的库文件、头文件以及相关例程进行了打包,用户可以直接使用。资料路径为:用户资料/应用笔记/ OK-MX9352-C-GPIO接口_Linux应用笔记/Libgpiod测试源码

4.2 编译测试例程

将Libgpiod测试源码目录下的gpiotest.c、gpio-toggle.c、lib.tar.bz2拷贝到开发环境中:

将lib.tar.bz2解压到本目录下,编译时会使用到里边的gpiod.h文件和Libgpiod库文件:

示例1

循环控制LED亮和灭,时间间隔为1s

交叉编译gpio-toggle.c

设置环境变量(注意 . 后边有空格)

交叉编译

将可执行文件gpio-toggle拷贝到开发板中并执行可看到LED(D6)灯1s亮,1s灭。其中输入参数2、28为:gpiochip2 line28。

示例2

按键控制LED亮灭,每按一次状态翻转

交叉编译gpio-test.c

设置环境变量(注意点后边有空格)

交叉编译

将可执行文件gpio-test拷贝到OK-MX9352-C开发板中并执行,可看到每按一次按键,LED灯的状态就翻转一次,其中输入参数1、27为:gpiochip1 line27 ;2、28为:gpiochip2 line28。

以上就是为OK-MX9352-C开发板配置GPIO的过程,希望能够对屏幕前的各位工程师小伙伴有所帮助。

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

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

相关文章

也谈零基础学编程,需要学什么

也谈零基础学编程,需要学什么 零基础人群语法1、注释2、变量2.1 变量命名2.2 数据类型2.3 类型强度 3、 运算符4、流程控制与代码块5、函数和方法6、类 算法学会使用第三方库小结 零基础人群 现在开发语言各种各样,越来越多,尤其是 python &…

算法训练-双指针

双指针 同向双指针3. 无重复字符的最长子串209. 长度最小的子数组713. 乘积小于 K 的子数组 相向双指针167. 两数之和 II - 输入有序数组15. 三数之和438. 找到字符串中所有字母异位词 滑动窗口接雨水 同向双指针 3. 无重复字符的最长子串 题目链接 class Solution { public:…

09——svg中path的使用

一、path 是 svg 中最强大的图形 用于定义一个 路径所有命令均允许小写字母。大写 表示绝对定位,小写 表示 相对定位 (相对于上一个结束的坐标)d 属性中包含所有路径的点,可根据命令缩写 自由组合 命令 名称 …

阿里云备案服务码是什么?备案服务码申请及限制说明

阿里云备案服务码是什么?ICP备案服务码怎么获取?阿里云备案服务码分为免费和付费两种,申请备案服务码是有限制条件的,需要你的阿里云账号下有可用于申请备案服务码的云产品,如云服务器、建站产品、虚拟主机等&#xff…

【刷题之路Ⅱ】LeetCode 475. 供暖器

【刷题之路Ⅱ】LeetCode 475. 供暖器 一、题目描述二、解题1、方法1——排序后二分法1.1、思路分析1.2、代码实现 2、方法2——排序后双指针2.1、思路分析2.2、代码实现 一、题目描述 原题连接: 475. 供暖器 题目描述: 冬季已经来临。 你的任务是设计一…

怎样能把两张照片拼成一张图片,5种工具分享

怎样能把两张照片拼成一张图片?图片拼合的应用场景是很多的。比如将几张相册中的照片拼成一张合影、将多个地图截图拼合在一起形成一个更大的区域地图、将多个漫画图像合并成一本漫画册等。这项技术可以方便地将多张图片整合为一张,节省时间和精力。 因此…

ThinkPHP6布局的方式之模板布局,全局配置方式,模板标签方式,动态方法布局

ThinkPHP6布局的方式之模板布局 ThinkPHP的模板引擎内置了布局模板功能支持,可以方便的实现模板布局以及布局嵌套功能。 有三种布局模板的支持方式:全局配置方式,模板标签方式,动态方法布局。 第一种方式:全局配置方…

有价值项目分享,缺项目可直接搜索(持续更新中)

​近来统计一下最近发的一些资源,包括CSDNB站微信公众号三个平台,仅包括Java资源(SSMSpringBootuniapp)、部分硬件、安卓资源,一共30758492588275个,可覆盖95%的毕业题目,大家可在相关归档内获取…

2023 年破解 PDF 密码的 5 种最佳方法

世界越来越依赖数字文档和信息存储。最流行和广泛使用的数字文档文件格式之一是便携式文档格式 (PDF)。PDF 文件用途广泛、可靠,并提供高级别的安全性以保护敏感信息免遭未经授权的访问。保护 PDF 的一种常用方法是通过密码保护。在这篇博文中,我们将讨论…

从SRM到采购供应链,云时通SRM助力东明实现采购数字化再升级!

随着制造业不断向高端跃升,十年来,中国制造企业早已具备全球领先水平。而引领制造业向数字化、网络化、智能化转型升级,是中国智造进一步跨越的关键。 1995年,浙江东明不锈钢制品股份有限公司(以下简称“东明”)成立,作…

超细!从零安装压测工具 jmeter(附JDK下载安装教程,20230516的JDK8最新版)

两步走,安装 JDK 和 jmeter,如果安装了JDK的同志可以直接看第二步。 针对的操作系统:Windows。 下载JDK 官网指路(处于稳定性考虑,安装的JDK8): Java Downloads | Oraclehttps://www.oracle.c…

Java配置方式使用Spring MVC

文章目录 基于Java配置方式使用Spring MVC一、创建Maven项目二、添加相关依赖三、创建日志属性文件四、创建首页文件五、创建Spring MVC配置类六、创建Web应用初始化配置类七、创建演示控制器八、配置Tomcat服务器九、启动服务器,查看效果 基于Java配置方式使用Spri…

「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变

「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变 参考&鸣谢 HTTP1.0、HTTP1.1、HTTP2.0的关系和区别 doubleYong 计算机网络_HTTP1.0、HTTP1.1和HTTP2.0的区别 一只前端小马甲 文章目录 「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变一、先说结论二、HTTP网络请求过程三…

【01】一步一步命令行输出VC hello world

一步一步命令行输出VC hello world 安装VS2022编写hello world程序配置cl.exe编译helloworld.cpp总结 安装VS2022 VS2022的安装程序下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 。下载完成之后点击程序会进入到选择安装VS2022组件的安装程序,…

小红的好数组陡峭值之和

题目如下 这个题我一开始是先生成满足0,1,2的全排列,但是n很大时很快就超出内存限制了,后来想到用动态规划的方法做,这里先分析一下。 n2时,有01,02,10,12,2…

自动化设备应用之样本手册

Lookbook,新品展示图,是时尚品牌的必备品。Lookbook既展示了新系列,也突出了品牌的基本调性。创建样本手册是释放创造力并从其他时装设计师中脱颖而出的机会。有吸引力的封面、精心策划的图像、精巧的布局、颜色标识和传达风格都是品牌内容传…

建构筑物安全监测

监测要求 1)观测点应设置在观测段结构构件的控制断面上; 2)平面应力状态的结构应力观测宜设置三向应变观测点,主应力方向明晩的部位可设置单向或两向应变观测点; 3)建筑物的重要部位应增设观测点; 4&am…

ControlNet让SD变得可控

ControlNet是一个用于深度神经网络的控制技术,它可以通过操作神经网络块的输入条件来控制神经网络的行为。在这里,“网络块”是指常用的神经层集合,例如“resnet”块、“conv-bn-relu”块、多头注意力块等。通过克隆神经网络块的参数并应用零…

软考A计划-真题-分类精讲汇总-第十七章(数据结构与算法)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

智慧档案馆建设之八防十防常用的设备

档案八防十防常用的十款设备 序号 名称 1 温湿度传感器 2 空气质量云测仪 3 恒湿净化一体机 4 健康防护一体机 5 综合智能触摸一体化区域控制器 6 空调红外学习控制模块 7 漏水检测控制器及感应线 8 数字烟雾传感器 9 红外防盗传感器 10 系统软件平台 附…