精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何創建sysfs接口

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 11:33 ? 次閱讀

sysfs接口創建

基本步驟:

1、使用DEVICE_ATTR聲明一個sys節點

static DEVICE_ATTR(led_status, 0600, led_status_show, led_status_store);

led_status:在sys接口中顯示的節點名字

0600:表示操作這個led_status節點的權限

led_status_show:使用cat命令查看sys接口時調用的函數

led_status_store:使用echo命令往sys接口寫入內容時調用的函數

2、完成sys節點的讀寫函數

static unsigned int led = 0;
/*
*  sys節點的讀函數
*  執行 cat /sys/devices/platform/leds/led_status時會調用
*/
static ssize_t led_status_show(struct device *dev, struct device_attribute *attr, char *buf)
{
  //buf是通過cat命令顯示到終端的內容,這里顯示led變量
 return sprintf(buf, "%s:%d.n", "led", led);
}

/**
*  sys節點的寫函數
*  用echo命令往sys節點寫入內容時,會調用該函數
*/
static ssize_t led_status_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
  //寫入的內容會存放到buf中,這里將buf內容賦值給led變量
 sscanf(buf, "%d", &led);

 return count;
}

示例中,led_status_show()函數和led_status_store()函數的作用分為打印led變量的值修改led變量的值 .

3、定義struct attributestruct attribute_group數組

static struct attribute *led_attributes[]={
 
  /*上述使用了DEVICE_ATTR聲明節點名字為led_status,
  * 則struct attribute名字應為:
  *  dev_attr_ + (節點名) + .attr
  * 所以名字為dev_attr_led_status.attr
  */
  &dev_attr_led_status.attr,
 NULL,
};


static const struct attribute_group led_attrs={
 .attrs = led_attributes,//引用上述struct attribute數組
};

上述使用了DEVICE_ATTR聲明節點名字為led_status, 則struct attribute名字應為:dev_attr_ + (節點名) + .attr。所以名字為dev_attr_led_status.attr

4、在probe函數中調用sysfs_create_group()函數注冊sysfs接口

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8497

    瀏覽量

    150835
  • 驅動
    +關注

    關注

    12

    文章

    1825

    瀏覽量

    85178
  • Linux
    +關注

    關注

    87

    文章

    11229

    瀏覽量

    208927
  • Sysfs
    +關注

    關注

    0

    文章

    15

    瀏覽量

    6233
收藏 人收藏

    評論

    相關推薦

    Linux sysfs設備驅動管理簡介

    今天主要和大家聊一聊,sysfs設備驅動管理。
    發表于 10-14 09:57 ?1295次閱讀

    Linux驅動中創建sysfs接口的方法

    在一些linux開發板中,經常可以看到通過echo的方式來直接控制硬件或者修改驅動。
    發表于 05-31 16:24 ?823次閱讀

    Linux驅動中創建procfs接口的方法

    上篇介紹了Linux驅動中sysfs接口創建,今天介紹procfs接口創建
    發表于 05-31 16:48 ?717次閱讀
    Linux驅動中<b class='flag-5'>創建</b>procfs<b class='flag-5'>接口</b>的方法

    Linux驅動中創建debugfs接口的方法

    上篇介紹了procfs接口創建,今天再介紹一種debugfs接口創建
    發表于 05-31 16:53 ?1001次閱讀
    Linux驅動中<b class='flag-5'>創建</b>debugfs<b class='flag-5'>接口</b>的方法

    【AWorks試用體驗】使用sysfs文件系統 控制IED(1) Shell 點亮LED

    在嵌入式設備中控制GPIO 一般做法是通過寫一個單獨的驅動程序。而大多數資料顯示都是使用這一種方法。 但其實Linux下有一個通用的 GPIO 控制接口, 就是 sysfs文件系統什么是sysfs
    發表于 08-16 19:17

    字符設備驅動,平臺設備驅動,設備驅動模型,sysfs的比較

    、device_driver和bus等在向系統注冊的過程中會調用sysfs的create_dir接口創建對應的目錄,而含有struct attribute成員屬性的device、device_driver和bus
    發表于 09-03 12:04

    sysfs platform總線

    ,它是通過kobject子系統來建立這個信息的,當一個kobject被創建的時候,對應的文件和目錄也就被創建了,位于 /sys下的相關目錄下,既然每個設備在sysfs中都有唯一對應的目錄,那么也就可以被
    發表于 06-26 05:43

    openSTLinux上的sysfs接口無法使用可能是什么問題?

    我正在嘗試使用 openSTLinux 上的 sysfs 接口對一些引腳進行 PWM,但不幸的是,它不起作用。我一直在更改設備樹文件以使其正常工作,但仍然沒有成功。當我運行時:ls /sys/class/pwm我什么也得不到。可能是什么問題?PWM 在內核上啟用。
    發表于 12-15 06:45

    【EASY EAI Nano人工智能開發套件試用體驗】GPIO點燈——使用sysfs接口

    本文記錄了如何使用Linux上經典的sysfs接口控制GPIO。不同于靈眸官方文檔介紹的較新的libgpiod接口sysfs接口可以在sh
    發表于 06-23 20:01

    Linux的那些事兒之我是Sysfs

    Linux的那些事兒之我是Sysfs
    發表于 10-29 09:28 ?5次下載
    Linux的那些事兒之我是<b class='flag-5'>Sysfs</b>

    學會使用Linux 文件系統:procfs, sysfs, debugfs

    sysfs 中,有另外一個常見用法,那就是在一個 kobject 對應的目錄下創建一個符號(屬性文件)指向另外一個 kobject 對應的目錄,通常這個是為了方便記憶和訪問。這個API是 sysfs_create_link。
    發表于 04-25 17:19 ?1199次閱讀

    Linux RTC驅動模型分析之rtc-sysfs.c

    rtc-sysfs文件主要的操作就是在sys下創建rtc的屬性節點,可以方便用戶方便快捷的訪問,查找問題。下來大概看看sys下的rtc節點,有個直觀的認識。
    發表于 04-27 19:43 ?2461次閱讀

    Linux設備模型:sysfs

    sysfs是一個基于RAM的文件系統,它和Kobject一起,可以將Kernel的數據結構導出到用戶空間,以文件目錄結構的形式,提供對這些數據結構(以及數據結構的屬性)的訪問支持。
    發表于 05-12 09:50 ?1374次閱讀

    在驅動中創建sysfs接口完整例子

    設備樹: leds : leds{ compatible = "xx,xx-led"; }; 驅動: static unsigned int led = 0 ; static ssize_t led_status_show ( struct device *dev, struct device_attribute *attr, char *buf ) { return sprintf(buf, "%s:%d.n" , "led" , led);} static ssize_t led_status_store ( struct device *dev, struct device_attribute *attr, const char *buf, size_t count ) { sscanf(buf, "%d" , return count;} static DEVICE_ATTR ( led_status, 0600 , led_status_show, led_status_store ) ; static struct attribute *led_attributes[]={ static const struct attribute_group led_attrs={ .attrs = led_attributes,}; static int
    的頭像 發表于 09-27 11:46 ?444次閱讀

    linux--sysfs文件系統

    sysfs文件系統 sysfs,全稱為System Filesystem,是一個由Linux內核實現的虛擬文件系統。它扮演著一個橋梁的角色,將內核中的設備和驅動程序信息以文件的形式呈現給用戶空間
    的頭像 發表于 07-08 11:37 ?720次閱讀
    linux--<b class='flag-5'>sysfs</b>文件系統