zoukankan      html  css  js  c++  java
  • BeagleBone Black板第四课:简单LED控制实验

    BBB板第四课:简单LED控制实验

    学习BBB板的终于目的是想像单片机一样做控制,但控制思路全然不一样(Linux下控制硬件设备实质就是对相关设备虚拟文件的读写)。研究了几天头都大了还是没有进展,网上好多博客文章。也没有个统一的说法,预计都是BBB板的年份不同,以及安装的系统版本号不同。最后选择榜样,从最基础的单命令控制IO接口開始做。

    达到目标:从GPIOportP8.12和P8.11引脚输出0或1

    这节课用到两个命令,cat和echo,详细的用法网上非常多,最简单的理解:cat 用来查看文件(变量)值。而echo用来写入文件(变量)值。

    操作IO口是对/sys/class/gpio这个文件夹下的文件进行了一系列读写操作实现,由于gpio驱动是默认载入的,所以无需载入device tree(设备树,以后学会了再说)就能实现操作。

    简单说明下。/sys 文件夹中存放着系统内核和驱动相关的内容,它是一个虚拟的文件系统,这个文件系统的文件夹结构实质上就是内核对象模型树。

    我们能够对这里的文件进行读写操作来实现对设备的操作。至于每一个设备里都有哪些文件。操作哪些文件能产生什么效果,还是由设备驱动程序定义的了。

    系统开机后 /sys/class/gpio 文件夹下就仅仅有默认的几个文件文件夹。BBB板总共一百多个可用的GPIOport并没有一个一个罗列出来,Linux下控制IO口就是读写IO文件,所以首先得把对应的GPIO文件找出来,事实上就是通过echo命令把须要控制的GPIOport设置为可用状态。/sys/class/gpio 文件夹下就能够显示出相关文件了(简单理解就是原来port控制文件隐身了,通过echo命令把它显示出来)

     

    1、使用P8.12引脚控制LED灯

    在/sys/class/gpio 文件夹下执行 echo 44 > export 。意思是把P8.12设置为可用状态

    这个“44”编号是通过《BBB引脚功能速查表》,找到P8.12相应的GPIO.NO就是44

    运行这个命令后再查询下当前文件夹文件。就会出现一个gpio44的文件夹:

     

    准备好一个小指示灯,两根线。万用板(没有也没事,能接好指示灯即可),我这里用的是P8.12port,P8.2接负端。

     

    用dir 列出 gpio44文件夹下的7个文件。当中“direction”是设置port为输入in或输出out的文件(參数);“value”就是port值0或1(低电平或高电平),我们直接读写这两个文件就能够了。

    使用cat 命令查看当前值,再通过echo 命令改动成须要的值,注意命令使用格式。由于这个简单的实验目的是实现指标灯点亮和灭灯操作,所以“direction”要设置为out ,通过命令catdirection 查看到原来的值为 in ,所以使用命令echo out > direction 设置为 out 。

     

    然后通过改变 value 的值就能够点亮或关闭二极管灯了。

    输入:echo 1 >value 灯亮

    输入:echo 0 >value 灯灭

    过程感觉是非常easy的,但理解起来就非常难的。仅仅能懂得了字符终端模式下的命令操作,明确当中的控制原理后才干在C编程中运用自如。

    2、使用P8.11引脚控制LED灯

    在/sys/class/gpio 文件夹下执行 echo 45 > export ,意思是把P8.11设置为可用状态

    这个“45”编号相同是通过《BBB引脚功能速查表》。找到P8.11相应的GPIO.NO就是45

    运行这个命令后再查询下当前文件夹文件。就会出现一个gpio45的文件夹:

    控制过程是一样的,就不再写了。截几个图看下即可了。

     


    3、通过实验我们一定要明确几点:

    A.控制BBB板的GPIOport输出0或1,就是改动/sys/class/gpio文件夹下对应gpioxxx下的value文件的值

    B.改变GPIOport的输入输出模式就是改动/sys/class/gpio文件夹下对应gpioxxx下的direction文件的值为in 或 out

    C.整个BBB板的硬件设备控制都是通过读写对应的Linux设备虚拟文件来实现的,所以学习BBB板的文件结构系统是很重要的

    D.懂得正确使用《BBB引脚功能速查表》

    E.像本实验中操作GPIOport驱动由于系统是默认载入的。所以不须要再载入device tree设备树就能实现操作。但其它的比方ADC、UART等接口在操作之前就必须先载入相关的device tree设备树。

    这个device tree设备树的概念我如今也是模糊,以后再讨论。

    F.学会灵活使用cat和 echo 命令

  • 相关阅读:
    grep awk 搜索日志常用命令
    【MySQL】通过Percona Monitoring and Management实现数据库的监控
    阿里云centos7.4安装nexus
    Java 开源博客 Solo 1.8.0 发布
    《设计模式之美》
    《设计模式之美》
    《设计模式之美》
    《设计模式之美》
    iOS 通过反射的方式调用目标函数
    回调方法?钩子方法?模板模式?
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6791471.html
Copyright © 2011-2022 走看看