zoukankan      html  css  js  c++  java
  • Shell脚本学习笔记3——控制GPIO

    在我参与维护的一个项目中,硬件上有一处设计失误:本应该短接到地的一个GPIO没有短接到地,导致某一个功能不能实现,正式出货的时候会进行改版。

    但目前还处于测试阶段,只需要先把这个功能实现出来,方案有两个,一是硬件上飞线去实现,而是通过软件去拉低这个GPIO。鉴于硬件飞线比较麻烦,所以我们选择软件上写一个脚本来实现。

    我们可以先通过命令行来控制某一个GPIO(我要控制的GPIO编号是476)验证一下,如果没有问题,我们再将这些命令写到脚本里,再增加一些逻辑判断就可以。

    1、首先我们来看看/sys/class/gpio/这个目录下有什么:

    aplex@aplex:~$ ls /sys/class/gpio/
    export  unexport  
    /sys/class/gpio/这个目录是控制gpio的,而 /sys/class/gpio/export文件是用于通知系统需要导出控制的GPIO引脚编号,
    /sys/class/gpio/unexport文件是用于通知系统取消导出控制的GPIO引脚编号

    2、既然我们要控制某一个gpio,那么就需要告诉系统需要导出控制的gpio是哪个,并且需要超级用户的权限才可以(经过验证,sudo获取临时的权限并不能执行,需要用su才可以):

    aplex@aplex:~$ su
    Password:
    root@aplex:/home/aplex# echo 476 > /sys/class/gpio/export
    

      一般情况下,执行了以上指令后,就可以在/sys/class/gpio/目录下找到一个gpio476的文件夹,因为我现在是在虚拟机上操作,所以并没有这个文件出现,但是有在真实环境下验证过。

    3、需要设置一下gpio的方向(输入或者输出),因为我要拉低这个引脚的电平所以必须设置为输出:

    root@aplex:/home/aplex# echo out > /sys/class/gpio/gpio476/direction
    

      

    4、设置gpio的电平状态,这里设置为低电平:

    root@aplex:/home/aplex# echo 0 > /sys/class/gpio/gpio476/value
    

     

    5、执行以上命令后,退出root用户,切换到普通用户:

    root@aplex:/home/aplex# exit
    

      

    经过以上操作后,用万用表测量该引脚的电平,已经被拉低了。

    那么接下来的工作就是写脚本了。脚本的内容如下:

    #!/bin/bash
    
    ls /sys/class/gpio
     
    if [ -d /sys/class/gpio/gpio476 ]
    then
    	echo out > /sys/class/gpio/gpio476/direction
    	echo 0 > /sys/class/gpio/gpio476/value
    else
    	echo 476 > /sys/class/gpio/export
    	echo out > /sys/class/gpio/gpio476/direction
    	echo 0 > /sys/class/gpio/gpio476/value
    fi

    在执行这个脚本之前需要给这个脚本执行的权限,假设这个脚本的名称保存为ioCtrlLow.sh:

    aplex@aplex:~$ sudo chmod 777 ioCtrlLow.sh
    

      

    接下来就是执行:

    aplex@aplex:~$ sudo ./ioCtrlLow.sh
    

      

  • 相关阅读:
    第24章、OnLongClickListener长按事件(从零开始学Android)
    第21章、OnItemSelectedListener事件(从零开始学Android)
    GIS开源软件大全
    How to configure SRTM elevations in WorldWind WMS
    [转]SRTM、ASTER GDEM等全球数字高程数据(DEM)下载方式简介
    SRTM数据介绍与说明
    [转]基于四叉树(QuadTree)的LOD地形实现
    [转]World Wind学习总结一
    [转]World Wind Java开发之四——搭建本地WMS服务器
    [转]World Wind Java开发之五——读取本地shp文件
  • 原文地址:https://www.cnblogs.com/young-dalong/p/15119772.html
Copyright © 2011-2022 走看看