通過sysfs操控GPIO
點亮或熄滅LED
硬體上,一個LED燈接在pi的Pin-25. 該引腳為BCM的GPIO26
$ gpio readall +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT5 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT5 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 1 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | OUT | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+├
按照下面的命令點亮及熄滅LED
[email protected]:/sys/class/gpio $echo 26 > export
[email protected]:/sys/class/gpio $ cd gpio26
[email protected]:/sys/class/gpio/gpio26 $ ls
active_low device direction edge power subsystem uevent value
[email protected]:/sys/class/gpio/gpio26 $ cat direction
out
[email protected] :/sys/class/gpio/gpio26 $ cat value
1
[email protected]:/sys/class/gpio/gpio26 $ echo 0 >value
[email protected]:/sys/class/gpio/gpio26 $ cat value
0
sysfs
Linux 2.6以後的核心引入了sysfs檔案系統, sysfs被看作是與proc, devfs和devpty同類別的檔案系統。該檔案系統是一個虛擬的檔案系統,它可以產生一個包括所有系統硬體的層級檢視。
sysfs把連線在系統上的裝置和匯流排組織成一個分級的檔案,它可以由使用者空間存取, 向用戶空間匯出核心資料結構以及他們的屬性
其頂層目錄包括, block, bus, dev, devices, class, fs, kernel, power 和firmware
從下面的bus, devices, class中對應的gpiochip1, 可以看到Linux裝置模型與匯流排,裝置,驅動,類的狀態是對應的。
在linux核心中分別使用bus_type, device_driver, device來描述匯流排,驅動和裝置。
device_driver和device分別表示驅動和裝置,這兩者都必須依附於一種匯流排,因此都包含struct bus_type指標。
/sys/bus
[email protected]:/sys/bus $ tree
├── gpio
│ ├── devices
│ │ ├── gpiochip0 -> ../../../devices/platform/soc/3f200000.gpio/gpiochip0
│ │ ├── gpiochip1 -> ../../../devices/gpiochip1
│ │ └── gpiochip2 -> ../../../devices/gpiochip2
│ ├── drivers
│ ├── drivers_autoprobe
│ ├── drivers_probe
│ └── uevent
/sys/devices
[email protected]:/sys/devices $ tree | more
├── gpiochip1
│ ├── dev
│ ├── gpio
│ │ └── gpiochip128
│ │ ├── base
│ │ ├── device -> ../../../gpiochip1
│ │ ├── label
│ │ ├── ngpio
│ │ ├── power
│ │ │ ├── autosuspend_delay_ms
│ │ │ ├── control
│ │ │ ├── runtime_active_time
│ │ │ ├── runtime_status
│ │ │ └── runtime_suspended_time
│ │ ├── subsystem -> ../../../../class/gpio
│ │ └── uevent
│ ├── of_node -> ../../firmware/devicetree/base/soc/expgpio
│ ├── power
│ │ ├── autosuspend_delay_ms
│ │ ├── control
│ │ ├── runtime_active_time
│ │ ├── runtime_status
│ │ └── runtime_suspended_time
│ ├── subsystem -> ../../bus/gpio
│ └── uevent
/sys/class
[email protected]:/sys/class $ tree
├── gpio
│ ├── export
│ ├── gpio26 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio26
│ ├── gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
│ ├── gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100
│ ├── gpiochip128 -> ../../devices/gpiochip1/gpio/gpiochip128
│ └── unexport
相關推薦
通過sysfs操控GPIO
點亮或熄滅LED硬體上,一個LED燈接在pi的Pin-25. 該引腳為BCM的GPIO26$ gpio readall +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+----
linux應用開發:使用者空間如何通過sysfs控制GPIO
開發環境Ubuntu:14.04開發板:A33-Vstar開發板系統:linux-3.4.39-----------------------------------------------------1. 啟用GPIO sysfs interface首先看系統中有沒有“/sy
把GPIO 通過sysfs匯出到 使用者空間
1.1. 開啟gpiolib支援,在menuconfig中evice Drivers->GPIO Support,選擇: [*] /sys/class/gpio/… (sysfs interface) <*> Generic memory-mapped G
MTK平臺通過adb獲取GPIO狀態
一、節點位置 在MTK平臺,我們可以通過cat節點(mt_gpio)來檢視對應的狀態。不同的平臺,該管腳對應的位置也是不同的,建議直接進入手機目錄檢視: adb shell find -name "mt_gpio" 我這檢視到對應的是:sys/devices
樹莓派通過GPIO控制步進電機
tps 分享 images logs http 分享圖片 .com 控制 圖片 一、接線方式與GPIO調用方法: 電源接入+5v和GND In1-4分別接GPIO1-4 正轉時,GPIO1-4分次傳入:[1,0,0,0],[sleep],[0,1,0,0],[sl
通過Libsoc在嵌入式ARM簡化GPIO呼叫
By Toradex胡珊逢 1). 簡介 嵌入式裝置往往會通過 GPIO 連線外設,從而實現通訊、狀態監測、控制等功能,使用者需要操作特定的 GPIO。在 Linux 系統中,使用者應用一般無法直接訪問 SoC 的 GPIO 暫存器,而使用特定的引腳編號,然而不同ARM模組平臺供應商的管腳定
基於裝置樹的GPIO驅動(通過系統節點控制)
#include <linux/types.h> #include <linux/pm.h> #include <linux/gpio.h> #include <linux/slab.h> #include <linux/init.h> #inclu
通過/dev/mem實現使用者層訪問GPIO暫存器
由於工作需要用到GPIO設定成中斷模式,但是不知道連線是否已經連線到指定的GPIO引腳, 而且配置是否成功,因此通過/dev/mem來檢視GPIO的配置是否成功是必須的。 記錄一下: #include <stdio.h> #include <stdlib.h>
25、新手入手樹莓派教程--通過TCP遠端控制GPIO(C++)
一、分析1、GPIO口初始化藉助wiringPi;2、利用linux下socket中的API,進行TCP通訊二、一個服務端和一個客戶端1、server端// /**********************************************************
通過網路遠端控制ARM系統GPIO應用例項
1). 簡介 本文著重展示基於Embedded Linux快速開發Web應用程式訪問ARM系統以便於遠端操控硬體GPIO或監控其狀態.文中演示例項所採用的ARM系統硬體為Toradex 基於NXP Vybrid的產品級ARM核心板Colibri VF61配合其Colibri
通過platform data 管理gpio資源--dev
#include <linux/gpio/machine.h> #include <linux/platform_device.h> #include "board.h" #
滲透學習筆記1【metasploit通過exe對他人電腦進行操控】
注:此內容不得用
EasyARM i.mx287學習筆記——通過modbus tcp控制GPIO
0 前言 本文使用freemodbus協議棧,在EasyARM i.mx287上實現了modbus tcp從機。在該從機中定義了線圈暫存器,其中線圈暫存器地址較低的4位和EasyARM的P2.4至P2.5關聯,通過modbus指令可控制GPIO的輸出。本文修改自free
Linux 核心裝置驅動之GPIO驅動之GPIO sysfs支援
需要核心配置CONFIG_GPIO_SYSFS int gpiochip_sysfs_register(struct gpio_device *gdev) { struct device *dev; struct device *parent; struct gpi
樹莓派學習筆記——使用檔案IO操作GPIO SysFs方式
0 前言 本文描述如果通過檔案IO sysfs方式控制樹莓派 GPIO埠。通過sysfs方式控制GPIO,先訪問/sys/class/gpio目錄,向export檔案寫入GPIO編號,使得該GPIO的操作介面從核心空間暴露到使用者空間,GPIO的操作介面包括direction和value等,direct
GPIO在使用者空間(Sysfs)中的檢測與控制
前段時間在編譯安卓系統時有對GPIO控制的需求,經過一定探索之後找到了一個解決的方案,現分享一下。 主要的思路是:通過Sysfs在使用者空間使用GPIO,核心配置時選擇sysfs下對GPIO的支援,然後系統編譯完成後,在使用者空間通過對sysfs的GPIO目錄下的相關“檔
【EmbeddedDev】通過mmap方法訪問ADC/GPIO
正常通過檔案系統訪問AIN串列埠的值, 可以使用fread等檔案IO方式讀取/sys/bus/iio/devices/iio:device0/in_voltage*_raw的內容。 但是這樣在需要高頻
linux操作GPIO通用sysfs方法
查詢/sys/class/gpio目錄,如果沒有,則在編譯核心時,加入Device Drivers->GPIO Support->/sys/class/gpio/...(sysfs interface)。 linux2.6及以上的核心可以使用系統中的GPIOLI
Java通過jdbc遠端操控MySQL資料庫
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.s
Kernel中GPIO的Sysfs介面的使用
今天想寫一個gpio的驅動,用於控制SoC上的一個電源控制io。看了一會兒,覺得對於gpio這種標準裝置,kernel中應該有通用的驅動,甚至應該有Sysfs的介面可供使用者空間程式使用。 於是先看了下driver目錄,發現果然有gpio這個目錄,不過裡面的東