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接负端。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHV5ZWppZTg4ODg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHV5ZWppZTg4ODg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

然后通过改变 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 命令

BeagleBone Black板第四课:简单LED控制实验的更多相关文章

  1. BeagleBone Black 板第三课:Debian7.5系统安装和远程控制BBB板

    BBB板第三课:Debian7.5系统安装和远程控制BBB板 由于BBB板系统是Debian 7.4.据说使用Debian系统能够实现非常多BBB板的无缝连接.能够更好的学习和控制BBB板,所以就决定 ...

  2. zju(5)LED控制实验

    1.实验目的 1.学习和掌握如何将一个驱动程序添加到Kconfig,编译到内核. 二.实验内容 1.编写EduKit-IV试验箱Linux操作系统下LED灯的驱动: 2.编写EduKit-IV试验箱L ...

  3. BeagleBone Black教训四局:简单LED对照实验

    BBB教训四局:简单LED对照实验 学习BBB董事会最终目的是做同样的想象单片机控制.但控制是不一样的想法,在所有(Linux在本质上,硬件设备的控制,以虚拟文件有关的设备下的读写),研究了几天头都大 ...

  4. NeHe OpenGL教程 第四十四课:3D光晕

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. NeHe OpenGL教程 第二十四课:扩展

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. NeHe OpenGL教程 第十四课:图形字体

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. 【C语言探险】 第四课的第二部分:串

    内容简单介绍 1.课程大纲 2.第二部分第四课: 字符串 3.第二部分第五课预告: 预处理 课程大纲 我们的课程分为四大部分,每个部分结束后都会有练习题,并会发布答案.还会带大家用C语言编写三个游戏. ...

  8. 【Linux探索之旅】第二部分第四课:文件操纵,鼓掌之中

    内容简介 1.第二部分第四课:文件操纵,鼓掌之中 2.第二部分第五课预告:用户和权限 文件操纵,鼓掌之中 既然上一课我们学习了Linux中的文件组织方式,那么现在就该是玩弄,啊不,是操纵它们的时候了. ...

  9. 【Web探索之旅】第二部分第四课:数据库

    内容简介 1.第二部分第四课:数据库 2.第二部分第五课预告:响应式网站 第二部分第四课:数据库 说到“数据库”,顾名思义,是“数据的仓库”的意思. 所以数据库的一大作用就是储存数据咯. 为什么Web ...

随机推荐

  1. POJ 1236 Networks of School Tarjan 基础

    题目大意: 给一个有向图,一个文件可以从某个点出发传递向他能连的边 现在有两个问题 1.至少需要多少个放文件可以让整个图都有文件 2.可以进行一个操作:给一对点(u,v)连一条u->v的有向边, ...

  2. 动态MST

    原谅我真的写不下去了,太难写了,先占坑. 啥时候有比较连续的时间了再写 肯定没用了的无聊代码 #include <cstdio> #include <vector> const ...

  3. 262144 (game)

    262144 (game) 题目描述 Bessie likes downloading games to play on her cell phone, even though she does fi ...

  4. 使用java的自定义过滤器Filter 处理请求request 并响应response

    package com.enation.eop; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...

  5. SD卡给MCU升级

    目 录1. 前言2. 初识BootLoader2.1 百度百科的BootLoader2.2 BootLoader的简单理解2.3 BootLoader的作用3. BootLoader预备知识3.1 复 ...

  6. 【CF1023D】Array Restoration(构造,线段树)

    题意:有一个长为n的序列,对其进行q次操作,第i次操作可以把连续的一段覆盖为i 现在给出操作后的序列,第i个数字为a[i],其中有一些为0的位置可以为任意值,要求构造任意一组合法的操作后的序列 无解输 ...

  7. 第20章 HOOK和数据库访问

    转自: https://blog.csdn.net/u014162133/article/details/46573873 通过安装Hook过程,可以用来屏蔽消息队列中某些消息 The SetWind ...

  8. 通过OpenGL ES在iOS平台实践增强现实(一)

    http://ios.9tech.cn/news/2013/1108/38495.html 1.本文采用OpenGL ES 1固定渲染管线实现,目标为在设备拍摄到的现实世界中,绘制世界坐标轴,并根据设 ...

  9. IOS VLC编译步骤(包含移植和截图功能)

    http://blog.csdn.net/Kan_Crystal/article/details/40424673 一.下载源码 先到VLC官网将源码下载到本机,以下链接为官网编译操作地址:https ...

  10. 【linux高级程序设计】(第十四章)TCP高级应用 3

    控制socket文件描述符属性 1.set/getsockopt()修改socket属性 int getsockopt (int __fd, int __level, int __optname, v ...