一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何創(chuàng)建sysfs接口

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-09-27 11:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

sysfs接口創(chuàng)建

基本步驟:

1、使用DEVICE_ATTR聲明一個(gè)sys節(jié)點(diǎn)

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

led_status:在sys接口中顯示的節(jié)點(diǎn)名字

0600:表示操作這個(gè)led_status節(jié)點(diǎn)的權(quán)限

led_status_show:使用cat命令查看sys接口時(shí)調(diào)用的函數(shù)

led_status_store:使用echo命令往sys接口寫入內(nèi)容時(shí)調(diào)用的函數(shù)

2、完成sys節(jié)點(diǎn)的讀寫函數(shù)

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

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

 return count;
}

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

3、定義struct attributestruct attribute_group數(shù)組

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


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

上述使用了DEVICE_ATTR聲明節(jié)點(diǎn)名字為led_status, 則struct attribute名字應(yīng)為:dev_attr_ + (節(jié)點(diǎn)名) + .attr。所以名字為dev_attr_led_status.attr。

4、在probe函數(shù)中調(diào)用sysfs_create_group()函數(shù)注冊(cè)sysfs接口

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9005

    瀏覽量

    153763
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1918

    瀏覽量

    86943
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213834
  • Sysfs
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    6330
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux sysfs設(shè)備驅(qū)動(dòng)管理簡(jiǎn)介

    今天主要和大家聊一聊,sysfs設(shè)備驅(qū)動(dòng)管理。
    發(fā)表于 10-14 09:57 ?1598次閱讀

    Linux驅(qū)動(dòng)中創(chuàng)建sysfs接口的方法

    在一些linux開(kāi)發(fā)板中,經(jīng)常可以看到通過(guò)echo的方式來(lái)直接控制硬件或者修改驅(qū)動(dòng)。
    發(fā)表于 05-31 16:24 ?1144次閱讀

    Linux驅(qū)動(dòng)中創(chuàng)建procfs接口的方法

    上篇介紹了Linux驅(qū)動(dòng)中sysfs接口創(chuàng)建,今天介紹procfs接口創(chuàng)建
    發(fā)表于 05-31 16:48 ?902次閱讀
    Linux驅(qū)動(dòng)中<b class='flag-5'>創(chuàng)建</b>procfs<b class='flag-5'>接口</b>的方法

    Linux驅(qū)動(dòng)中創(chuàng)建debugfs接口的方法

    上篇介紹了procfs接口創(chuàng)建,今天再介紹一種debugfs接口創(chuàng)建。
    發(fā)表于 05-31 16:53 ?1239次閱讀
    Linux驅(qū)動(dòng)中<b class='flag-5'>創(chuàng)建</b>debugfs<b class='flag-5'>接口</b>的方法

    【AWorks試用體驗(yàn)】使用sysfs文件系統(tǒng) 控制IED(1) Shell 點(diǎn)亮LED

    在嵌入式設(shè)備中控制GPIO 一般做法是通過(guò)寫一個(gè)單獨(dú)的驅(qū)動(dòng)程序。而大多數(shù)資料顯示都是使用這一種方法。 但其實(shí)Linux下有一個(gè)通用的 GPIO 控制接口, 就是 sysfs文件系統(tǒng)什么是sysfs
    發(fā)表于 08-16 19:17

    字符設(shè)備驅(qū)動(dòng),平臺(tái)設(shè)備驅(qū)動(dòng),設(shè)備驅(qū)動(dòng)模型,sysfs的比較

    、device_driver和bus等在向系統(tǒng)注冊(cè)的過(guò)程中會(huì)調(diào)用sysfs的create_dir接口來(lái)創(chuàng)建對(duì)應(yīng)的目錄,而含有struct attribute成員屬性的device、device_driver和bus
    發(fā)表于 09-03 12:04

    sysfs platform總線

    ,它是通過(guò)kobject子系統(tǒng)來(lái)建立這個(gè)信息的,當(dāng)一個(gè)kobject被創(chuàng)建的時(shí)候,對(duì)應(yīng)的文件和目錄也就被創(chuàng)建了,位于 /sys下的相關(guān)目錄下,既然每個(gè)設(shè)備在sysfs中都有唯一對(duì)應(yīng)的目錄,那么也就可以被
    發(fā)表于 06-26 05:43

    openSTLinux上的sysfs接口無(wú)法使用可能是什么問(wèn)題?

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

    【EASY EAI Nano人工智能開(kāi)發(fā)套件試用體驗(yàn)】GPIO點(diǎn)燈——使用sysfs接口

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

    Linux的那些事兒之我是Sysfs

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

    學(xué)會(huì)使用Linux 文件系統(tǒng):procfs, sysfs, debugfs

    sysfs 中,有另外一個(gè)常見(jiàn)用法,那就是在一個(gè) kobject 對(duì)應(yīng)的目錄下創(chuàng)建一個(gè)符號(hào)(屬性文件)指向另外一個(gè) kobject 對(duì)應(yīng)的目錄,通常這個(gè)是為了方便記憶和訪問(wèn)。這個(gè)API是 sysfs_create_link。
    發(fā)表于 04-25 17:19 ?1315次閱讀

    Linux RTC驅(qū)動(dòng)模型分析之rtc-sysfs.c

    rtc-sysfs文件主要的操作就是在sys下創(chuàng)建rtc的屬性節(jié)點(diǎn),可以方便用戶方便快捷的訪問(wèn),查找問(wèn)題。下來(lái)大概看看sys下的rtc節(jié)點(diǎn),有個(gè)直觀的認(rèn)識(shí)。
    發(fā)表于 04-27 19:43 ?2640次閱讀

    Linux設(shè)備模型:sysfs

    sysfs是一個(gè)基于RAM的文件系統(tǒng),它和Kobject一起,可以將Kernel的數(shù)據(jù)結(jié)構(gòu)導(dǎo)出到用戶空間,以文件目錄結(jié)構(gòu)的形式,提供對(duì)這些數(shù)據(jù)結(jié)構(gòu)(以及數(shù)據(jù)結(jié)構(gòu)的屬性)的訪問(wèn)支持。
    發(fā)表于 05-12 09:50 ?1500次閱讀

    在驅(qū)動(dòng)中創(chuàng)建sysfs接口完整例子

    設(shè)備樹: leds : leds{ compatible = "xx,xx-led"; }; 驅(qū)動(dòng): 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
    的頭像 發(fā)表于 09-27 11:46 ?704次閱讀

    linux--sysfs文件系統(tǒng)

    sysfs文件系統(tǒng) sysfs,全稱為System Filesystem,是一個(gè)由Linux內(nèi)核實(shí)現(xiàn)的虛擬文件系統(tǒng)。它扮演著一個(gè)橋梁的角色,將內(nèi)核中的設(shè)備和驅(qū)動(dòng)程序信息以文件的形式呈現(xiàn)給用戶空間
    的頭像 發(fā)表于 07-08 11:37 ?1684次閱讀
    linux--<b class='flag-5'>sysfs</b>文件系統(tǒng)