百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何在Linux系统中直接操作GPIO(linux gpio pinctrl)

ahcoder 2025-03-29 14:38 15 浏览

上篇文章“把Intel Galileo当Arduino用?太屈才了吧”简单介绍Galileo作为一个Linux与Arduino的集合拥有非常强大的功能,在这里,要向大家介绍下如何写一个python程序实现控制Arduino中才能控制的I/O接口。上篇文章也说过,如果想使用python程序,必须使用SD卡中的Linux系统。

安装SD Linux系统

如图所示,先后将Arduino Software 1.5.3 (Arduino IDE)和SD-Card Linux Image下载到本机,Arduino IDE在后面查找GPIO与Arduino IO 之间的映射关系时需要用到。

如图所示,将SDCard1.0.4.tar.bz2解压后出现一个“image-full-galileo”的文件夹。

在MicroSD使用前需先将其以Fat32进行格式化,然后将“image-full-galileo”文件夹下地所有文件直接拷贝到microSD卡的根目录下。

进入Galileo

将MicroSD插到Galileo中,在路由器页面的已连接设备列表中会看到设备名称为“clanton”有线连接设备,找到其IP地址,然后中Terminal(Unix和Linux,Windows可用Putty)中通过ssh进入Galileo,“ssh root@192.168.199.121”。

有意思的是,这个在MicroSD中运行的Linux系统开启了ssh服务,并且root账号没有设置密码,可以直接进入。如上图所示,弹出一对话框后输入 “yes”回车即可进入Galileo,出现下图中的 “root@clanton”说明这一步成功完成了。

到这里,可能会有疑问了,Galileo板载也是有一个操作系统的,microSD卡中也有一个Linux,如何保证现在进入的就是microSD卡中的系统呢?在Terminal中输入“cat/proc/version”即可查看Linux系统版本,显示为“3.8.7-yocto-standard”,这就是前面下载的为Galileo定制的Linux操作系统,Yocto。

找到那个属于你的GPIO

下面就要开始这篇文章中的核心部分,也是最难的一部。找Linux GPIO 与 Arduino IO之间的映射关系!

如右图所示,在“/sys/class/gpio/”中有多大60多个GPIO,如何找出右侧GPIO与左侧Arduino IDE中对应的IO呢。

首先将0-13IO口全部设为“INPUT”输入模式

voidsetup(){//putyoursetupcodehere,torunonce:
pinMode(0,INPUT);
pinMode(1,INPUT);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
}
voidloop(){
//putyourmaincodehere,torunrepeatedly:
}

如图所示,左侧"pinMode(13,OUTPUT)"将13引脚变为输出模式,右侧gpio7变成out模式,因此gpio7对应的就是Arduino IO 13(pin13)。

按照这种方法依次找出Arduino IO与GPIO之间如下的对应关系

GPIODigitalI/Ogpio11pin0
gpio12pin1
gpio13pin2
gpio14pin3
gpio6pin4
gpio0pin5
gpio1pin6
gpio38pin7
gpio40pin8
gpio4pin9
gpio10pin10
gpio5pin11
gpio15pin12
gpio7pin13

下面就需要来对上面找到的gpio对应关系进行验证了。“echo "out" >/sys/class/gpio/gpio*/direction”为将gpio变为输出模式,“echo "1" >/sys/class/gpio/gpio*/value”为将gpio输出高电平。然后就有了下面这段python程序,这段程序依次将pin13,pin12,pin11,pin10四个引脚的LED点亮然后关闭,但由于python程序的执行效率问题,应该所有LED同时点亮有了延时成为流水灯,如下图所示效果。这段程序在Linux系统的任意文件夹内均可。

importos,timewhileTrue:os.system('echo"out">/sys/class/gpio/gpio7/direction')
os.system('echo"1">/sys/class/gpio/gpio7/value')
os.system('echo"out">/sys/class/gpio/gpio15/direction')
os.system('echo"1">/sys/class/gpio/gpio15/value')
os.system('echo"out">/sys/class/gpio/gpio5/direction')
os.system('echo"1">/sys/class/gpio/gpio5/value')
os.system('echo"out">/sys/class/gpio/gpio10/direction')
os.system('echo"1">/sys/class/gpio/gpio10/value')
time.sleep(0.2)
os.system('echo"0">/sys/class/gpio/gpio5/value')
os.system('echo"0">/sys/class/gpio/gpio15/value')
os.system('echo"0">/sys/class/gpio/gpio7/value')
os.system('echo"0">/sys/class/gpio/gpio10/value')
time.sleep(0.2)

到这里,对Galileo GPIO算是入门了,关于GPIO更多详细讲解放到后面的文章吧。大家对Galileo的任何问题均可回复微信公共号,我会将大家的问题集中在下篇文章中详细说明。

“夸克微小,却能成就伟大,因为有你。请关注英特尔Quark开发者俱乐部微信公共号intelquark。”

相关推荐

什么是Linux的Snap应用?(linux sln 使用方法)

如果你在使用Ubuntu18.04/20.04LTS版本的Ubuntu系统,会发现系统里面多了一个应用格式包——.snap包。Snap包是Ubuntu16.04LTS发...

俄罗斯联邦税务局拨款17亿用于购买搭载俄国产版本Linux的计算机

据cnews网站11月5日报道,俄罗斯联邦税务局已拨款16.9亿卢布用于购买搭载该国国产版Linux操作系统的计算机——这包括AltSP、AstraLinux、RedOS和CentOS。有关部门...

Linux dpkg命令详解(dpkg -l | grep)

一、简介dpkg是基于Debian发行版Linux系统的低级包管理工具,可以手动安装、配置、移除.deb包,与apt命令不同的是,dpkg不会自动处理包之间的依赖关系。二、常用选项...

从 Windows 7 切换到 Linux 的最简单方法

欢迎来到Windows7的最后一天——也就是微软为这个过时的操作系统提供安全更新的最后一天。虽然你有很多升级Windows7的选项,甚至还有可能将更新延长数年的黑客攻击,但如果你不想升级到...

VMware Workstation 17.0 Pro 发布:新增 TPM 2.0 完美兼容Win11

IT之家11月18日消息,VMwareWorkstation17.0Pro现已发布,它带来了许多新特性,例如微软Windows11硬性要求:虚拟可信平台模块(TPM)2.0。...

虚拟机怎么玩?Android MAC Linux 统统拿下

VMWare虚拟机软件是一个"虚拟PC"软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与"多启动"系统相比,VMWare采用了完全不同的概念。多启动系统在一个时...

Linux正式进入4.0时代(linux 4.0)

胡卷卷o2015/04/1311:58今早,LinusTorvalds在Kernel的GitHubmaster中提交了一个改动,Kernel正式进入4时代。该项目代号为“Hurr...

为什么说linux操作系统要比windows稳定?

正常人说windows的时候是指一整套桌面系统,而说linux的时候是一个命令行+内核。后者从原理上就比前者稳定。如果你日常使用的是linux的发行版桌面系统,看到这话估计直接想骂娘。就我12年的ub...

12 款最佳免费开源 Linux 渲染器 | 火狐浏览器 130.0 版本更新

12款最佳免费开源Linux渲染器Linux的一大优势在于其拥有丰富的开源软件,可以满足艺术家、摄影师、动画师和设计师的需求。凭借价格低廉的硬件、免费的软件以及少量的才能和灵感,任何人都可以创...

开源新闻速递:Linux 4.7 内核发布了第二个 RC 版本

今天关注Linux4.7内核发布了第二个RC版本。被很多Linux发行版都作为默认桌面主题的ArcGTK主题发布了相配合的图标主题ArcIcon,不过目前该图标主题还不够完整,缺少...

Linux Kernel最新稳定版4.4.4版本发布

葛雷格·克罗哈曼(GregKroah-Hartman)于今天正式发布了LinuxKernel最新稳定版--4.4.4版本。尽管官方网站并未更新关于该版本的更新日志,但LinuxKernel4....

Escuelas Linux教育系统4.4版本发布

援引外媒SoftPedia报道,基于Ubuntu系统的EscuelasLinux教育操作系统于4月18日正式上线4.4版本,现已开放下载。EscuelasLinux4.4已经重新基于最新发布的的...

Linux Kernel 4.5系列第4个维护版本发布

LinuxKernel开发者GregKroah-Hartman今天宣布最新稳定和最先进的Linux4.5内核分支迎来第4个维护版本。尽管目前没有太多GNU/Linux操作系统适配LinuxKe...

Linux Kernel 4.5 RC6已开放公测:最终版本3月到来

LinuxKernel4.5RC6已于2月28日开放公测,此外LinusTorvalds也宣布最终版本将于3月到来。他表示,4.5版Linux内核的第6个候选发布版本中整合了一个针对网络驱动头...

Linux Kernel 4.5首个候选版本发布

现在长期支持的Linux4.4内核已经结束,接下来内核开发者将研发重心转移至下个重要版本LinuxKernel4.5。就在几分钟前,LinusTorvalds宣布Linux4.5内核系列的首...