GPIO裝置虛擬檔案結點的建立

2021-05-27 21:43:43 字數 2545 閱讀 3095

所謂gpio裝置虛擬檔案結點,就是方便使用者在應用程式直接操縱gpio的值。

1.首先必須了解static device_attr(gps_nrst, 0644, gps_reset_show, gps_reset_store); 這個函式的意思。

「gps_nrst「是要操縱的引腳,「0644」建立檔案結點的許可權,「gps_reset_show」結點的讀狀態,「gps_reset_store」結點的寫狀態。

通過這個函式既是填充檔案結點。

2.最終註冊是通過 device_create_file(&pdev->dev, &dev_attr_gps_nrst); 註冊上的。注意引數pdev->dev必須是在板載資訊裡要初始化的。

引數&dev_attr_gps_nrst即是引腳gps_nrst,只不過前面加乙個dev_attr_是格式上的要求。

下面貼上自己寫的**以供參考。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include "gpio_gps.h"

#include

#include

#include

#define nrst  85

#define pwon  87

static ssize_t gps_standby_show(struct device *dev,

struct device_attribute *attr, char *buf)

static ssize_t gps_standby_store(struct device *dev,

struct device_attribute *attr, const char *buf, size_t size)

static ssize_t gps_reset_show(struct device *dev,

struct device_attribute *attr, char *buf)

static ssize_t gps_reset_store(struct device *dev,

struct device_attribute *attr, const char *buf, size_t size)

static device_attr(gps_nrst, 0644, gps_reset_show, gps_reset_store);

static device_attr(gps_pwr_en, 0644, gps_standby_show, gps_standby_store);

#if 0

static struct device_attribute gps_nrst = ,

.show = gps_reset_show,

.store = gps_reset_store,};

static struct device_attribute gps_pwr_en = ,

.show = gps_standby_show,

.store = gps_standby_store,

};#endif

#if 0

static struct msm_gpio msm_gps_cfg_data = ,,};

#endif

static int gps_gpio_probe(struct platform_device *pdev)

static int gps_gpio_remove(struct platform_device *pdev)

struct platform_driver gps_gpio_driver = ,

};static int __init gps_gpio_init(void)

static void __exit  gps_gpio_exit(void)

late_initcall(gps_gpio_init);

module_exit(gps_gpio_exit);

module_author("zhangmin");

module_license("gpl v2");

紅色的部分是另外一種註冊gpio結點的寫法。

上面就是我加裝置結點的全過程,建立完後會在/sys/devices/platform/gps-gpio.0/gps_nrst、/sys/devices/platform/gps-gpio.0/gps_pwr_en 會有兩個結點。

我們可以在adb shell中自由的控制電平的引腳。如 echo 1 > /sys/devices/platform/gps-gpio.0/gps_nrst 即是把gps_nrst 引腳拉高 ,

echo 0 > /sys/devices/platform/gps-gpio.0/gps_nrst 即是把gps_nrst 引腳拉低。

在應用程式用這個結點的時候要注意是否操作許可權一致的問題,比如都要是root許可權即可操作了。

webpack loader 生成虛擬檔案的方案

此文已由作者張磊授權網易雲社群發布。使用 webpack 的時候,難免需要寫一些 loader,接著就會遇到乙個很糾結的問題。該 loader 會生成乙個檔案,一般這個檔案的生成時機都是在 loader 處理所有的檔案後。一般有兩種處理方案。一種是寫乙個 plugin,監聽對應的事件 一種是生成乙個...

zookeeper的虛擬檔案系統

zookeeper是分布式應用中的一種框架。zookeeper能幹什麼哪?我總結了一句話,就是 zookeeper是用來保證資料在集群間的事務性一致。我們細細品一下這句話,可以獲得以下認識 這是我們獲得的認識。下面談一談,zk到底是怎麼一回事?簡單地講,zk是乙個檔案系統,類似於linux的檔案,有...

12 1虛擬檔案系統 VFS 的角色

系統呼叫名稱 描述mount umount umount2 掛載 解除安裝檔案系統 sysfs 獲得檔案系統的資訊 statfs fstatfs statfs64 fstatfs64 ustat 獲得檔案系統的統計資訊 chroot pivot root 更改根目錄 chdir fchdir get...